Coda File System

venus startup fails; ramfs and coda

From: Christopher J Mason <cmason_at_cmu.edu>
Date: Tue, 19 Sep 2000 00:47:19 -0400
Howdy.

So call me crazy but I'm trying to get coda to work as a client on a 
diskless machine (it happens to be an ARM based handheld called the iPAQ). 
I've got everything compiled and installed, and libraries seem to be setup 
in the right places.  I've run venus-setup and it creates and edits some 
files (actually that's a lie, I've edited most of them by hand to have the 
right stuff in them because they're read only, see below).

However, when I run venus for the first time I get the following output 
(also copied to the console file in /usr/coda):

(none):/usr/coda# venus&
[1] 287
(none):/usr/coda# Coda Venus, version 5.3.8

Date: Mon 09/18/2000

22:53:45 /usr/coda/LOG size is 165699 bytes
rvm_create_log failed
22:53:45 Recov_InitRVM: RVM_INIT failed (RVM_EIO)
[1]+  Exit 255                venus

Now if I do:

(none):/usr/coda# ls -l LOG
-rw-------   1 root     root       166912 Sep 18 22:53 LOG

If I cat the file, it's some header stuff:

:-C\RVM Interface Version 1.3  7 Mar 1994RVM Log Version  1.4 Oct 17, 1997 
RVM :

Followed by some binary garbage and then a bunch of blank space which I 
assume are nulls.

The only other data point I can offer is this, which I find kind of odd:

(none):/usr/coda# du -s LOG
0       LOG

This is all happening on linux kernel 2.4.0-test8-rmk2-np1.

Basically my layout is the following:

/ is a read-only file system (cramfs if you must know)
/coda is just a directory in a read only file system
/usr is also a read only file system.
/usr/coda -> /mnt/ramfs/coda which is a ramfs file system

/etc also happens to live in ramfs.

/dev also happens to live in ramfs and
/dev/cfs0 exists.

(none):/dev# ls -l cfs0
crwxrwxrwx   1 root     root      67,   0 Dec 31  1969 cfs0
(none):/dev# lsmod
Module                  Size  Used by
coda                   52352   0  (autoclean)
...

I know it's probably some kind of bug having to do with ramfs but I'm not 
sure what and I don't really even know where to start.  I'd really like to 
get this to work, but it seems like I'm going to need your help.  I've 
looked through the source for the functions:
log_t *make_log(log_dev_name,retval)
rvm_return_t rvm_create_log(rvm_options,log_len,mode)
static void Recov_InitRVM()

and haven't seen anything that obviously looks like it should fail.

I've tried inserting printfs into rvm_create_log() at each of the places 
where RVM_EIO is returned, but I'm not having any luck.


Also, and probably unrelatedly, I notice in your example configuration file 
you say the minimum cache size is 2048.  This isn't true.  Coda complains 
about the size of the log being too small if you actually try to run venus 
with the log size set to 2048.  I'm using 5120 and it doesn't complain (at 
least about that).

I'd appreciate any help you could give.  I think coda would be perfect for 
this kind of device, and I'm willing to try to debug this.

-c



[Christopher Mason        <cmason@cmu.edu>      http://ash.rem.cmu.edu/ ]
["Don't you see?! We're actors--we're the opposite of people!" -Stoppard]
Received on 2000-09-19 01:03:32