Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F102701317
D34466.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D34466.diff
View Options
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1965,7 +1965,13 @@
KASSERT(vp->v_mount == NULL,
("insmntque: vnode already on per mount vnode list"));
VNASSERT(mp != NULL, vp, ("Don't call insmntque(foo, NULL)"));
- ASSERT_VOP_ELOCKED(vp, "insmntque: non-locked vp");
+ if ((mp->mnt_kern_flag & MNTK_UNLOCKED_INSMNTQUE) == 0) {
+ ASSERT_VOP_ELOCKED(vp, "insmntque: non-locked vp");
+ } else {
+ KASSERT(!dtr,
+ ("%s: can't have MNTK_UNLOCKED_INSMNTQUE and cleanup",
+ __func__));
+ }
/*
* We acquire the vnode interlock early to ensure that the
@@ -4400,6 +4406,7 @@
MNT_KERN_FLAG(MNTK_RECURSE);
MNT_KERN_FLAG(MNTK_UPPER_WAITER);
MNT_KERN_FLAG(MNTK_LOOKUP_EXCL_DOTDOT);
+ MNT_KERN_FLAG(MNTK_UNLOCKED_INSMNTQUE);
MNT_KERN_FLAG(MNTK_USES_BCACHE);
MNT_KERN_FLAG(MNTK_FPLOOKUP);
MNT_KERN_FLAG(MNTK_TASKQUEUE_WAITER);
@@ -5031,7 +5038,7 @@
vp->v_type = VNON;
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
vp->v_vflag |= VV_FORCEINSMQ;
- error = insmntque(vp, mp);
+ error = insmntque1(vp, mp);
if (error != 0)
panic("vfs_allocate_syncvnode: insmntque() failed");
vp->v_vflag &= ~VV_FORCEINSMQ;
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -487,7 +487,7 @@
#define MNTK_RECURSE 0x00000200 /* pending recursive unmount */
#define MNTK_UPPER_WAITER 0x00000400 /* waiting to drain MNTK_UPPER_PENDING */
#define MNTK_LOOKUP_EXCL_DOTDOT 0x00000800
-/* UNUSED 0x00001000 */
+#define MNTK_UNLOCKED_INSMNTQUE 0x00001000 /* fs does not lock the vnode for insmntque */
#define MNTK_UNMAPPED_BUFS 0x00002000
#define MNTK_USES_BCACHE 0x00004000 /* FS uses the buffer cache. */
/* UNUSED 0x00008000 */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Nov 17, 1:32 AM (21 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14668765
Default Alt Text
D34466.diff (1 KB)
Attached To
Mode
D34466: shared-locked lookup for ".." on nullfs
Attached
Detach File
Event Timeline
Log In to Comment