The branch main has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=013168db8cea926c3dde1247d400d6bedf9a889d

commit 013168db8cea926c3dde1247d400d6bedf9a889d
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2021-01-30 19:18:22 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2021-02-12 01:02:21 +0000

    ufs_inactive(): stop hiding ERELOOKUP from ffs_truncate(), return it.
    
    VFS should retry inactivation when possible, then. This should provide
    timely removal of unlinked unreferenced inodes.
    
    Reviewed by:    chs, mckusick
    Tested by:      pho
    MFC after:      2 weeks
    Sponsored by:   The FreeBSD Foundation
---
 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);
 }
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to