Page MenuHomeFreeBSD

D57035.diff
No OneTemporary

D57035.diff

diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -1292,7 +1292,8 @@
* Use vn_lock_pair to avoid establishing an ordering between vnodes
* from different filesystems.
*/
- vn_lock_pair(vp, false, LK_EXCLUSIVE, newdp, false, LK_EXCLUSIVE);
+ error1 = vn_lock_pair(vp, false, LK_EXCLUSIVE, newdp, false,
+ LK_EXCLUSIVE);
VI_LOCK(vp);
vp->v_iflag &= ~VI_MOUNT;
@@ -1302,7 +1303,10 @@
TAILQ_INSERT_TAIL(&mountlist, mp, mnt_list);
mtx_unlock(&mountlist_mtx);
vfs_event_signal(NULL, VQ_MOUNT, 0);
- VOP_UNLOCK(vp);
+ if (error1 == 0)
+ VOP_UNLOCK(vp);
+ else
+ MPASS(error1 == EDEADLK);
EVENTHANDLER_DIRECT_INVOKE(vfs_mounted, mp, newdp, td);
VOP_UNLOCK(newdp);
mount_devctl_event("MOUNT", mp, false);

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 16, 7:22 AM (18 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33429682
Default Alt Text
D57035.diff (794 B)

Event Timeline