ml_iterator_remove Remove now obsolete mountlist_lock. Keep struct mount element mnt_list and now static mountlist for gdb and pstat. diff -r bb476fea44cd -r 40e001e33fe6 sys/kern/vfs_mount.c --- a/sys/kern/vfs_mount.c Thu Mar 30 11:17:57 2017 +0200 +++ b/sys/kern/vfs_mount.c Thu Mar 30 11:17:57 2017 +0200 @@ -117,9 +117,8 @@ /* Root filesystem. */ vnode_t * rootvnode; -/* Mounted filesystem list. */ -struct mntlist mountlist; -kmutex_t mountlist_lock; +/* Mounted filesystem list (pstat and gdb only). */ +static struct mntlist mountlist; int vnode_offset_next_by_mount /* XXX: ugly hack for pstat.c */ = offsetof(vnode_impl_t, vi_mntvnodes.tqe_next); @@ -139,7 +138,6 @@ TAILQ_INIT(&mount_list); TAILQ_INIT(&mountlist); mutex_init(&mount_list_lock, MUTEX_DEFAULT, IPL_NONE); - mutex_init(&mountlist_lock, MUTEX_DEFAULT, IPL_NONE); mutex_init(&mntvnode_lock, MUTEX_DEFAULT, IPL_NONE); mutex_init(&vfs_list_lock, MUTEX_DEFAULT, IPL_NONE); @@ -1580,11 +1578,8 @@ me = mountlist_alloc(ME_MOUNT, mp); mutex_enter(&mount_list_lock); TAILQ_INSERT_TAIL(&mount_list, me, me_list); + TAILQ_INSERT_TAIL(&mountlist, mp, mnt_list); mutex_exit(&mount_list_lock); - - mutex_enter(&mountlist_lock); - TAILQ_INSERT_TAIL(&mountlist, mp, mnt_list); - mutex_exit(&mountlist_lock); } void @@ -1598,12 +1593,9 @@ break; KASSERT(me != NULL); TAILQ_REMOVE(&mount_list, me, me_list); + TAILQ_REMOVE(&mountlist, mp, mnt_list); mutex_exit(&mount_list_lock); mountlist_free(me); - - mutex_enter(&mountlist_lock); - TAILQ_REMOVE(&mountlist, mp, mnt_list); - mutex_exit(&mountlist_lock); } /* diff -r bb476fea44cd -r 40e001e33fe6 sys/sys/mount.h --- a/sys/sys/mount.h Thu Mar 30 11:17:57 2017 +0200 +++ b/sys/sys/mount.h Thu Mar 30 11:17:57 2017 +0200 @@ -466,10 +466,9 @@ void vfs_syncer_add_to_worklist(struct mount *); void vfs_syncer_remove_from_worklist(struct mount *); -extern TAILQ_HEAD(mntlist, mount) mountlist; /* mounted filesystem list */ +TAILQ_HEAD(mntlist, mount); extern struct vfsops *vfssw[]; /* filesystem type table */ extern int nvfssw; -extern kmutex_t mountlist_lock; extern kmutex_t vfs_list_lock; void vfs_mount_sysinit(void);