block: replace fmode_t with a block-specific type for block open flags
[linux-block.git] / drivers / scsi / sd.c
index 1624d528aa1f9c5f525aa704b22314029f73af60..ab216976dbdc805f6a7236d47b6f6ce511d2a9fd 100644 (file)
@@ -1280,11 +1280,10 @@ static void sd_uninit_command(struct scsi_cmnd *SCpnt)
                mempool_free(rq->special_vec.bv_page, sd_page_pool);
 }
 
-static bool sd_need_revalidate(struct block_device *bdev,
-               struct scsi_disk *sdkp)
+static bool sd_need_revalidate(struct gendisk *disk, struct scsi_disk *sdkp)
 {
        if (sdkp->device->removable || sdkp->write_prot) {
-               if (bdev_check_media_change(bdev))
+               if (disk_check_media_change(disk))
                        return true;
        }
 
@@ -1293,13 +1292,13 @@ static bool sd_need_revalidate(struct block_device *bdev,
         * nothing to do with partitions, BLKRRPART is used to force a full
         * revalidate after things like a format for historical reasons.
         */
-       return test_bit(GD_NEED_PART_SCAN, &bdev->bd_disk->state);
+       return test_bit(GD_NEED_PART_SCAN, &disk->state);
 }
 
 /**
  *     sd_open - open a scsi disk device
- *     @bdev: Block device of the scsi disk to open
- *     @mode: FMODE_* mask
+ *     @disk: disk to open
+ *     @mode: open mode
  *
  *     Returns 0 if successful. Returns a negated errno value in case 
  *     of error.
@@ -1309,11 +1308,11 @@ static bool sd_need_revalidate(struct block_device *bdev,
  *     In the latter case @inode and @filp carry an abridged amount
  *     of information as noted above.
  *
- *     Locking: called with bdev->bd_disk->open_mutex held.
+ *     Locking: called with disk->open_mutex held.
  **/
-static int sd_open(struct block_device *bdev, fmode_t mode)
+static int sd_open(struct gendisk *disk, blk_mode_t mode)
 {
-       struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
+       struct scsi_disk *sdkp = scsi_disk(disk);
        struct scsi_device *sdev = sdkp->device;
        int retval;
 
@@ -1330,14 +1329,15 @@ static int sd_open(struct block_device *bdev, fmode_t mode)
        if (!scsi_block_when_processing_errors(sdev))
                goto error_out;
 
-       if (sd_need_revalidate(bdev, sdkp))
-               sd_revalidate_disk(bdev->bd_disk);
+       if (sd_need_revalidate(disk, sdkp))
+               sd_revalidate_disk(disk);
 
        /*
         * If the drive is empty, just let the open fail.
         */
        retval = -ENOMEDIUM;
-       if (sdev->removable && !sdkp->media_present && !(mode & FMODE_NDELAY))
+       if (sdev->removable && !sdkp->media_present &&
+           !(mode & BLK_OPEN_NDELAY))
                goto error_out;
 
        /*
@@ -1345,7 +1345,7 @@ static int sd_open(struct block_device *bdev, fmode_t mode)
         * if the user expects to be able to write to the thing.
         */
        retval = -EROFS;
-       if (sdkp->write_prot && (mode & FMODE_WRITE))
+       if (sdkp->write_prot && (mode & BLK_OPEN_WRITE))
                goto error_out;
 
        /*
@@ -1374,16 +1374,15 @@ error_out:
  *     sd_release - invoked when the (last) close(2) is called on this
  *     scsi disk.
  *     @disk: disk to release
- *     @mode: FMODE_* mask
  *
  *     Returns 0. 
  *
  *     Note: may block (uninterruptible) if error recovery is underway
  *     on this disk.
  *
- *     Locking: called with bdev->bd_disk->open_mutex held.
+ *     Locking: called with disk->open_mutex held.
  **/
-static void sd_release(struct gendisk *disk, fmode_t mode)
+static void sd_release(struct gendisk *disk)
 {
        struct scsi_disk *sdkp = scsi_disk(disk);
        struct scsi_device *sdev = sdkp->device;
@@ -1426,7 +1425,7 @@ static int sd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
 /**
  *     sd_ioctl - process an ioctl
  *     @bdev: target block device
- *     @mode: FMODE_* mask
+ *     @mode: open mode
  *     @cmd: ioctl command number
  *     @arg: this is third argument given to ioctl(2) system call.
  *     Often contains a pointer.
@@ -1437,7 +1436,7 @@ static int sd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
  *     Note: most ioctls are forward onto the block subsystem or further
  *     down in the scsi subsystem.
  **/
-static int sd_ioctl(struct block_device *bdev, fmode_t mode,
+static int sd_ioctl(struct block_device *bdev, blk_mode_t mode,
                    unsigned int cmd, unsigned long arg)
 {
        struct gendisk *disk = bdev->bd_disk;
@@ -1459,13 +1458,13 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
         * access to the device is prohibited.
         */
        error = scsi_ioctl_block_when_processing_errors(sdp, cmd,
-                       (mode & FMODE_NDELAY) != 0);
+                       (mode & BLK_OPEN_NDELAY));
        if (error)
                return error;
 
        if (is_sed_ioctl(cmd))
                return sed_ioctl(sdkp->opal_dev, cmd, p);
-       return scsi_ioctl(sdp, mode, cmd, p);
+       return scsi_ioctl(sdp, mode & BLK_OPEN_WRITE, cmd, p);
 }
 
 static void set_media_not_present(struct scsi_disk *sdkp)