Messages in this thread | | | Date | Sun, 05 Apr 2009 13:18:22 +0300 | From | Boaz Harrosh <> | Subject | Re: [PATCH] osdblk: a Linux block device for OSD objects |
| |
On 04/03/2009 12:58 PM, Jeff Garzik wrote: > Jens Axboe wrote: >> This wont work, GFP_NOIO inside the queue lock. You are also only >> cloning the front bio, what happens if you have > 1 bio on the request? >> You seem to dequeue the request and complete all of it, regardless of >> whether bio->bi_size == blk_rq_bytes(rq). I'm assuming you have to clone >> because of how the osd_req_{read,write} works, so I'd suggest storing >> the byte size in your osdblk_request and only completing that in >> osdblk_end_request(). Then do a rq_for_each_bio() look in there, and >> only dequeue if you manage to start an osd request for each of them, >> THEN moving on to the next request. >
There is nothing preventing from issuing a linked bio list. The only thing is that osd_read/write looks at the first bio for total size. If the first bio->bi_size does not specify the full length of the chain then we should add another parameter to osd_read/write for that.
The original idea was to specifically allow chained bios.
Please advise?
> Thanks for the review. Will fix... > > Jeff >
Thanks Boaz
| |