diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-06-07 07:52:52 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-06-07 07:52:52 -0400 |
commit | db429e9ec0f9dee2d8e50c154f04f29f880fc9d6 (patch) | |
tree | 363328c6aa85f7a15cc061f7c71f3cc3a8cde970 /include | |
parent | 02c33b123e59cab5771e52a012aeb810500260a2 (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')
-rw-r--r-- | include/linux/blkdev.h | 2 | ||||
-rw-r--r-- | include/linux/genhd.h | 1 |
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)) |