Coda File System

Re: Venus returns: -17

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Fri, 24 Oct 2003 12:52:55 -0400
On Fri, Oct 24, 2003 at 04:47:02PM +0100, josef.schwarz_at_bt.com wrote:
> when I try to mount a volume (the first after the root volume) from a client I get the following message:
> 
> [root_at_redhat80 coda]# cfs mkmount /coda/everywhere everywhere
> coda_pioctl: Venus returns: -17 for (0xff000001.0x1.0x1)
> /coda: File exists

It looks like you are running 6.0.x, and in that case the top-level
directory in Coda is dynamically generated and only contains the realms
known to venus.

So you really can't mount any volumes (or create anything else) in
there.

> created volumes with:
> createvol_rep rootvol E0000100 /vicepa
> createvol_rep everywhere E0000101 /vicepa
> 
> The rootvolume is mounted by default, I suppose.
> I get two directories in /coda: 172.16.1.1 and 172.16.3.1

Ehh, do you have 2 realms??

What does 'cfs lv /coda/172.16.1.1' and 'cfs lv /coda/172.16.3.1'
return? I am guessing you are looking at the same rootvol in both
cases, except that venus has no way to know that they are in fact
in the same realm.

As far as venus is concerned that really is no problem, however the
server doesn't realize that the client looks at it from 2 different
contexts and will only send callbacks to one of the two. As a result you
will get problems (files created in one 'realm' and on the server will
not automatically show up in the other 'realm' until you explicitly
flush the stale directory, etc) It will need a bit more coding on the
server to get this situation right.

> When I mount the second volume with `cfs mkmount /coda/everywhere everywhere` I should get a directory "everywhere", but is it located in /coda or in /coda/172.16.1.1 (or also /coda/172.16.1.1)?

You would have to mount that volume as
    'cfs mkm /coda/172.16.1.1/everywhere everywhere'

> And does it make a difference if the client is connected to 172.16.1.1
> or 172.16.3.1?

It shouldn't, but at the moment the server not sending callbacks to both
instances makes the client very unpredicatable. It is best to
consistently access through either one or the other (or create an entry
in /etc/coda/realms that maps a single realm name to both servers).

    /etc/coda/realms
    bt.com	172.16.1.1 172.16.3.1

And then access as, /coda/bt.com/... This has the added advantage that
you don't depend on the availability of either server, although your
rootvolume isn't replicated, so it will only be useful when the client
has the contents of rootvol cached.

Jan
Received on 2003-10-24 13:04:37