Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Feb 2021 07:58:59 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 6dde909bb597 - stable/13 - ufs_inactive(): stop hiding ERELOOKUP from ffs_truncate(), return it.
Message-ID:  <202102240758.11O7wxlF046733@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=6dde909bb5976988483dacf6c56465c62f795e8a

commit 6dde909bb5976988483dacf6c56465c62f795e8a
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2021-01-30 19:18:22 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-02-24 07:47:18 +0000

    ufs_inactive(): stop hiding ERELOOKUP from ffs_truncate(), return it.
    
    (cherry picked from commit 013168db8cea926c3dde1247d400d6bedf9a889d)
---
 sys/ufs/ffs/ffs_softdep.c | 9 +++++----
 sys/ufs/ufs/ufs_inode.c   | 2 --
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 3cc76f9142c3..8c3ae9dd95fc 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -1493,13 +1493,14 @@ get_parent_vp(struct vnode *vp, struct mount *mp, ino_t inum, struct buf *bp,
 		}
 
 		/*
-		 * Do not drop vnode lock while inactivating.  This
-		 * would result in leaks of the VI flags and
-		 * reclaiming of non-truncated vnode.  Instead,
+		 * Do not drop vnode lock while inactivating during
+		 * vunref.  This would result in leaks of the VI flags
+		 * and reclaiming of non-truncated vnode.  Instead,
 		 * re-schedule inactivation hoping that we would be
 		 * able to sync inode later.
 		 */
-		if ((vp->v_iflag & VI_DOINGINACT) != 0) {
+		if ((vp->v_iflag & VI_DOINGINACT) != 0 &&
+		    (vp->v_vflag & VV_UNREF) != 0) {
 			VI_LOCK(vp);
 			vp->v_iflag |= VI_OWEINACT;
 			VI_UNLOCK(vp);
diff --git a/sys/ufs/ufs/ufs_inode.c b/sys/ufs/ufs/ufs_inode.c
index 15bd8be448a9..46e4f8e54e41 100644
--- a/sys/ufs/ufs/ufs_inode.c
+++ b/sys/ufs/ufs/ufs_inode.c
@@ -212,8 +212,6 @@ out:
 		vrecycle(vp);
 	if (mp != NULL)
 		vn_finished_secondary_write(mp);
-	if (error == ERELOOKUP)
-		error = 0;
 	return (error);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202102240758.11O7wxlF046733>