I've removed the O_DIRECT usage since I got the #ifdefs wrong. Linus says that there's a better way to do it anyway. I've done that, and all appears to be well. This should also make what I did portable to other POSIX platforms. Have fun!