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
This commit is contained in:
parent
d51b0786a2
commit
303d3ae7e8
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user