[kernel] r15576 - in dists/sid/linux-2.6/debian/patches: debian series
Ben Hutchings
benh at alioth.debian.org
Wed Apr 28 22:48:27 UTC 2010
Author: benh
Date: Wed Apr 28 22:48:24 2010
New Revision: 15576
Log:
libata/sd: Interface changes to support set_capacity()
Added:
dists/sid/linux-2.6/debian/patches/debian/sd-libata-set-capacity-abi-changes.patch
Modified:
dists/sid/linux-2.6/debian/patches/series/12
Added: dists/sid/linux-2.6/debian/patches/debian/sd-libata-set-capacity-abi-changes.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/debian/sd-libata-set-capacity-abi-changes.patch Wed Apr 28 22:48:24 2010 (r15576)
@@ -0,0 +1,96 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Subject: [PATCH] libata/sd: Interface changes to support set_capacity()
+
+Add a set_capacity operation to struct scsi_host_template and use it
+in sd to implement block_device_operations::set_capacity.
+
+Export a valid but non-functional implementation of
+scsi_host_template::set_capacity from libata.
+
+This is based on work by Tejun Heo, but with the functional
+implementation of ata_scsi_set_capacity() removed.
+
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -6785,6 +6800,7 @@ EXPORT_SYMBOL_GPL(ata_dummy_port_info);
+ EXPORT_SYMBOL_GPL(ata_link_next);
+ EXPORT_SYMBOL_GPL(ata_dev_next);
+ EXPORT_SYMBOL_GPL(ata_std_bios_param);
++EXPORT_SYMBOL_GPL(ata_scsi_set_capacity);
+ EXPORT_SYMBOL_GPL(ata_host_init);
+ EXPORT_SYMBOL_GPL(ata_host_alloc);
+ EXPORT_SYMBOL_GPL(ata_host_alloc_pinfo);
+--- a/drivers/ata/libata-scsi.c
++++ b/drivers/ata/libata-scsi.c
+@@ -413,6 +413,12 @@ int ata_std_bios_param(struct scsi_device *sdev, struct block_device *bdev,
+ return 0;
+ }
+
++/* TODO */
++sector_t ata_scsi_set_capacity(struct scsi_device *sdev, sector_t new_capacity)
++{
++ return 0;
++}
++
+ /**
+ * ata_get_identity - Handler for HDIO_GET_IDENTITY ioctl
+ * @ap: target port
+--- a/drivers/scsi/sd.c
++++ b/drivers/scsi/sd.c
+@@ -96,6 +96,8 @@ MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
+ #endif
+
+ static int sd_revalidate_disk(struct gendisk *);
++static unsigned long long sd_set_capacity(struct gendisk *disk,
++ unsigned long long new_capacity);
+ static int sd_probe(struct device *);
+ static int sd_remove(struct device *);
+ static void sd_shutdown(struct device *);
+@@ -1099,6 +1101,7 @@ static const struct block_device_operations sd_fops = {
+ #endif
+ .media_changed = sd_media_changed,
+ .revalidate_disk = sd_revalidate_disk,
++ .set_capacity = sd_set_capacity,
+ };
+
+ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
+@@ -2099,6 +2102,17 @@ static int sd_revalidate_disk(struct gendisk *disk)
+ return 0;
+ }
+
++static unsigned long long sd_set_capacity(struct gendisk *disk,
++ unsigned long long new_capacity)
++{
++ struct scsi_device *sdev = scsi_disk(disk)->device;
++ sector_t capacity = 0;
++
++ if (sdev->host->hostt->set_capacity)
++ capacity = sdev->host->hostt->set_capacity(sdev, new_capacity);
++ return capacity ?: get_capacity(disk);
++}
++
+ /**
+ * sd_format_disk_name - format disk name
+ * @prefix: name prefix - ie. "sd" for SCSI disks
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -1025,6 +1026,8 @@ extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd,
+ extern int ata_std_bios_param(struct scsi_device *sdev,
+ struct block_device *bdev,
+ sector_t capacity, int geom[]);
++extern sector_t ata_scsi_set_capacity(struct scsi_device *sdev,
++ sector_t new_capacity);
+ extern int ata_scsi_slave_config(struct scsi_device *sdev);
+ extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
+ extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
+--- a/include/scsi/scsi_host.h
++++ b/include/scsi/scsi_host.h
+@@ -326,6 +326,8 @@ struct scsi_host_template {
+ int (* bios_param)(struct scsi_device *, struct block_device *,
+ sector_t, int []);
+
++ sector_t (*set_capacity)(struct scsi_device *, sector_t);
++
+ /*
+ * Can be used to export driver statistics and other infos to the
+ * world outside the kernel ie. userspace and it also provides an
Modified: dists/sid/linux-2.6/debian/patches/series/12
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/12 Tue Apr 27 17:48:06 2010 (r15575)
+++ dists/sid/linux-2.6/debian/patches/series/12 Wed Apr 28 22:48:24 2010 (r15576)
@@ -51,3 +51,4 @@
+ features/all/net-export-device-speed-and-duplex-via-sysfs.patch
+ features/all/KVM-Xen-PV-on-HVM-guest-support.patch
+ features/all/KVM-x86-Add-KVM_GET-SET_VCPU_EVENTS.patch
++ debian/sd-libata-set-capacity-abi-changes.patch
More information about the Kernel-svn-changes
mailing list