Re: [patch 63/87] md: define raid5_mergeable_bvec

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



this is against 2.6.19-git17
hope this correct
raz

On 12/11/06, Jens Axboe <[email protected]> wrote:
On Mon, Dec 11 2006, Raz Ben-Jehuda(caro) wrote:
> On 12/11/06, Jens Axboe <[email protected]> wrote:
> >On Sun, Dec 10 2006, [email protected] wrote:
> >> From: "Raz Ben-Jehuda(caro)" <[email protected]>
> >>
> >> This will encourage read request to be on only one device, so we will
> >often be
> >> able to bypass the cache for read requests.
> >>
> >> Signed-off-by: Neil Brown <[email protected]>
> >> Cc: Jens Axboe <[email protected]>
> >> Signed-off-by: Andrew Morton <[email protected]>
> >> ---
> >>
> >>  drivers/md/raid5.c |   24 ++++++++++++++++++++++++
> >>  1 file changed, 24 insertions(+)
> >>
> >> diff -puN drivers/md/raid5.c~md-define-raid5_mergeable_bvec
> >drivers/md/raid5.c
> >> --- a/drivers/md/raid5.c~md-define-raid5_mergeable_bvec
> >> +++ a/drivers/md/raid5.c
> >> @@ -2611,6 +2611,28 @@ static int raid5_congested(void *data, i
> >>       return 0;
> >>  }
> >>
> >> +/* We want read requests to align with chunks where possible,
> >> + * but write requests don't need to.
> >> + */
> >> +static int raid5_mergeable_bvec(request_queue_t *q, struct bio *bio,
> >struct bio_vec *biovec)
> >> +{
> >> +     mddev_t *mddev = q->queuedata;
> >> +     sector_t sector = bio->bi_sector + get_start_sect(bio->bi_bdev);
> >> +     int max;
> >> +     unsigned int chunk_sectors = mddev->chunk_size >> 9;
> >> +     unsigned int bio_sectors = bio->bi_size >> 9;
> >> +
> >> +     if (bio_data_dir(bio))
> >> +             return biovec->bv_len; /* always allow writes to be
> >mergeable */
> >
> >Please don't ever do that - you are making assumptions on the value of
> >READ and WRITE.
> >
> >        if (bio_data_dir(bio) == WRITE)
> >                ...
> >
> >If this has already been merged, please submit a patch correcting it.
> >People end up copying code like this :-)
> >
> >--
> >Jens Axboe
> >
> >
>
> thanks Jens
> the attached is a fix.

But the patch is already merged, so the patch needs to be against Linus'
current tree.

--
Jens Axboe




--
Raz
--- linux-2.6.19/drivers/md/raid5.c	2006-12-11 11:33:23.000000000 +0000
+++ linux-2.6.19-git17/drivers/md/raid5.c	2006-12-11 11:31:27.000000000 +0000
@@ -2567,7 +2567,7 @@
 	unsigned int chunk_sectors = mddev->chunk_size >> 9;
 	unsigned int bio_sectors = bio->bi_size >> 9;
 
-	if (bio_data_dir(bio))
+	if (bio_data_dir(bio) == WRITE )
 		return biovec->bv_len; /* always allow writes to be mergeable */
 
 	max =  (chunk_sectors - ((sector & (chunk_sectors - 1)) + bio_sectors)) << 9;

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux