aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMartin K. Petersen2009-05-22 16:17:49 -0500
committerJens Axboe2009-05-22 16:22:54 -0500
commite1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1 (patch)
treed60d15a082171c58ac811d547d51a9c3119f23e3 /block
parent9bd7de51ee8537094656149eaf45338cadb7d7d4 (diff)
downloadkernel-common-e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1.tar.gz
kernel-common-e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1.tar.xz
kernel-common-e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1.zip
block: Do away with the notion of hardsect_size
Until now we have had a 1:1 mapping between storage device physical block size and the logical block sized used when addressing the device. With SATA 4KB drives coming out that will no longer be the case. The sector size will be 4KB but the logical block size will remain 512-bytes. Hence we need to distinguish between the physical block size and the logical ditto. This patch renames hardsect_size to logical_block_size. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block')
-rw-r--r--block/blk-integrity.c2
-rw-r--r--block/blk-settings.c21
-rw-r--r--block/blk-sysfs.c12
-rw-r--r--block/compat_ioctl.c2
-rw-r--r--block/ioctl.c2
5 files changed, 22 insertions, 17 deletions
diff --git a/block/blk-integrity.c b/block/blk-integrity.c
index 91fa8e06b6a..73e28d35568 100644
--- a/block/blk-integrity.c
+++ b/block/blk-integrity.c
@@ -340,7 +340,7 @@ int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)
340 kobject_uevent(&bi->kobj, KOBJ_ADD); 340 kobject_uevent(&bi->kobj, KOBJ_ADD);
341 341
342 bi->flags |= INTEGRITY_FLAG_READ | INTEGRITY_FLAG_WRITE; 342 bi->flags |= INTEGRITY_FLAG_READ | INTEGRITY_FLAG_WRITE;
343 bi->sector_size = disk->queue->hardsect_size; 343 bi->sector_size = queue_logical_block_size(disk->queue);
344 disk->integrity = bi; 344 disk->integrity = bi;
345 } else 345 } else
346 bi = disk->integrity; 346 bi = disk->integrity;
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 57af728d94b..15c3164537b 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -134,7 +134,7 @@ void blk_queue_make_request(struct request_queue *q, make_request_fn *mfn)
134 q->backing_dev_info.state = 0; 134 q->backing_dev_info.state = 0;
135 q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY; 135 q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
136 blk_queue_max_sectors(q, SAFE_MAX_SECTORS); 136 blk_queue_max_sectors(q, SAFE_MAX_SECTORS);
137 blk_queue_hardsect_size(q, 512); 137 blk_queue_logical_block_size(q, 512);
138 blk_queue_dma_alignment(q, 511); 138 blk_queue_dma_alignment(q, 511);
139 blk_queue_congestion_threshold(q); 139 blk_queue_congestion_threshold(q);
140 q->nr_batching = BLK_BATCH_REQ; 140 q->nr_batching = BLK_BATCH_REQ;
@@ -288,21 +288,20 @@ void blk_queue_max_segment_size(struct request_queue *q, unsigned int max_size)
288EXPORT_SYMBOL(blk_queue_max_segment_size); 288EXPORT_SYMBOL(blk_queue_max_segment_size);
289 289
290/** 290/**
291 * blk_queue_hardsect_size - set hardware sector size for the queue 291 * blk_queue_logical_block_size - set logical block size for the queue
292 * @q: the request queue for the device 292 * @q: the request queue for the device
293 * @size: the hardware sector size, in bytes 293 * @size: the logical block size, in bytes
294 * 294 *
295 * Description: 295 * Description:
296 * This should typically be set to the lowest possible sector size 296 * This should be set to the lowest possible block size that the
297 * that the hardware can operate on (possible without reverting to 297 * storage device can address. The default of 512 covers most
298 * even internal read-modify-write operations). Usually the default 298 * hardware.
299 * of 512 covers most hardware.
300 **/ 299 **/
301void blk_queue_hardsect_size(struct request_queue *q, unsigned short size) 300void blk_queue_logical_block_size(struct request_queue *q, unsigned short size)
302{ 301{
303 q->hardsect_size = size; 302 q->logical_block_size = size;
304} 303}
305EXPORT_SYMBOL(blk_queue_hardsect_size); 304EXPORT_SYMBOL(blk_queue_logical_block_size);
306 305
307/* 306/*
308 * Returns the minimum that is _not_ zero, unless both are zero. 307 * Returns the minimum that is _not_ zero, unless both are zero.
@@ -324,7 +323,7 @@ void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b)
324 t->max_phys_segments = min_not_zero(t->max_phys_segments, b->max_phys_segments); 323 t->max_phys_segments = min_not_zero(t->max_phys_segments, b->max_phys_segments);
325 t->max_hw_segments = min_not_zero(t->max_hw_segments, b->max_hw_segments); 324 t->max_hw_segments = min_not_zero(t->max_hw_segments, b->max_hw_segments);
326 t->max_segment_size = min_not_zero(t->max_segment_size, b->max_segment_size); 325 t->max_segment_size = min_not_zero(t->max_segment_size, b->max_segment_size);
327 t->hardsect_size = max(t->hardsect_size, b->hardsect_size); 326 t->logical_block_size = max(t->logical_block_size, b->logical_block_size);
328 if (!t->queue_lock) 327 if (!t->queue_lock)
329 WARN_ON_ONCE(1); 328 WARN_ON_ONCE(1);
330 else if (!test_bit(QUEUE_FLAG_CLUSTER, &b->queue_flags)) { 329 else if (!test_bit(QUEUE_FLAG_CLUSTER, &b->queue_flags)) {
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index 3ff9bba3379..13d38b7e4d0 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -100,9 +100,9 @@ static ssize_t queue_max_sectors_show(struct request_queue *q, char *page)
100 return queue_var_show(max_sectors_kb, (page)); 100 return queue_var_show(max_sectors_kb, (page));
101} 101}
102 102
103static ssize_t queue_hw_sector_size_show(struct request_queue *q, char *page) 103static ssize_t queue_logical_block_size_show(struct request_queue *q, char *page)
104{ 104{
105 return queue_var_show(q->hardsect_size, page); 105 return queue_var_show(queue_logical_block_size(q), page);
106} 106}
107 107
108static ssize_t 108static ssize_t
@@ -249,7 +249,12 @@ static struct queue_sysfs_entry queue_iosched_entry = {
249 249
250static struct queue_sysfs_entry queue_hw_sector_size_entry = { 250static struct queue_sysfs_entry queue_hw_sector_size_entry = {
251 .attr = {.name = "hw_sector_size", .mode = S_IRUGO }, 251 .attr = {.name = "hw_sector_size", .mode = S_IRUGO },
252 .show = queue_hw_sector_size_show, 252 .show = queue_logical_block_size_show,
253};
254
255static struct queue_sysfs_entry queue_logical_block_size_entry = {
256 .attr = {.name = "logical_block_size", .mode = S_IRUGO },
257 .show = queue_logical_block_size_show,
253}; 258};
254 259
255static struct queue_sysfs_entry queue_nonrot_entry = { 260static struct queue_sysfs_entry queue_nonrot_entry = {
@@ -283,6 +288,7 @@ static struct attribute *default_attrs[] = {
283 &queue_max_sectors_entry.attr, 288 &queue_max_sectors_entry.attr,
284 &queue_iosched_entry.attr, 289 &queue_iosched_entry.attr,
285 &queue_hw_sector_size_entry.attr, 290 &queue_hw_sector_size_entry.attr,
291 &queue_logical_block_size_entry.attr,
286 &queue_nonrot_entry.attr, 292 &queue_nonrot_entry.attr,
287 &queue_nomerges_entry.attr, 293 &queue_nomerges_entry.attr,
288 &queue_rq_affinity_entry.attr, 294 &queue_rq_affinity_entry.attr,
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index f87615dea46..9eaa1940273 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -763,7 +763,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
763 case BLKBSZGET_32: /* get the logical block size (cf. BLKSSZGET) */ 763 case BLKBSZGET_32: /* get the logical block size (cf. BLKSSZGET) */
764 return compat_put_int(arg, block_size(bdev)); 764 return compat_put_int(arg, block_size(bdev));
765 case BLKSSZGET: /* get block device hardware sector size */ 765 case BLKSSZGET: /* get block device hardware sector size */
766 return compat_put_int(arg, bdev_hardsect_size(bdev)); 766 return compat_put_int(arg, bdev_logical_block_size(bdev));
767 case BLKSECTGET: 767 case BLKSECTGET:
768 return compat_put_ushort(arg, 768 return compat_put_ushort(arg,
769 bdev_get_queue(bdev)->max_sectors); 769 bdev_get_queue(bdev)->max_sectors);
diff --git a/block/ioctl.c b/block/ioctl.c
index ad474d4bbcc..7aa97f65da8 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -311,7 +311,7 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
311 case BLKBSZGET: /* get the logical block size (cf. BLKSSZGET) */ 311 case BLKBSZGET: /* get the logical block size (cf. BLKSSZGET) */
312 return put_int(arg, block_size(bdev)); 312 return put_int(arg, block_size(bdev));
313 case BLKSSZGET: /* get block device hardware sector size */ 313 case BLKSSZGET: /* get block device hardware sector size */
314 return put_int(arg, bdev_hardsect_size(bdev)); 314 return put_int(arg, bdev_logical_block_size(bdev));
315 case BLKSECTGET: 315 case BLKSECTGET:
316 return put_ushort(arg, bdev_get_queue(bdev)->max_sectors); 316 return put_ushort(arg, bdev_get_queue(bdev)->max_sectors);
317 case BLKRASET: 317 case BLKRASET: