Messages in this thread | | | From | "Peter T. Breuer" <> | Subject | Re: O_DIRECT | Date | 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/
| |