mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
sr: simplify sr_block_revalidate_disk
Both callers have a valid CD struture available, so rely on that instead of getting another reference. Also move the function to avoid a forward declaration. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
afd35c4f57
commit
38a2b557e2
@ -86,7 +86,6 @@ static int sr_remove(struct device *);
|
||||
static blk_status_t sr_init_command(struct scsi_cmnd *SCpnt);
|
||||
static int sr_done(struct scsi_cmnd *);
|
||||
static int sr_runtime_suspend(struct device *dev);
|
||||
static int sr_block_revalidate_disk(struct gendisk *disk);
|
||||
|
||||
static const struct dev_pm_ops sr_pm_ops = {
|
||||
.runtime_suspend = sr_runtime_suspend,
|
||||
@ -518,6 +517,17 @@ static blk_status_t sr_init_command(struct scsi_cmnd *SCpnt)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void sr_revalidate_disk(struct scsi_cd *cd)
|
||||
{
|
||||
struct scsi_sense_hdr sshdr;
|
||||
|
||||
/* if the unit is not ready, nothing more to do */
|
||||
if (scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, &sshdr))
|
||||
return;
|
||||
sr_cd_check(&cd->cdi);
|
||||
get_sectorsize(cd);
|
||||
}
|
||||
|
||||
static int sr_block_open(struct block_device *bdev, fmode_t mode)
|
||||
{
|
||||
struct scsi_cd *cd;
|
||||
@ -531,7 +541,7 @@ static int sr_block_open(struct block_device *bdev, fmode_t mode)
|
||||
sdev = cd->device;
|
||||
scsi_autopm_get_device(sdev);
|
||||
if (bdev_check_media_change(bdev))
|
||||
sr_block_revalidate_disk(bdev->bd_disk);
|
||||
sr_revalidate_disk(cd);
|
||||
|
||||
mutex_lock(&cd->lock);
|
||||
ret = cdrom_open(&cd->cdi, bdev, mode);
|
||||
@ -660,26 +670,6 @@ static unsigned int sr_block_check_events(struct gendisk *disk,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int sr_block_revalidate_disk(struct gendisk *disk)
|
||||
{
|
||||
struct scsi_sense_hdr sshdr;
|
||||
struct scsi_cd *cd;
|
||||
|
||||
cd = scsi_cd_get(disk);
|
||||
if (!cd)
|
||||
return -ENXIO;
|
||||
|
||||
/* if the unit is not ready, nothing more to do */
|
||||
if (scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, &sshdr))
|
||||
goto out;
|
||||
|
||||
sr_cd_check(&cd->cdi);
|
||||
get_sectorsize(cd);
|
||||
out:
|
||||
scsi_cd_put(cd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct block_device_operations sr_bdops =
|
||||
{
|
||||
.owner = THIS_MODULE,
|
||||
@ -803,7 +793,7 @@ static int sr_probe(struct device *dev)
|
||||
|
||||
dev_set_drvdata(dev, cd);
|
||||
disk->flags |= GENHD_FL_REMOVABLE;
|
||||
sr_block_revalidate_disk(disk);
|
||||
sr_revalidate_disk(cd);
|
||||
device_add_disk(&sdev->sdev_gendev, disk, NULL);
|
||||
|
||||
sdev_printk(KERN_DEBUG, sdev,
|
||||
|
Loading…
Reference in New Issue
Block a user