svn commit: r343536 - head/sys/ufs/ffs
Kirk McKusick
mckusick at FreeBSD.org
Mon Jan 28 21:36:46 UTC 2019
Author: mckusick
Date: Mon Jan 28 21:36:45 2019
New Revision: 343536
URL: https://svnweb.freebsd.org/changeset/base/343536
Log:
This bug was introduced with the change to use softdep_bp_to_mp() in
January 2018 changes -r327723 and -r327821. The softdep_bp_to_mp()
function failed to include VFIFO as one of the valid cases.
Although fifo's do not allocate blocks in the filesystem, they will
allocate blocks if they use extended attributes (such as ACLs). Thus,
softdep_bp_to_mp() needs to return a non-NULL mount pointer when
presented with a fifo vnode so that the soft updates write complete
will properly process the soft updates structures associated with the
extended attribute blocks. It was the failure to process these soft
updates structures, thus leaving them hanging off the buffer, which
lead to the "panic: softdep_deallocate_dependencies: dangling deps"
when trying to clean up the buffer after it was written.
PR: 230962
Reported by: 2t8mr7kx9f at protonmail.com
Reviewed by: kib
Tested by: Peter Holm
MFC after: 1 week
Sponsored by: Netflix
Modified:
head/sys/ufs/ffs/ffs_softdep.c
Modified: head/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- head/sys/ufs/ffs/ffs_softdep.c Mon Jan 28 20:30:04 2019 (r343535)
+++ head/sys/ufs/ffs/ffs_softdep.c Mon Jan 28 21:36:45 2019 (r343536)
@@ -13983,7 +13983,7 @@ retry:
if (mp == NULL)
goto retry;
} else if (vp->v_type == VREG || vp->v_type == VDIR ||
- vp->v_type == VLNK) {
+ vp->v_type == VLNK || vp->v_type == VFIFO) {
mp = vp->v_mount;
} else {
return (NULL);
More information about the svn-src-all
mailing list