Re: Block device request merging - repeated requests.

From: Jens Axboe (axboe@suse.de)
Date: Mon Jan 31 2000 - 11:32:18 EST


On Mon, Jan 31 2000, David Woodhouse wrote:
> axboe@suse.de said:
> > Sure this should be CURRENT->current_nr_sectors.
>
> OK. That makes some sense. Thanks.
>
> So now I get, in the simplest case, two consecutive requests, each with
> CURRENT->nr_sectors == 4, CURRENT->current_nr_sectors == 2, and
> CURRENT->sectors == 0.

(CURRENT->sector, right?). What is "the simplest" case? (dd something).

> There appears to be no CURRENT->current_sector.

No, CURRENT->sector is always the "current" sector. When you call
end_request, end_that_request_first will adjust rq->sector for
you.

> What am I missing?

Probably an end_request somewhere. The logic goes something like this:

- receive request
- transfer CURRENT->current_nr_sectors in direction of CURRENT->cmd
  to CURRENT->buffer from/to CURRENT->sector
- end_request

You never need to look at CURRENT->nr_sectors if you are not handling
clustered requests yourself, end_request handles that for you.

FWIW, I have verified request handling with a dummy driver I wrote.
It even handles merged requests with "holes", i.e. non-consequitive
buffer heads.

-- 
*  Jens Axboe <axboe@suse.de>
*  Linux CD-ROM Maintainer
*  http://www.kernel.dk

- 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/



This archive was generated by hypermail 2b29 : Mon Jan 31 2000 - 21:00:29 EST