Re: fadvise syscall?

Andrew Morton
2002-03-18T19:17:52Z

"Martin K. Petersen" wrote:
>
> >>>>> "Andrew" == Andrew Morton <akpm@zip.com.au> writes:
>
> Andrew> O_DIRECT is broken against RAID0 (at least) in 2.5 at present.
> Andrew> The RAID driver gets sent BIOs which straddle two or more
> Andrew> chunks and RAID spits out lots of unpleasant warnings. Neil
> Andrew> has been informed...
>
> Yep. I've been porting my original kiobuf based request splitter to
> biobufs. It's almost there, I've just been extremely busy with
> something else for a while.
>
> It's not only when you straddle chunks. The current code does not
> handle requests straddling RAID zones either.

google fails me - where does your kiobuf-based splitter live?

I'm curious to know how this will all work. Will it take a
large BIO and split it into a number of smaller, newly allocated
BIOs? That would be kinda sad, IMO - the current bio-per-bh
allocations in the normal I/O path are really expensive, and
it seems wrong to take a large BIO, split it into lots of
teeny ones and then reassemble all the way down at the driver
level.

If that's really the only way in which we can solve this problem,
would it not be better to pass information up to the higher layer,
telling it when the BIO which is currently under assembly cannot
be grown further? Say, blk_can_i_add_more_stuff_to_this_bio()?

Anyway. I'm interested. O_DIRECT is a bit of a weird curiosity,
but I'm working on making these big-BIO code paths *the* way in which
data gets to and from disk. It needs to be efficient ;)

-