aboutsummaryrefslogtreecommitdiffstats
path: root/fs/bio.c
diff options
context:
space:
mode:
authorDmitry Monakhov <dmonakhov@openvz.org>2010-02-27 12:35:12 -0500
committerJens Axboe <jens.axboe@oracle.com>2010-02-28 13:47:18 -0500
commit9f7cdbc33f36d28e57eaba0093f68f0d14c38c5b (patch)
tree80de133204ea1b3847fd93f17c8356c9d4d6bd5e /fs/bio.c
parent53c583d2269851de9df1c2e992cb2f7f124a5f55 (diff)
blkdev: fix merge_bvec_fn return value checks
merge_bvec_fn() returns bvec->bv_len on success. So we have to check against this value. But in case of fs_optimization merge we compare with wrong value. This patch must be included in b428cd6da7e6559aca69aa2e3a526037d3f20403 But accidentally i've forgot to add this in the initial patch. To make things straight let's replace all such checks. In fact this makes code easy to understand. Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'fs/bio.c')
-rw-r--r--fs/bio.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/bio.c b/fs/bio.c
index dc17afd672e3..0bda289f86fc 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -555,7 +555,7 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page
555 .bi_rw = bio->bi_rw, 555 .bi_rw = bio->bi_rw,
556 }; 556 };
557 557
558 if (q->merge_bvec_fn(q, &bvm, prev) < len) { 558 if (q->merge_bvec_fn(q, &bvm, prev) != prev->bv_len) {
559 prev->bv_len -= len; 559 prev->bv_len -= len;
560 return 0; 560 return 0;
561 } 561 }
@@ -608,7 +608,7 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page
608 * merge_bvec_fn() returns number of bytes it can accept 608 * merge_bvec_fn() returns number of bytes it can accept
609 * at this offset 609 * at this offset
610 */ 610 */
611 if (q->merge_bvec_fn(q, &bvm, bvec) < len) { 611 if (q->merge_bvec_fn(q, &bvm, bvec) != bvec->bv_len) {
612 bvec->bv_page = NULL; 612 bvec->bv_page = NULL;
613 bvec->bv_len = 0; 613 bvec->bv_len = 0;
614 bvec->bv_offset = 0; 614 bvec->bv_offset = 0;