Hello, I backported the MP-Safe quotas patch for RELENG_6. Besides what the title said, it includes several fixes for quotas operation. I would commit the patch based on the users feedback, assuming the re@ would not object.
Please, test it. http://people.freebsd.org/~kib/quotagiant/quotas-RELENG_6-20070623-1455.patch Draft version of commit message: MFC: part of rev. 1.412 of sys/kern/vfs_syscalls.c: Remove explicit calls to lock and unlock Giant and replace them with VFS_LOCK_GIANT/VFS_UNLOCK_GIANT calls. MFC this for quotactl only. rev. 1.433 of sys/kern/vfs_syscalls.c: Busy filesystem around call of VFS_QUOTACTL() vfs op. rev. 1.289 of sys/ufs/ufs/ufs_vnops.c: Remove unneeded getinoquota() call in the ufs_access(). rev. 1.83 of sys/ufs/ufs/ufs_lookup.c: Call getinoquota() before allocating new block for the directory to properly account for block allocation. rev. 1.30 of sys/ufs/ufs/quota.h rev. 1.327 of sys/ufs/ffs/ffs_vfsops.c rev. 1.93 of sys/ufs/ufs/ufs_quota.c: Implement fine-grained locking for UFS quotas. rev. 1.205 of sys/ufs/ffs/ffs_softdep.c rev. 1.328 of sys/ufs/ffs/ffs_vfsops.c: Mark UFS as being MP-Safe in "options QUOTA" case too. Remove no more neccessary Giant acquisions in softdepend processing code. rev. 1.206 of sys/ufs/ffs/ffs_softdep.c: Revert rev. 1.205. Replace unconditional acquision of Giant when QUOTAS are defined with VFS_LOCK_GIANT(NULL) call. rev. 1.211 of sys/ufs/ffs/ffs_softdep.c rev. 1.69 of sys/ufs/ufs/ufs_inode.c: Fix livelock that could occur when snapshoting UFS with quotas, where some quota limit was exceeded.
pgpbCOWnIJB6A.pgp
Description: PGP signature