aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-06-07 07:52:52 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-06-07 07:52:52 -0400
commitdb429e9ec0f9dee2d8e50c154f04f29f880fc9d6 (patch)
tree363328c6aa85f7a15cc061f7c71f3cc3a8cde970 /include/linux
parent02c33b123e59cab5771e52a012aeb810500260a2 (diff)
partitions: add ->set_capacity block device method
* Add ->set_capacity block device method and use it in rescan_partitions() to attempt enabling native capacity of the device upon detecting the partition which exceeds device capacity. * Add GENHD_FL_NATIVE_CAPACITY flag to try limit attempts of enabling native capacity during partition scan. Together with the consecutive patch implementing ->set_capacity method in ide-gd device driver this allows automatic disabling of Host Protected Area (HPA) if any partitions overlapping HPA are detected. Cc: Robert Hancock <hancockrwd@gmail.com> Cc: Frans Pop <elendil@planet.nl> Cc: "Andries E. Brouwer" <Andries.Brouwer@cwi.nl> Acked-by: Al Viro <viro@zeniv.linux.org.uk> Emphatically-Acked-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/blkdev.h2
-rw-r--r--include/linux/genhd.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 6f841fb1be30..a2d7298be351 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1106,6 +1106,8 @@ struct block_device_operations {
1106 int (*direct_access) (struct block_device *, sector_t, 1106 int (*direct_access) (struct block_device *, sector_t,
1107 void **, unsigned long *); 1107 void **, unsigned long *);
1108 int (*media_changed) (struct gendisk *); 1108 int (*media_changed) (struct gendisk *);
1109 unsigned long long (*set_capacity) (struct gendisk *,
1110 unsigned long long);
1109 int (*revalidate_disk) (struct gendisk *); 1111 int (*revalidate_disk) (struct gendisk *);
1110 int (*getgeo)(struct block_device *, struct hd_geometry *); 1112 int (*getgeo)(struct block_device *, struct hd_geometry *);
1111 struct module *owner; 1113 struct module *owner;
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 634c53028fb8..239e24b081a9 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -113,6 +113,7 @@ struct hd_struct {
113#define GENHD_FL_UP 16 113#define GENHD_FL_UP 16
114#define GENHD_FL_SUPPRESS_PARTITION_INFO 32 114#define GENHD_FL_SUPPRESS_PARTITION_INFO 32
115#define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ 115#define GENHD_FL_EXT_DEVT 64 /* allow extended devt */
116#define GENHD_FL_NATIVE_CAPACITY 128
116 117
117#define BLK_SCSI_MAX_CMDS (256) 118#define BLK_SCSI_MAX_CMDS (256)
118#define BLK_SCSI_CMD_PER_LONG (BLK_SCSI_MAX_CMDS / (sizeof(long) * 8)) 119#define BLK_SCSI_CMD_PER_LONG (BLK_SCSI_MAX_CMDS / (sizeof(long) * 8))