cvs commit: src/sys/ufs/ffs ffs_alloc.c ffs_snapshot.c src/sys/ufs/ufs quota.h ufs_quota.c

Andre Albsmeier Andre.Albsmeier at siemens.com
Tue Jan 30 14:21:44 UTC 2007


On Sat, 20-Jan-2007 at 11:58:32 +0000, Mike Pritchard wrote:
> mpp         2007-01-20 11:58:32 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/ufs/ffs          ffs_alloc.c ffs_snapshot.c 
>     sys/ufs/ufs          quota.h ufs_quota.c 
>   Log:
>   Quota system cleanup.
>   
>   1) Do not do quota accounting for the actual quota data files
>      or for file system snapshot files ("system" files).  This
>      prevents a deadlock descibed in PR kern/30958 if the kernel
>      ever has to grow the quota file.  Snapshot files were already
>      exempt from the quota checks, but this change generalized the check.
>   2) Fix a cast that caused extremely large uids/gids to incorrectly
>      write the quota information to the data file at a truncated
>      value for a uint_t32 id value.  The incorrect cast caused quota
>      files in this case to be around 4GB in size, with the correct cast
>      they can now be 131GB in size.  Also related to PR kern/30958.
>   3) Check for what appear to be negative UIDs/GIDs and not account
>      for them.  This prevents the quota files from becoming 131GB in
>      size and causing quotacheck to run forever at bootup.  This could
>      also cause the kernel to try and expand the quota file, which might
>      deadlock due to the issue in #1.  kern/30958 and kern/38156
>      (and some much older closed PR's).
>   4) With the deadlock problems gone, the kernel can now expand the
>      size of the quota database files if it needs to.
>   5) Pass in the i-node count change value to chkiq and chkiqchg as an
>      int, like it used to be before the common routine was split up
>      into 2 different routines to increase / decrease the i-node in-use
>      count.  Prevents an underflow on the i-node count.  Related
>      to PR kern/89247.
>   6) Prevent the block usage from growing slowly if a file system is
>      full and the write was denied due to that fact.  PR kern/89247.
>   
>   Some of these changes require an updated quotacheck to prevent
>   the creation of huge (131GB) quota data files (item #3).
>   
>   #1/#4 probably fixes a lot of the random hangs when quotas are enabled,
>   possibly some of the jail hangs.

This might fix my PR# 2325 (no, this is no typo) as well.

	-Andre


More information about the cvs-src mailing list