Date: Tue, 1 Feb 2022 09:03:07 GMT From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 303d3ae7e841 - main - ufs, msdosfs: do not record witness order when creating vnode Message-ID: <202202010903.211937AT043060@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=303d3ae7e8419b457078598b8569e57a5e3fb5ce commit 303d3ae7e8419b457078598b8569e57a5e3fb5ce Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2022-02-01 05:16:30 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2022-02-01 08:51:55 +0000 ufs, msdosfs: do not record witness order when creating vnode When allocating new vnode, we need to lock it exclusively before making it externally visible. Since other threads cannot observe the vnode yet, current lock order cannot create LoR conditions. Reviewed by: mckusick Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D34126 --- sys/fs/msdosfs/msdosfs_denode.c | 2 +- sys/ufs/ffs/ffs_vfsops.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/fs/msdosfs/msdosfs_denode.c b/sys/fs/msdosfs/msdosfs_denode.c index 70b574e48e4b..408c96981481 100644 --- a/sys/fs/msdosfs/msdosfs_denode.c +++ b/sys/fs/msdosfs/msdosfs_denode.c @@ -181,7 +181,7 @@ badoff: ldep->de_diroffset = diroffset; ldep->de_inode = inode; cluster_init_vn(&ldep->de_clusterw); - lockmgr(nvp->v_vnlock, LK_EXCLUSIVE, NULL); + lockmgr(nvp->v_vnlock, LK_EXCLUSIVE | LK_NOWITNESS, NULL); VN_LOCK_AREC(nvp); /* for doscheckpath */ fc_purge(ldep, 0); /* init the FAT cache for this denode */ error = insmntque(nvp, mntp); diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 131bdc33f427..a2a361e813e4 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -1891,7 +1891,7 @@ ffs_vgetf(mp, ino, flags, vpp, ffs_flags) /* * FFS supports recursive locking. */ - lockmgr(vp->v_vnlock, LK_EXCLUSIVE, NULL); + lockmgr(vp->v_vnlock, LK_EXCLUSIVE | LK_NOWITNESS, NULL); VN_LOCK_AREC(vp); vp->v_data = ip; vp->v_bufobj.bo_bsize = fs->fs_bsize;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202202010903.211937AT043060>