Property changes on: . ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys:r179670 Index: kern/vfs_export.c =================================================================== --- kern/vfs_export.c (revision 194059) +++ kern/vfs_export.c (working copy) @@ -233,6 +233,7 @@ int error; nep = mp->mnt_export; + lockmgr(&mp->mnt_explock, LK_EXCLUSIVE, NULL, curthread); if (argp->ex_flags & MNT_DELEXPORT) { if (nep == NULL) return (ENOENT); @@ -268,6 +269,7 @@ mp->mnt_flag |= MNT_EXPORTED; MNT_IUNLOCK(mp); } + lockmgr(&mp->mnt_explock, LK_RELEASE, NULL, curthread); return (0); } @@ -412,7 +414,9 @@ { struct netcred *np; + lockmgr(&mp->mnt_explock, LK_SHARED, NULL, curthread); np = vfs_export_lookup(mp, nam); + lockmgr(&mp->mnt_explock, LK_RELEASE, NULL, curthread); if (np == NULL) return (EACCES); *extflagsp = np->netc_exflags; Index: kern/vfs_mount.c =================================================================== --- kern/vfs_mount.c (revision 194059) +++ kern/vfs_mount.c (working copy) @@ -448,6 +448,7 @@ mp = (struct mount *)mem; mtx_init(&mp->mnt_mtx, "struct mount mtx", NULL, MTX_DEF); lockinit(&mp->mnt_lock, PVFS, "vfslock", 0, 0); + lockinit(&mp->mnt_explock, PVFS, "explock", 0, 0); return (0); } @@ -457,6 +458,7 @@ struct mount *mp; mp = (struct mount *)mem; + lockdestroy(&mp->mnt_explock); lockdestroy(&mp->mnt_lock); mtx_destroy(&mp->mnt_mtx); } Property changes on: dev/cxgb ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys/dev/cxgb:r179670 Property changes on: contrib/pf ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys/contrib/pf:r179670 Index: sys/mount.h =================================================================== --- sys/mount.h (revision 194059) +++ sys/mount.h (working copy) @@ -178,6 +178,7 @@ int mnt_secondary_accwrites;/* (i) secondary wr. starts */ int mnt_ref; /* (i) Reference count */ int mnt_gen; /* struct mount generation */ + struct lock mnt_explock; /* vfs_export walkers lock */ }; struct vnode *__mnt_vnode_next(struct vnode **mvp, struct mount *mp);