Messages in this thread | | | From | David Woodhouse <> | Subject | Re: Block device request merging - repeated requests. | Date | Mon, 31 Jan 2000 17:32:31 +0000 |
| |
axboe@suse.de said: > You are right, I spoke too quickly, you do have to keep track of what > sector you are working on. But I don't see why we shouldn't update rq-> > sector regardless of outcome.
OK. So - trying to fill in the absent documentation, then:
When writing a block device driver, you can either make it handle clustered requests, or not.
If you don't want to make it handle clustered requests, then when you get a request, you must: 1. Transfer CURRENT->current_nr_sectors, in the appropriate direction to/from CURRENT->buffer 2. Increase CURRENT->sector yourself by CURRENT->current_nr_sectors 3. Call end_request(1)
If you _do_ want to handle clustered requests, then what are you supposed to do?
axboe@suse.de said: > If people think that would be a good idea, I'd be happy to provide > it.
I can't speak for anyone else - but I think it would be a good idea. I certainly would have found it useful if there had been a correct template for me to use. My block device code was lifted directly from rd.c, and I therefore assume that rd.c doesn't correctly handle clustered requests, either.
> It needs some cleaning up, as it also does read gathering of > adjacent blocks before writing (it's actually a block layer between > ll_rw_blk and another block driver).
If it's going to take much time to clean it up, you might find that it's more productive just to write some documentation :)
/me ducks
-- dwmw2
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |