[prev in list] [next in list] [prev in thread] [next in thread] 

List:       packet-writing
Subject:    Re: Packet writing patch for 2.5.40
From:       Jens Axboe <axboe () suse ! de>
Date:       2002-10-08 5:34:42
[Download RAW message or body]

On Tue, Oct 08 2002, Peter Osterlund wrote:
> > > I think I'll go study the deadline i/o scheduler code in detail.
> > 
> > Knock yourself out :). I'll get on this first thing tomorrow.
> 
> I don't think this is related to my problem, but the bio_rq_in_between
> function seems to assume that bio and rq are for the same device, but
> deadline_merge calls that function without making sure that is the case.  
> Can't this make the insert point wrong?

The first thing to note is that the entries on the queue really _should_
be for the same device. In 2.4 and before we could have stuff like
"sector 128 on partition 3" and "sector 0 on partition 4" on the same
queue, but now each bio is partition mapped before being attached to a
request.

So bio_rq_in_between() does not assume that all requests are for the
same device, but it uses logic that assumes 2.4 behaviour (or, makes
most sense there), namely that in the above case sector 0 on partition 4
is assumed to be bigger than last sector on partition 3.

> A request for (device, sector) = (1, 50) can be inserted between (0, 10)
> and (0, 100).

I'll take a look at the 2.5 pktcdvd code, but iirc (and you didn't
change that, I doubt it) I made the queues per packet device. This is
the way it must be, and the above will not cause any problems.

Basically, if you have more than one spindle per queue you are screwed,
the io scheduler cannot make good decisions.

-- 
Jens Axboe


-- 
To unsubscribe, e-mail: packet-writing-unsubscribe@suse.com
For additional commands, e-mail: packet-writing-help@suse.com

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic