SCSI: implement sd_unlock_native_capacity()
Implement sd_unlock_native_capacity() method which calls into hostt->unlock_native_capacity() if implemented. This will be invoked by block layer if partitions extend beyond the end of the device and can be used to implement, for example, on-demand ATA host protected area unlocking. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
@@ -97,6 +97,7 @@ MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
|
||||
#endif
|
||||
|
||||
static int sd_revalidate_disk(struct gendisk *);
|
||||
static void sd_unlock_native_capacity(struct gendisk *disk);
|
||||
static int sd_probe(struct device *);
|
||||
static int sd_remove(struct device *);
|
||||
static void sd_shutdown(struct device *);
|
||||
@@ -1101,6 +1102,7 @@ static const struct block_device_operations sd_fops = {
|
||||
#endif
|
||||
.media_changed = sd_media_changed,
|
||||
.revalidate_disk = sd_revalidate_disk,
|
||||
.unlock_native_capacity = sd_unlock_native_capacity,
|
||||
};
|
||||
|
||||
static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
|
||||
@@ -2120,6 +2122,26 @@ static int sd_revalidate_disk(struct gendisk *disk)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* sd_unlock_native_capacity - unlock native capacity
|
||||
* @disk: struct gendisk to set capacity for
|
||||
*
|
||||
* Block layer calls this function if it detects that partitions
|
||||
* on @disk reach beyond the end of the device. If the SCSI host
|
||||
* implements ->unlock_native_capacity() method, it's invoked to
|
||||
* give it a chance to adjust the device capacity.
|
||||
*
|
||||
* CONTEXT:
|
||||
* Defined by block layer. Might sleep.
|
||||
*/
|
||||
static void sd_unlock_native_capacity(struct gendisk *disk)
|
||||
{
|
||||
struct scsi_device *sdev = scsi_disk(disk)->device;
|
||||
|
||||
if (sdev->host->hostt->unlock_native_capacity)
|
||||
sdev->host->hostt->unlock_native_capacity(sdev);
|
||||
}
|
||||
|
||||
/**
|
||||
* sd_format_disk_name - format disk name
|
||||
* @prefix: name prefix - ie. "sd" for SCSI disks
|
||||
|
Reference in New Issue
Block a user