diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2009-09-11 16:44:29 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-09-14 02:24:53 -0400 |
commit | b8a9ae779f2c7049071034661e09cb7e1e82250c (patch) | |
tree | e7063b668cc68f4337f1d6545e71d1f881d57e21 /block/blk-sysfs.c | |
parent | 3c5820c743479285ce2678fd3c12b1fd39fe998f (diff) |
block: don't assume device has a request list backing in nr_requests store
Stacked devices do not. For now, just error out with -EINVAL. Later
we could make the limit apply on stacked devices too, for throttling
reasons.
This fixes
5a54cd13353bb3b88887604e2c980aa01e314309
and should go into 2.6.31 stable as well.
Cc: stable@kernel.org
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-sysfs.c')
-rw-r--r-- | block/blk-sysfs.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index d3aa2aadb3e0..b78c9c3e2670 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c | |||
@@ -40,7 +40,12 @@ queue_requests_store(struct request_queue *q, const char *page, size_t count) | |||
40 | { | 40 | { |
41 | struct request_list *rl = &q->rq; | 41 | struct request_list *rl = &q->rq; |
42 | unsigned long nr; | 42 | unsigned long nr; |
43 | int ret = queue_var_store(&nr, page, count); | 43 | int ret; |
44 | |||
45 | if (!q->request_fn) | ||
46 | return -EINVAL; | ||
47 | |||
48 | ret = queue_var_store(&nr, page, count); | ||
44 | if (nr < BLKDEV_MIN_RQ) | 49 | if (nr < BLKDEV_MIN_RQ) |
45 | nr = BLKDEV_MIN_RQ; | 50 | nr = BLKDEV_MIN_RQ; |
46 | 51 | ||