Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  libata: implement on-demand HPA unlocking
  libata: use the enlarged capacity after late HPA unlock
  SCSI: implement sd_unlock_native_capacity()
  libata-sff: trivial corrections to Kconfig help text
  sata_nv: don't diddle with nIEN on mcp55
  sata_via: magic vt6421 fix for transmission problems w/ WD drives
This commit is contained in:
Linus Torvalds 2010-06-03 15:48:15 -07:00
commit ad8456361f
8 changed files with 80 additions and 8 deletions

View file

@ -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