diff options
author | Tejun Heo <tj@kernel.org> | 2014-09-07 19:03:56 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-09-08 12:00:35 -0400 |
commit | ff9ea323816dc1c8ac7144afd4eab3ac97704430 (patch) | |
tree | a865fe69407f8c15d4d877defbc801aebf8d1849 /block | |
parent | f4da80727cfbc3590d95ff17ef8db96e6f1483a4 (diff) |
block, bdi: an active gendisk always has a request_queue associated with it
bdev_get_queue() returns the request_queue associated with the
specified block_device. blk_get_backing_dev_info() makes use of
bdev_get_queue() to determine the associated bdi given a block_device.
All the callers of bdev_get_queue() including
blk_get_backing_dev_info() assume that bdev_get_queue() may return
NULL and implement NULL handling; however, bdev_get_queue() requires
the passed in block_device is opened and attached to its gendisk.
Because an active gendisk always has a valid request_queue associated
with it, bdev_get_queue() can never return NULL and neither can
blk_get_backing_dev_info().
Make it clear that neither of the two functions can return NULL and
remove NULL handling from all the callers.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Chris Mason <clm@fb.com>
Cc: Dave Chinner <david@fromorbit.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-core.c | 10 | ||||
-rw-r--r-- | block/compat_ioctl.c | 4 | ||||
-rw-r--r-- | block/ioctl.c | 4 |
3 files changed, 3 insertions, 15 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 93603e6ff479..817446175489 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -83,18 +83,14 @@ void blk_queue_congestion_threshold(struct request_queue *q) | |||
83 | * @bdev: device | 83 | * @bdev: device |
84 | * | 84 | * |
85 | * Locates the passed device's request queue and returns the address of its | 85 | * Locates the passed device's request queue and returns the address of its |
86 | * backing_dev_info | 86 | * backing_dev_info. This function can only be called if @bdev is opened |
87 | * | 87 | * and the return value is never NULL. |
88 | * Will return NULL if the request queue cannot be located. | ||
89 | */ | 88 | */ |
90 | struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev) | 89 | struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev) |
91 | { | 90 | { |
92 | struct backing_dev_info *ret = NULL; | ||
93 | struct request_queue *q = bdev_get_queue(bdev); | 91 | struct request_queue *q = bdev_get_queue(bdev); |
94 | 92 | ||
95 | if (q) | 93 | return &q->backing_dev_info; |
96 | ret = &q->backing_dev_info; | ||
97 | return ret; | ||
98 | } | 94 | } |
99 | EXPORT_SYMBOL(blk_get_backing_dev_info); | 95 | EXPORT_SYMBOL(blk_get_backing_dev_info); |
100 | 96 | ||
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c index 18b282ce361e..f678c733df40 100644 --- a/block/compat_ioctl.c +++ b/block/compat_ioctl.c | |||
@@ -709,8 +709,6 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg) | |||
709 | if (!arg) | 709 | if (!arg) |
710 | return -EINVAL; | 710 | return -EINVAL; |
711 | bdi = blk_get_backing_dev_info(bdev); | 711 | bdi = blk_get_backing_dev_info(bdev); |
712 | if (bdi == NULL) | ||
713 | return -ENOTTY; | ||
714 | return compat_put_long(arg, | 712 | return compat_put_long(arg, |
715 | (bdi->ra_pages * PAGE_CACHE_SIZE) / 512); | 713 | (bdi->ra_pages * PAGE_CACHE_SIZE) / 512); |
716 | case BLKROGET: /* compatible */ | 714 | case BLKROGET: /* compatible */ |
@@ -731,8 +729,6 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg) | |||
731 | if (!capable(CAP_SYS_ADMIN)) | 729 | if (!capable(CAP_SYS_ADMIN)) |
732 | return -EACCES; | 730 | return -EACCES; |
733 | bdi = blk_get_backing_dev_info(bdev); | 731 | bdi = blk_get_backing_dev_info(bdev); |
734 | if (bdi == NULL) | ||
735 | return -ENOTTY; | ||
736 | bdi->ra_pages = (arg * 512) / PAGE_CACHE_SIZE; | 732 | bdi->ra_pages = (arg * 512) / PAGE_CACHE_SIZE; |
737 | return 0; | 733 | return 0; |
738 | case BLKGETSIZE: | 734 | case BLKGETSIZE: |
diff --git a/block/ioctl.c b/block/ioctl.c index d6cda8147c91..6c7bf903742f 100644 --- a/block/ioctl.c +++ b/block/ioctl.c | |||
@@ -356,8 +356,6 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, | |||
356 | if (!arg) | 356 | if (!arg) |
357 | return -EINVAL; | 357 | return -EINVAL; |
358 | bdi = blk_get_backing_dev_info(bdev); | 358 | bdi = blk_get_backing_dev_info(bdev); |
359 | if (bdi == NULL) | ||
360 | return -ENOTTY; | ||
361 | return put_long(arg, (bdi->ra_pages * PAGE_CACHE_SIZE) / 512); | 359 | return put_long(arg, (bdi->ra_pages * PAGE_CACHE_SIZE) / 512); |
362 | case BLKROGET: | 360 | case BLKROGET: |
363 | return put_int(arg, bdev_read_only(bdev) != 0); | 361 | return put_int(arg, bdev_read_only(bdev) != 0); |
@@ -386,8 +384,6 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, | |||
386 | if(!capable(CAP_SYS_ADMIN)) | 384 | if(!capable(CAP_SYS_ADMIN)) |
387 | return -EACCES; | 385 | return -EACCES; |
388 | bdi = blk_get_backing_dev_info(bdev); | 386 | bdi = blk_get_backing_dev_info(bdev); |
389 | if (bdi == NULL) | ||
390 | return -ENOTTY; | ||
391 | bdi->ra_pages = (arg * 512) / PAGE_CACHE_SIZE; | 387 | bdi->ra_pages = (arg * 512) / PAGE_CACHE_SIZE; |
392 | return 0; | 388 | return 0; |
393 | case BLKBSZSET: | 389 | case BLKBSZSET: |