mirror of https://github.com/torvalds/linux.git
NFS: Implement get_nfs_version()
This is a pair for put_nfs_version(), and is used for incrementing the reference count on the nfs version module. I also updated the callers I could find who had this hardcoded up until now. Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
3c91e4b7ae
commit
288d7224db
|
|
@ -100,12 +100,18 @@ struct nfs_subversion *find_nfs_version(unsigned int version)
|
||||||
if (!nfs)
|
if (!nfs)
|
||||||
return ERR_PTR(-EPROTONOSUPPORT);
|
return ERR_PTR(-EPROTONOSUPPORT);
|
||||||
|
|
||||||
if (!try_module_get(nfs->owner))
|
if (!get_nfs_version(nfs))
|
||||||
return ERR_PTR(-EAGAIN);
|
return ERR_PTR(-EAGAIN);
|
||||||
|
|
||||||
return nfs;
|
return nfs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get_nfs_version(struct nfs_subversion *nfs)
|
||||||
|
{
|
||||||
|
return try_module_get(nfs->owner);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(get_nfs_version);
|
||||||
|
|
||||||
void put_nfs_version(struct nfs_subversion *nfs)
|
void put_nfs_version(struct nfs_subversion *nfs)
|
||||||
{
|
{
|
||||||
module_put(nfs->owner);
|
module_put(nfs->owner);
|
||||||
|
|
@ -149,7 +155,7 @@ struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_init)
|
||||||
|
|
||||||
clp->cl_minorversion = cl_init->minorversion;
|
clp->cl_minorversion = cl_init->minorversion;
|
||||||
clp->cl_nfs_mod = cl_init->nfs_mod;
|
clp->cl_nfs_mod = cl_init->nfs_mod;
|
||||||
if (!try_module_get(clp->cl_nfs_mod->owner))
|
if (!get_nfs_version(clp->cl_nfs_mod))
|
||||||
goto error_dealloc;
|
goto error_dealloc;
|
||||||
|
|
||||||
clp->rpc_ops = clp->cl_nfs_mod->rpc_ops;
|
clp->rpc_ops = clp->cl_nfs_mod->rpc_ops;
|
||||||
|
|
|
||||||
|
|
@ -1541,7 +1541,7 @@ static int nfs_fs_context_dup(struct fs_context *fc, struct fs_context *src_fc)
|
||||||
}
|
}
|
||||||
nfs_copy_fh(ctx->mntfh, src->mntfh);
|
nfs_copy_fh(ctx->mntfh, src->mntfh);
|
||||||
|
|
||||||
__module_get(ctx->nfs_mod->owner);
|
get_nfs_version(ctx->nfs_mod);
|
||||||
ctx->client_address = NULL;
|
ctx->client_address = NULL;
|
||||||
ctx->mount_server.hostname = NULL;
|
ctx->mount_server.hostname = NULL;
|
||||||
ctx->nfs_server.export_path = NULL;
|
ctx->nfs_server.export_path = NULL;
|
||||||
|
|
@ -1633,7 +1633,7 @@ static int nfs_init_fs_context(struct fs_context *fc)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->nfs_mod = nfss->nfs_client->cl_nfs_mod;
|
ctx->nfs_mod = nfss->nfs_client->cl_nfs_mod;
|
||||||
__module_get(ctx->nfs_mod->owner);
|
get_nfs_version(ctx->nfs_mod);
|
||||||
} else {
|
} else {
|
||||||
/* defaults */
|
/* defaults */
|
||||||
ctx->timeo = NFS_UNSPEC_TIMEO;
|
ctx->timeo = NFS_UNSPEC_TIMEO;
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ struct vfsmount *nfs_d_automount(struct path *path)
|
||||||
ctx->version = client->rpc_ops->version;
|
ctx->version = client->rpc_ops->version;
|
||||||
ctx->minorversion = client->cl_minorversion;
|
ctx->minorversion = client->cl_minorversion;
|
||||||
ctx->nfs_mod = client->cl_nfs_mod;
|
ctx->nfs_mod = client->cl_nfs_mod;
|
||||||
__module_get(ctx->nfs_mod->owner);
|
get_nfs_version(ctx->nfs_mod);
|
||||||
|
|
||||||
ret = client->rpc_ops->submount(fc, server);
|
ret = client->rpc_ops->submount(fc, server);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ struct nfs_subversion {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct nfs_subversion *find_nfs_version(unsigned int);
|
struct nfs_subversion *find_nfs_version(unsigned int);
|
||||||
|
int get_nfs_version(struct nfs_subversion *);
|
||||||
void put_nfs_version(struct nfs_subversion *);
|
void put_nfs_version(struct nfs_subversion *);
|
||||||
void register_nfs_version(struct nfs_subversion *);
|
void register_nfs_version(struct nfs_subversion *);
|
||||||
void unregister_nfs_version(struct nfs_subversion *);
|
void unregister_nfs_version(struct nfs_subversion *);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue