Neil hello.
1.
i have applied the common path according to
http://www.spinics.net/lists/raid/msg11838.html as much as i can.
it looks ok in terms of throughput.
before i continue to a non common path ( step 3 ) i do not understand
raid0_mergeable_bvec entirely.
as i understand the code checks alignment . i made a version for this
purpose which looks like that:
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;
max=(chunk_sectors-((sector&(chunk_sectors-1))+bio_sectors))<<9;
if (max < 0){
printk("handle_aligned_read not aligned %d %d %d
%lld\n",max,chunk_sectors,bio_sectors,sector);
return -1; // Is bigger than one chunk size
}
// printk("handle_aligned_read aligned %d %d %d
%lld\n",max,chunk_sectors,bio_sectors,sector);
return max;
}
Questions:
1.1 why did you drop the max=0 case ?
1.2 what these lines mean ? do i need it ?
if (max <= biovec->bv_len && bio_sectors == 0)
return biovec->bv_len;
else
return max;
}
thank you
Raz
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html