Coda File System

Re: fsobj::dir_Creat: Create failed, and resolve problems

From: Troy Benjegerdes <>
Date: Wed, 4 Aug 2004 10:47:01 -0500
> > > EDQUOT, quota exceeded. Interesting, both replicas are not in sync, some
> > > files probably exist on one, other files on the other replica. Both
> > > replicas are probably under quota, but we can't synchronize them because
> > > the union of the two would exceed our current quota.
> > 
> > So, what would be the right thing to do in this case? I would think the
> > client should have a few more checks and block new file writes when it
> > thinks you are going to get over quota (maybe even blocking at 95%
> > quota, or something configurable).
> The client can't know how much quota is left on the servers. I can have
> a client with a 100MB cache, but there could be several GBs of quota
> available. And then some of the servers might be (temporarily)
> unreachable.

Can we keep quota information in the local venus volume information?
> The only 'right' thing that I can think of is to not enforce the quota
> check during resolution. So a user with a doubly replicated volume could
> end up using up to twice the quota amount, but that only happens when he
> first completely fills up one replica, and then fills up the other while
> never seeing both servers at any given time (a triply replicated volume
> would max out at three times quota).

This seems bad.. I would rather consider over quota on resolution a conflict,
and make the user deal with it. And if venus has a (non-authoritative)
copy of the current quota useage, we can return ENOSPC when venus thinks
we've hit 95% quota, (or allow 10% overage like afs does).
> > I would also make the same argument for filling up a directory.. venus
> > should block file writes instead of dieing ;)
> I've been trying for a while to make it return a normal ENOSPC error
> code, but the error is clearly not propagated back all the way to
> userspace.

Hrrm, where would I start looking at this? Is it a generic coda problem,
or something specific to the particular kernel? (linux/bsd/etc)

> > Also, is there a way to get 'cfs lv' to tell me what a specific server
> > thinks for disk/quota usage? How does it decide which server to look at?
> That is kind of random. I believe it actually asks all servers, but only
> displays the data of the server that responded first or something.

I'd call this a bug.. you can never know for sure if you're running out
fo space or not then. There ought to be a way to ask a specific server
for 'cfs lv' info.
Received on 2004-08-04 11:49:29