Bug 30958

Summary: QUOTA with 0 bytes in quota.user hangs up the system in boot
Product: Base System Reporter: Minas <bigbrother>
Component: kernAssignee: mpp
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.4-RELEASE   
Hardware: Any   
OS: Any   

Description Minas 2001-10-01 15:40:00 UTC
I disabled in boot time quotacheck. I compiled the kernel with quota support. I 'touch quota.user' on every filesystem. So quota.user had 0 bytes length. I edited fstab to include option with userquota in mount. When the system rebooted, all the initialization scripts where executed and the login prompt appear. When I logged in as root after a couple of seconds the system hang. It din't appear any message on the console or the syslog. The system responding at ping from the network, but the shell didn't respond to any command. I tried to login in ttyv? but the login process hang too. I had to hard reboot the machine. For 4-5 times this was happening, until bypass the quota-on command and I tried a quotacheck on the filesystem. Then the problem had been solved.

Fix: 

Maybe the quotaon command has to check the file quota.user if it has 0 bytes, and if this is valid it has to do a quotacheck on the filesystem.
How-To-Repeat: 
Enable quotas on the kernel. Touch quota.user. DO NOT do quotacheck (thus quota.user is 0 bytes) and reboot. The machine will hung up after a couple of sec after the booting is complete and the logging prompt appear.
Comment 1 Jarek Granat 2003-09-15 21:21:05 UTC
# uname -a
FreeBSD bogus.nn 4.9-PRERELEASE FreeBSD 4.9-PRERELEASE #0: Sun Sep 14
11:11:50 CEST 2003     root@bogus.nn:/usr/src/sys/compile/BOGUS  i386

The same problem here.

Jarek Granat
Comment 2 Robert Watson freebsd_committer freebsd_triage 2003-11-17 20:55:41 UTC
Responsible Changed
From-To: freebsd-bugs->rwatson

Grab ownership of this item since I've done some digging in the 
quota code before.
Comment 3 Robert Watson freebsd_committer freebsd_triage 2006-11-10 16:52:15 UTC
Responsible Changed
From-To: rwatson->kib

Assign to kib since he's been working with quotas lately.
Comment 4 dfilter service freebsd_committer freebsd_triage 2007-01-20 12:28:23 UTC
mpp         2007-01-20 12:28:15 UTC

  FreeBSD src repository

  Modified files:
    sbin/quotacheck      quotacheck.c 
  Log:
  Quota system cleanup.
  
  1) Do not account for uids/gids that appear negative to prevent
     the creation of 131GB+ quota files.  This is the same as the kernel
     now determines which files to provide quota accounting for.
     Related to PR kern/38156.  This should also prevent boots from
     hanging if a negative uid appears in the file systems.
  2) Do not count system files in the usage counts.  These currently are
     file system snapshot and quota data files.  This is how the kernel
     now handles those files.
  3) Correctly generate new quota data files if the current files
     do not exist or are zero length in size.  PR kern/30958.
     It should now be possible to newfs / mount / touch quota.{user,group}
     and quotaon a file system and have everything work.
  4) Change some diagnostics to report the file system and type of
     id (uid or gid) that is being reported.
  5) Truncate the quota data files if possible, instead of letting
     them grow to a big enough size to hold the largest UID/GID on
     the system (typically "nobody").  The kernel should now be able to
     grow the files as needed without deadlocking the system.
  
  PR:  kern/30958, kern/38156
  
  Revision  Changes    Path
  1.27      +137 -29   src/sbin/quotacheck/quotacheck.c
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
Comment 5 mpp freebsd_committer freebsd_triage 2007-01-25 11:49:36 UTC
State Changed
From-To: open->patched

Fixed in -current. 

A -stable patch will be committed after more stress testing 
in -current. 


Comment 6 mpp freebsd_committer freebsd_triage 2007-01-25 11:49:36 UTC
Responsible Changed
From-To: kib->mpp

Fixed in -current. 

A -stable patch will be committed after more stress testing 
in -current.
Comment 7 mpp freebsd_committer freebsd_triage 2007-02-01 07:51:59 UTC
State Changed
From-To: patched->closed

This should now be fixed in 6.2-stable and 7.0-current.