(Illustration by Gaich Muramatsu)
On Wed, Dec 19, 2001 at 12:38:22AM -0600, Ryan M. Lefever wrote: > Sometimes when I run Coda, the server starts up and then quits > immediately. The following assertion is raised in the /vice/srv/SrvErr > file: > > codasrv: rvm_io.c:240: read_dev: Assertion `(dev->raw_io) ? (((length) & > (512-1)) == 0) : 1' failed. > > Does anybody know what this assertion gets raised for? Do I have rvm > configured incorrectly? I did look into this at one point and came to the conclusion that there is something really wrong in the Linux VM. It seems to have to do with dirty buffers that are still being synced back to the disk after the codasrv process has exited. We seem to be reading old data from the file into the pagecache because the new data in the buffercache hasn't hit the disk yet. Ofcourse if this still happens in a 2.4 kernel my theory is totally incorrect because there the pages are pinned until the dirty buffers have been flushed (actually the buffers point to the data in the pachecache now). On a similar note, around 2.4.16 direct-IO/raw-IO patches were merged into the kernel which actually might make RVM a lot more efficient on Linux systems. Maybe someone with some spare time over chrismas would like to try to get it going on Linux. AFAIK, rawio is only used on BSD's, so the code already handles block-sized writes and it should be much more than adding the O_DIRECT flag to where we open the log and data files. JanReceived on 2001-12-19 09:27:19