Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=32eef964110985c5845472e07fa0a18838a970c4
Commit:     32eef964110985c5845472e07fa0a18838a970c4
Parent:     7deeed13170e634adc4552ff94588d6301a3da83
Author:     Jens Axboe <[EMAIL PROTECTED]>
AuthorDate: Tue Jun 19 09:09:27 2007 +0200
Committer:  Jens Axboe <[EMAIL PROTECTED]>
CommitDate: Tue Jul 10 08:03:32 2007 +0200

    blk_hw_contig_segment(): bad segment size checks
    
    Two bugs in there:
    
    - The virt oversize check should use the current bio hardware back
      size and the next bio front size, not the same bio. Spotted by
      Neil Brown.
    
    - The segment size check should add hw front sizes, not total bio
      sizes. Spotted by James Bottomley
    
    Acked-by: James Bottomley <[EMAIL PROTECTED]>
    Acked-by: NeilBrown <[EMAIL PROTECTED]>
    Signed-off-by: Jens Axboe <[EMAIL PROTECTED]>
---
 block/ll_rw_blk.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
index c99b463..3e7801e 100644
--- a/block/ll_rw_blk.c
+++ b/block/ll_rw_blk.c
@@ -1304,9 +1304,9 @@ static int blk_hw_contig_segment(request_queue_t *q, 
struct bio *bio,
        if (unlikely(!bio_flagged(nxt, BIO_SEG_VALID)))
                blk_recount_segments(q, nxt);
        if (!BIOVEC_VIRT_MERGEABLE(__BVEC_END(bio), __BVEC_START(nxt)) ||
-           BIOVEC_VIRT_OVERSIZE(bio->bi_hw_front_size + bio->bi_hw_back_size))
+           BIOVEC_VIRT_OVERSIZE(bio->bi_hw_back_size + nxt->bi_hw_front_size))
                return 0;
-       if (bio->bi_size + nxt->bi_size > q->max_segment_size)
+       if (bio->bi_hw_back_size + nxt->bi_hw_front_size > q->max_segment_size)
                return 0;
 
        return 1;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to