diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2021-01-30 19:18:22 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2021-02-25 20:50:00 +0000 |
commit | f8272ff1d26b2fa6936a2ef294e494e43429f973 (patch) | |
tree | af218e1942296dd953a37197647a8bb659fae0eb | |
parent | 2e4940262c719672763181a6a735b17a6fb50b64 (diff) | |
download | src-f8272ff1d26b2fa6936a2ef294e494e43429f973.tar.gz src-f8272ff1d26b2fa6936a2ef294e494e43429f973.zip |
ufs_inactive(): stop hiding ERELOOKUP from ffs_truncate(), return it.
Approved by: re (delphij, gjb)
(cherry picked from commit 013168db8cea926c3dde1247d400d6bedf9a889d)
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 9 | ||||
-rw-r--r-- | 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); } |