Coda File System

Re: failed fvm assertion

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Wed, 19 Dec 2001 09:27:13 -0500
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.

Jan
Received on 2001-12-19 09:27:19