Merge pull request #213 from earlchew/issues-212

Allow autoreconnect to be disabled
libnfs-4.0.0-vitalif
Ronnie Sahlberg 2017-05-10 18:13:56 -07:00 committed by GitHub
commit 367ef3b189
3 changed files with 12 additions and 1 deletions

View File

@ -233,6 +233,7 @@ EXTERN void nfs_set_pagecache_ttl(struct nfs_context *nfs, uint32_t v);
EXTERN void nfs_set_readahead(struct nfs_context *nfs, uint32_t v);
EXTERN void nfs_set_debug(struct nfs_context *nfs, int level);
EXTERN void nfs_set_dircache(struct nfs_context *nfs, int enabled);
EXTERN void nfs_set_autoreconnect(struct nfs_context *nfs, int enabled);
/*
* Invalidate the pagecache

View File

@ -72,6 +72,7 @@ nfs_rmdir
nfs_rmdir_async
nfs_service
nfs_set_auth
nfs_set_autoreconnect
nfs_set_debug
nfs_set_dircache
nfs_set_gid

View File

@ -148,6 +148,7 @@ struct nfs_context {
uint64_t writemax;
char *cwd;
int dircache_enabled;
int auto_reconnect_enabled;
struct nfsdir *dircache;
uint16_t mask;
@ -360,6 +361,8 @@ static int nfs_set_context_args(struct nfs_context *nfs, const char *arg, const
nfs->auto_traverse_mounts = atoi(val);
} else if (!strcmp(arg, "dircache")) {
nfs_set_dircache(nfs, atoi(val));
} else if (!strcmp(arg, "autoreconnect")) {
nfs_set_autoreconnect(nfs, atoi(val));
#ifdef HAVE_SO_BINDTODEVICE
} else if (!strcmp(arg, "if")) {
nfs_set_interface(nfs, val);
@ -529,6 +532,7 @@ struct nfs_context *nfs_init_context(void)
nfs->mask = 022;
nfs->auto_traverse_mounts = 1;
nfs->dircache_enabled = 1;
nfs->auto_reconnect_enabled = 1;
return nfs;
}
@ -1022,7 +1026,8 @@ static void nfs_mount_9_cb(struct rpc_context *rpc, int status, void *command_da
/* NFS TCP connections should be autoreconnected after sessions have
* been torn down (due to inactivity or error)
*/
rpc_set_autoreconnect(rpc);
if (nfs->auto_reconnect_enabled)
rpc_set_autoreconnect(rpc);
args.fsroot = nfs->rootfh;
if (rpc_nfs3_fsinfo_async(rpc, nfs_mount_10_cb, &args, data) != 0) {
@ -5599,6 +5604,10 @@ void nfs_set_dircache(struct nfs_context *nfs, int enabled) {
nfs->dircache_enabled = enabled;
}
void nfs_set_autoreconnect(struct nfs_context *nfs, int enabled) {
nfs->auto_reconnect_enabled = enabled;
}
void nfs_set_error(struct nfs_context *nfs, char *error_string, ...)
{
va_list ap;