logfs: query block device for number of pages to send with bio
authorPrasad Joshi <prasadjoshi.linux@gmail.com>
Mon, 23 Jul 2012 05:02:11 +0000 (10:32 +0530)
committerPrasad Joshi <prasadjoshi.linux@gmail.com>
Mon, 23 Jul 2012 05:02:11 +0000 (10:32 +0530)
commit9f0bbd8ca7905fcc0602c038013b095322fec939
treed35de1ee5a475adc9d9e55432ff0ddb271343096
parent41b93bc1ee7e7276db698dd66afa7b740cda517a
logfs: query block device for number of pages to send with bio

The block device driver puts a limit on maximum number of pages that
can be sent with the bio. Not all block devices can handle
BIO_MAX_PAGES number of pages in bio. Specifically the virtio-blk
diriver limits it to 126. When the LogFS file system was excersized in
KVM, the following bug from do_virtblk_request() was observed

static void do_virtblk_request(struct request_queue *q)
{
....
....
while ((req = blk_peek_request(q)) != NULL) {
BUG_ON(req->nr_phys_segments + 2 > vblk->sg_elems);
....
....
}
....
}

The patch fixes the problem by querring the maximum number of pages in
bio allowed from block device driver and then using those many pages
during submit_bio.

Signed-off-by: Prasad Joshi <prasadjoshi.linux@gmail.com>
fs/logfs/dev_bdev.c