git: 2c17429915f2 - main - ufs: remove um_checkpath_lock

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Fri, 04 Jul 2025 15:23:50 UTC
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=2c17429915f2e527d456600a9a2f30c528d1a305

commit 2c17429915f2e527d456600a9a2f30c528d1a305
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-06-02 07:05:33 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-07-04 15:23:42 +0000

    ufs: remove um_checkpath_lock
    
    It's guarantee is provided by the global rename lock now.
    
    Reviewed by:    markj, olce
    Tested by:      pho
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D50648
---
 sys/ufs/ffs/ffs_vfsops.c |  3 ---
 sys/ufs/ufs/ufs_lookup.c |  1 -
 sys/ufs/ufs/ufs_vnops.c  | 18 ++----------------
 sys/ufs/ufs/ufsmount.h   |  2 --
 4 files changed, 2 insertions(+), 22 deletions(-)

diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 891e490a7031..75f5fe716c31 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -1012,7 +1012,6 @@ ffs_mountfs(struct vnode *odevvp, struct mount *mp, struct thread *td)
 	else
 		ump->um_check_blkno = NULL;
 	mtx_init(UFS_MTX(ump), "FFS", "FFS Lock", MTX_DEF);
-	sx_init(&ump->um_checkpath_lock, "uchpth");
 	fs->fs_ronly = ronly;
 	fs->fs_active = NULL;
 	mp->mnt_data = ump;
@@ -1182,7 +1181,6 @@ out:
 	}
 	if (ump != NULL) {
 		mtx_destroy(UFS_MTX(ump));
-		sx_destroy(&ump->um_checkpath_lock);
 		if (mp->mnt_gjprovider != NULL) {
 			free(mp->mnt_gjprovider, M_UFSMNT);
 			mp->mnt_gjprovider = NULL;
@@ -1306,7 +1304,6 @@ ffs_unmount(struct mount *mp, int mntflags)
 	vrele(ump->um_odevvp);
 	dev_rel(ump->um_dev);
 	mtx_destroy(UFS_MTX(ump));
-	sx_destroy(&ump->um_checkpath_lock);
 	if (mp->mnt_gjprovider != NULL) {
 		free(mp->mnt_gjprovider, M_UFSMNT);
 		mp->mnt_gjprovider = NULL;
diff --git a/sys/ufs/ufs/ufs_lookup.c b/sys/ufs/ufs/ufs_lookup.c
index eaf37c58756b..3f9c95e934fc 100644
--- a/sys/ufs/ufs/ufs_lookup.c
+++ b/sys/ufs/ufs/ufs_lookup.c
@@ -1412,7 +1412,6 @@ ufs_checkpath(ino_t source_ino, ino_t parent_ino, struct inode *target,
 	vp = tvp = ITOV(target);
 	mp = vp->v_mount;
 	*wait_ino = 0;
-	sx_assert(&VFSTOUFS(mp)->um_checkpath_lock, SA_XLOCKED);
 
 	if (target->i_number == source_ino)
 		return (EEXIST);
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index 9aea01e70951..74cb094bdfe4 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -1273,9 +1273,9 @@ ufs_rename(
 	struct mount *mp;
 	ino_t ino;
 	seqc_t fdvp_s, fvp_s, tdvp_s, tvp_s;
-	bool checkpath_locked, want_seqc_end;
+	bool want_seqc_end;
 
-	checkpath_locked = want_seqc_end = false;
+	want_seqc_end = false;
 
 	endoff = 0;
 	mp = tdvp->v_mount;
@@ -1427,10 +1427,6 @@ relock:
 		}
 		vfs_ref(mp);
 		MPASS(!want_seqc_end);
-		if (checkpath_locked) {
-			sx_xunlock(&VFSTOUFS(mp)->um_checkpath_lock);
-			checkpath_locked = false;
-		}
 		VOP_UNLOCK(fdvp);
 		VOP_UNLOCK(fvp);
 		vref(tdvp);
@@ -1484,8 +1480,6 @@ relock:
 		if (error)
 			goto unlockout;
 
-		sx_xlock(&VFSTOUFS(mp)->um_checkpath_lock);
-		checkpath_locked = true;
 		error = ufs_checkpath(ino, fdp->i_number, tdp, tcnp->cn_cred,
 		    &ino);
 		/*
@@ -1493,8 +1487,6 @@ relock:
 		 * everything else and VGET before restarting.
 		 */
 		if (ino) {
-			sx_xunlock(&VFSTOUFS(mp)->um_checkpath_lock);
-			checkpath_locked = false;
 			VOP_UNLOCK(fdvp);
 			VOP_UNLOCK(fvp);
 			VOP_UNLOCK(tdvp);
@@ -1574,9 +1566,6 @@ relock:
 				vn_seqc_write_end(fdvp);
 				want_seqc_end = false;
 				vfs_ref(mp);
-				MPASS(checkpath_locked);
-				sx_xunlock(&VFSTOUFS(mp)->um_checkpath_lock);
-				checkpath_locked = false;
 				VOP_UNLOCK(fdvp);
 				VOP_UNLOCK(fvp);
 				vref(tdvp);
@@ -1763,9 +1752,6 @@ unlockout:
 		vn_seqc_write_end(fdvp);
 	}
 
-	if (checkpath_locked)
-		sx_xunlock(&VFSTOUFS(mp)->um_checkpath_lock);
-
 	vput(fdvp);
 	vput(fvp);
 
diff --git a/sys/ufs/ufs/ufsmount.h b/sys/ufs/ufs/ufsmount.h
index 5c7fa11dae6a..d33b01e4425e 100644
--- a/sys/ufs/ufs/ufsmount.h
+++ b/sys/ufs/ufs/ufsmount.h
@@ -97,8 +97,6 @@ struct ufsmount {
 	uint64_t um_maxsymlinklen;		/* (c) max size of short
 						       symlink */
 	struct	mtx um_lock;			/* (c) Protects ufsmount & fs */
-	struct	sx um_checkpath_lock;		/* (c) Protects ufs_checkpath()
-						       result */
 	struct	mount_softdeps *um_softdep;	/* (c) softdep mgmt structure */
 	struct	vnode *um_quotas[MAXQUOTAS];	/* (q) pointer to quota files */
 	struct	ucred *um_cred[MAXQUOTAS];	/* (q) quota file access cred */