git: 7c2d965ca8e7 - stable/13 - ufs: be more persistent with finishing some operations
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 07 Feb 2022 09:50:55 UTC
The branch stable/13 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=7c2d965ca8e7736689755fea521313610aeef4c3
commit 7c2d965ca8e7736689755fea521313610aeef4c3
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2022-01-18 01:49:36 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2022-02-07 09:38:50 +0000
ufs: be more persistent with finishing some operations
(cherry picked from commit 8d8589b385c901581ee71d09d86d044a6f42dfef)
---
sys/ufs/ffs/ffs_inode.c | 2 +-
sys/ufs/ffs/ffs_softdep.c | 2 +-
sys/ufs/ffs/ffs_vnops.c | 2 +-
sys/ufs/ufs/inode.h | 1 +
4 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c
index 4b2b2989fb81..3c1903fcbae6 100644
--- a/sys/ufs/ffs/ffs_inode.c
+++ b/sys/ufs/ffs/ffs_inode.c
@@ -179,7 +179,7 @@ loop:
pause("ffsupd", 1);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
vrele(vp);
- if (VN_IS_DOOMED(vp))
+ if (!IS_UFS(vp))
return (ENOENT);
/*
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 8bc5e409cf04..37709b605fbd 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -13774,7 +13774,7 @@ softdep_request_cleanup_inactivate(struct mount *mp)
vholdl(vp);
vn_lock(vp, LK_EXCLUSIVE | LK_INTERLOCK | LK_RETRY);
VI_LOCK(vp);
- if (vp->v_data != NULL && vp->v_usecount == 0) {
+ if (IS_UFS(vp) && vp->v_usecount == 0) {
while ((vp->v_iflag & VI_OWEINACT) != 0) {
error = vinactive(vp);
if (error != 0 && error != ERELOOKUP)
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index ceea2237c94e..a33699515bc2 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -2066,7 +2066,7 @@ ffs_vput_pair(struct vop_vput_pair_args *ap)
* and respond to dead vnodes by returning ESTALE.
*/
VOP_LOCK(vp, vp_locked | LK_RETRY);
- if (!VN_IS_DOOMED(vp))
+ if (IS_UFS(vp))
return (0);
/*
diff --git a/sys/ufs/ufs/inode.h b/sys/ufs/ufs/inode.h
index 2ff619b4eac0..3e555dc52a32 100644
--- a/sys/ufs/ufs/inode.h
+++ b/sys/ufs/ufs/inode.h
@@ -245,6 +245,7 @@ I_IS_UFS2(const struct inode *ip)
#define SHORTLINK(ip) (I_IS_UFS1(ip) ? \
(caddr_t)(ip)->i_din1->di_db : (caddr_t)(ip)->i_din2->di_db)
#define IS_SNAPSHOT(ip) ((ip)->i_flags & SF_SNAPSHOT)
+#define IS_UFS(vp) ((vp)->v_data != NULL)
/*
* Structure used to pass around logical block paths generated by