fsck_ufs locked in snaplk

Atanas atanas at asd.aplus.net
Wed Apr 26 01:11:08 UTC 2006


Kris Kennaway said the following on 4/25/06 9:22 AM:
> On Tue, Apr 25, 2006 at 06:39:09PM +0300, Kostik Belousov wrote:
> 
>> Obviously, revisions 1.78, 1.79 of the sys/ufs/ufs/ufs_quota.c
>> shall be MFCed. Try this patch (note, I does not tested it):
> 
> WTF, I could have sworn I merged that!  Yes, this patch is needed. 
> However, I don't think it's the cause of runtime deadlocks.
> 
Thanks for the heads up!
I was just about to release the next production box without checking
that and assuming the QUOTA fix was already in place.

I would like to confirm that I have another fully loaded server running
6.1-PRERELEASE (BETA2 based on 6-STABLE) from Mar 1 with manually
patched sys/ufs/ufs/ufs_quota.c (1.74.2.1 2006/01/14) with a similar
diff generated from CURRENT between 1.77 and 1.80.

55 days uptime and no problems so far.

Regards,
Atanas

P.S. Forgot to CC the list, sorry for the double post.

>> Index: sys/ufs/ufs/ufs_quota.c
>> ===================================================================
>> RCS file: /usr/local/arch/ncvs/src/sys/ufs/ufs/ufs_quota.c,v
>> retrieving revision 1.77
>> retrieving revision 1.79
>> diff -u -r1.77 -r1.79
>> --- sys/ufs/ufs/ufs_quota.c	9 Jan 2006 20:42:19 -0000	1.77
>> +++ sys/ufs/ufs/ufs_quota.c	12 Feb 2006 13:20:06 -0000	1.79
>> @@ -429,8 +429,9 @@
>>  		quotaoff(td, mp, type);
>>  	ump->um_qflags[type] |= QTF_OPENING;
>>  	mp->mnt_flag |= MNT_QUOTA;
>> -	ASSERT_VOP_LOCKED(vp, "quotaon");
>> +	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
>>  	vp->v_vflag |= VV_SYSTEM;
>> +	VOP_UNLOCK(vp, 0, td);
>>  	*vpp = vp;
>>  	/*
>>  	 * Save the credential of the process that turned on quotas.
>> @@ -535,8 +536,9 @@
>>  	}
>>  	MNT_IUNLOCK(mp);
>>  	dqflush(qvp);
>> -	ASSERT_VOP_LOCKED(qvp, "quotaoff");
>> +	vn_lock(qvp, LK_EXCLUSIVE | LK_RETRY, td);
>>  	qvp->v_vflag &= ~VV_SYSTEM;
>> +	VOP_UNLOCK(qvp, 0, td);
>>  	error = vn_close(qvp, FREAD|FWRITE, td->td_ucred, td);
>>  	ump->um_quotas[type] = NULLVP;
>>  	crfree(ump->um_cred[type]);
>>
>>
> 
> 




More information about the freebsd-stable mailing list