diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-25 09:52:59 +0100 | 
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-25 09:52:59 +0100 | 
| commit | d1e16c1a61d68692dba346f4a841315343b085f4 (patch) | |
| tree | 249ec07d1489769fe83b4ec507708455cc0c5138 /fs/nfs/idmap.c | |
| parent | 1573ee81cb9ef24fa5acee6b7442e215e63ede2f (diff) | |
| parent | 6b16351acbd415e66ba16bf7d473ece1574cf0bc (diff) | |
| download | olio-linux-3.10-d1e16c1a61d68692dba346f4a841315343b085f4.tar.xz olio-linux-3.10-d1e16c1a61d68692dba346f4a841315343b085f4.zip  | |
Merge tag 'v3.5-rc4' into for-3.6
Linux 3.5-rc4 contains some bug fixes which overlap with new features.
Diffstat (limited to 'fs/nfs/idmap.c')
| -rw-r--r-- | fs/nfs/idmap.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/fs/nfs/idmap.c b/fs/nfs/idmap.c index b5b86a05059..864c51e4b40 100644 --- a/fs/nfs/idmap.c +++ b/fs/nfs/idmap.c @@ -57,6 +57,11 @@ unsigned int nfs_idmap_cache_timeout = 600;  static const struct cred *id_resolver_cache;  static struct key_type key_type_id_resolver_legacy; +struct idmap { +	struct rpc_pipe		*idmap_pipe; +	struct key_construction	*idmap_key_cons; +	struct mutex		idmap_mutex; +};  /**   * nfs_fattr_init_names - initialise the nfs_fattr owner_name/group_name fields @@ -310,9 +315,11 @@ static ssize_t nfs_idmap_get_key(const char *name, size_t namelen,  					    name, namelen, type, data,  					    data_size, NULL);  	if (ret < 0) { +		mutex_lock(&idmap->idmap_mutex);  		ret = nfs_idmap_request_key(&key_type_id_resolver_legacy,  					    name, namelen, type, data,  					    data_size, idmap); +		mutex_unlock(&idmap->idmap_mutex);  	}  	return ret;  } @@ -354,11 +361,6 @@ static int nfs_idmap_lookup_id(const char *name, size_t namelen, const char *typ  /* idmap classic begins here */  module_param(nfs_idmap_cache_timeout, int, 0644); -struct idmap { -	struct rpc_pipe		*idmap_pipe; -	struct key_construction	*idmap_key_cons; -}; -  enum {  	Opt_find_uid, Opt_find_gid, Opt_find_user, Opt_find_group, Opt_find_err  }; @@ -469,6 +471,7 @@ nfs_idmap_new(struct nfs_client *clp)  		return error;  	}  	idmap->idmap_pipe = pipe; +	mutex_init(&idmap->idmap_mutex);  	clp->cl_idmap = idmap;  	return 0;  |