| From b8a9ae779f2c7049071034661e09cb7e1e82250c Mon Sep 17 00:00:00 2001 |
| From: Jens Axboe <jens.axboe@oracle.com> |
| Date: Fri, 11 Sep 2009 22:44:29 +0200 |
| Subject: block: don't assume device has a request list backing in nr_requests store |
| |
| From: Jens Axboe <jens.axboe@oracle.com> |
| |
| commit b8a9ae779f2c7049071034661e09cb7e1e82250c upstream. |
| |
| 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. |
| |
| Signed-off-by: Jens Axboe <jens.axboe@oracle.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| block/blk-sysfs.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| --- a/block/blk-sysfs.c |
| +++ b/block/blk-sysfs.c |
| @@ -40,7 +40,12 @@ queue_requests_store(struct request_queu |
| { |
| struct request_list *rl = &q->rq; |
| unsigned long nr; |
| - int ret = queue_var_store(&nr, page, count); |
| + int ret; |
| + |
| + if (!q->request_fn) |
| + return -EINVAL; |
| + |
| + ret = queue_var_store(&nr, page, count); |
| if (nr < BLKDEV_MIN_RQ) |
| nr = BLKDEV_MIN_RQ; |
| |