Re: O_DIRECT

Peter T. Breuer (ptb@it.uc3m.es)
Thu, 29 Aug 2002 13:22:41 +0200 (MET DST)


"A month of sundays ago kernel@street-vision.com wrote:"
> > What functions does a block driver have to implement in order to
> > support read/write when it has been opened with O_DIRECT from user
> > space.
> >
> > I have made some experiments with plain read/write after opening with
> > O_DIRECT:
> >
> > 2.5.31:
> > /dev/ram0 open fails
> > file on ext2 r/w gives EINVAL
> > /dev/hdaN works
> >
> > 2.4.19:
> > /dev/ram0 r/w gives EINVAL
> > file on ext2 r/w gives EINVAL
> > /dev/hdaN r/w gives EINVAL
> >
> > WTF? It's not a library issue - strace shows the syscalls happening
> > with the right flag set on the open.
>
> You should be able to get it to work on ext2. It works fine for me.
> Remeber that the memory you read/write from must be page aligned (ie
> mmap /dev/zero not malloc) and reads and writes must be multiples of the
> page size. I think block devices work on 2.4 too, but I forget (otherwise
> you can use raw devices).

Thanks for the input. Well, I used the same test program on all, and
the buffer was aligned at 512 bytes (because I intended it to work
with raw character devices too). You are saying that it was luck .. OK,
I'll retest in a little while.

So I simply have to do "nothing" in the driver?

Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/