Subject: Re: revisiting quotas
To: Robert Elz <kre@munnari.OZ.AU>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: tech-kern
Date: 06/10/2000 18:43:01
On Sun, Jun 11, 2000 at 12:54:10AM +1000, Robert Elz wrote:
> Date: Sun, 28 May 2000 12:47:23 +0200
> From: Manuel Bouyer <bouyer@antioche.lip6.fr>
> Message-ID: <20000528124723.A210@antioche.eu.org>
>
> | I'm not happy with the way quota works currently: even after a clean reboot
> | quotacheck is run, which can take some time on a big filesystem.
>
> Make sure you're not suffering from quotacheck stupidity and a large
> quota file (a valid, or invalid, large uid leaving a hole in the quota
> file can make quotacheck very slow .. even on a big filesys, just reading
> the inodes shouldn't take very long).
It's not the problem. The problem is that it's a 85GB filesystem.
>
> | My first though was to add a flag similar to the FFS clean flag,
>
> This might be possible, but not at all easy I think.
I did it, it's not much work.
>
> | This sheme works fine most of the time, but the fact that mount and quota
> | are separate can lead to inconsistencies:
>
> Combining them can't help (not in the general case) there are always going
> to be circumstances where you want a filesys mounted without quotas
> enabled, even if they normally would be. So the system has to be able
> to cope with that.
>
> | quotacheck can be integrated to fsck,
>
> I don't think this is a good idea, I also suspect it is unnecessary.
It's not necessery but would make things easier ... and saves a filesystem
walk :)
>
> | and quotaon can happen at mount time
>
> That is reasonable, mount does so much anyway...
>
> | (this can be controlled with tunefs for example).
>
> But I doubt that is the right way, just a mount opt (in fstab, or
> on the cmd line) seems better.
I though about it as a way to ensure that the quota file is always consistent:
one would have to really want to have a FS mounted R/W with quota off.
>
> | The counterpart is that we can't have the quota file in an arbitrary
> | place, but I don't think it's a real problem: the quota file can live
> | in the filesystem itself,
>
> That is a little difficult on a MFS filesystem... (and yes, quotas on
> MFS are entirely reasonable).
I'm not sure it does work rigth now ...
> The usage data isn't a problem (it is kind
> of certain to be all 0's when the MFS is created), but the limits, etc,
> all need to be fetched from somewhere.
>
> I guess there might be an argument for splitting the quota file, putting
> the usage info in a file that must be on the filesys, and the rest of
> it on a file that could be anywhere, but I suspect that doesn't gain
> anything much worth having.
Exept for MFS :)
>
> How much of a problem is there really to solve here? I assume that a
> system that has quotas has real users on it - and consequently isn't a
> system that is being rebooted during development every half hour or
> so (and so shaving seconds off boot time can really help).
My system is a NFS server, quotacheck on the 85GB filesystems takes about 2mn
(I have another machine, only 50GB but slower disk system, 2mn also).
Sure I don't expect to take the machine down often but it can happen
(last time it was because of a UPS stupidity), and it's annoying to have
to wait for 2 more minutes after a clean shutdown.
>
> If you were to do something like this, the way to go would probably be to
> stick the dev/inode# of the current "correct" quota file in the
> superblock somewhere, if the system alters usages anywhere that gets
> cleared. When the filesys is unmounted, if quotas were enabled and
> updated, the file's details are put there. When quotas are to be enabled
> if the file to be used has its details in the superblock, skip the
> quotacheck.
>
> This wouldn't be foolproof, but it would mostly err on the side of
> safety (if a filesys changes its dev due to device renumbering,
> quotacheck gets run, perhaps unnecessarily - you'd be real unlucky to
> have another filesys take the old dev, have a quote file on it with the
> same inum, and you just happen to decide to switch to that quota file,
> all at the same time...)
This idea could work, I'll think about it. The problem I can see is how to
get back the info if quotacheck needs to be run or not. Another quotactl
call ?
--
Manuel Bouyer <bouyer@antioche.eu.org>
--