In softdep_prealloc(), return early not only for snapshots, but for

the quota files as well.

Reported and tested by:	pho
Reviewed by:	mckusick
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
This commit is contained in:
Konstantin Belousov 2016-09-08 12:05:13 +00:00
parent ccb19123e5
commit 60f1c000f3

View File

@ -2997,10 +2997,13 @@ softdep_prealloc(vp, waitok)
("softdep_prealloc called on non-softdep filesystem"));
/*
* Nothing to do if we are not running journaled soft updates.
* If we currently hold the snapshot lock, we must avoid handling
* other resources that could cause deadlock.
* If we currently hold the snapshot lock, we must avoid
* handling other resources that could cause deadlock. Do not
* touch quotas vnode since it is typically recursed with
* other vnode locks held.
*/
if (DOINGSUJ(vp) == 0 || IS_SNAPSHOT(VTOI(vp)))
if (DOINGSUJ(vp) == 0 || IS_SNAPSHOT(VTOI(vp)) ||
(vp->v_vflag & VV_SYSTEM) != 0)
return (0);
ump = VFSTOUFS(vp->v_mount);
ACQUIRE_LOCK(ump);