Remove Giant asserts. Update comment.

Owning Giant in the init/uninit is accidental due to the moment where
VFS modules initialization is performed, and is not enforced by the
VFS interface.  The Giant lock does not prevent a parallel execution
of the code, it is VFS which implements the proper protocol.

Approved by:	des (pseudofs maintainer)
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2016-08-03 08:57:15 +00:00
parent 6828ba639a
commit 29ffb32ccd
4 changed files with 3 additions and 11 deletions

View File

@ -383,8 +383,6 @@ pfs_init(struct pfs_info *pi, struct vfsconf *vfc)
struct pfs_node *root;
int error;
mtx_assert(&Giant, MA_OWNED);
pfs_fileno_init(pi);
/* set up the root directory */
@ -414,8 +412,6 @@ pfs_uninit(struct pfs_info *pi, struct vfsconf *vfc)
{
int error;
mtx_assert(&Giant, MA_OWNED);
pfs_destroy(pi->pi_root);
pi->pi_root = NULL;
pfs_fileno_uninit(pi);

View File

@ -189,9 +189,9 @@ typedef int (*pfs_destroy_t)(PFS_DESTROY_ARGS);
/*
* pfs_info: describes a pseudofs instance
*
* The pi_mutex is only used to avoid using the global subr_unit lock for
* unrhdr. The rest of struct pfs_info is only modified while Giant is
* held (during vfs_init() and vfs_uninit()).
* The pi_mutex is only used to avoid using the global subr_unit lock
* for unrhdr. The rest of struct pfs_info is only modified during
* vfs_init() and vfs_uninit() of the consumer filesystem.
*/
struct pfs_info {
char pi_name[PFS_FSNAMELEN];

View File

@ -52,7 +52,6 @@ void
pfs_fileno_init(struct pfs_info *pi)
{
mtx_assert(&Giant, MA_OWNED);
mtx_init(&pi->pi_mutex, "pfs_fileno", NULL, MTX_DEF);
pi->pi_unrhdr = new_unrhdr(3, INT_MAX / NO_PID, &pi->pi_mutex);
}
@ -64,7 +63,6 @@ void
pfs_fileno_uninit(struct pfs_info *pi)
{
mtx_assert(&Giant, MA_OWNED);
delete_unrhdr(pi->pi_unrhdr);
pi->pi_unrhdr = NULL;
mtx_destroy(&pi->pi_mutex);

View File

@ -84,7 +84,6 @@ void
pfs_vncache_load(void)
{
mtx_assert(&Giant, MA_OWNED);
mtx_init(&pfs_vncache_mutex, "pfs_vncache", NULL, MTX_DEF);
pfs_exit_tag = EVENTHANDLER_REGISTER(process_exit, pfs_exit, NULL,
EVENTHANDLER_PRI_ANY);
@ -97,7 +96,6 @@ void
pfs_vncache_unload(void)
{
mtx_assert(&Giant, MA_OWNED);
EVENTHANDLER_DEREGISTER(process_exit, pfs_exit_tag);
KASSERT(pfs_vncache_entries == 0,
("%d vncache entries remaining", pfs_vncache_entries));