rpc_create_*_dir: don't bother with qstr
just pass the name Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									e9a17bd73a
								
							
						
					
					
						commit
						a95e691f9c
					
				| @ -73,12 +73,12 @@ extern ssize_t rpc_pipe_generic_upcall(struct file *, struct rpc_pipe_msg *, | ||||
| extern int rpc_queue_upcall(struct rpc_pipe *, struct rpc_pipe_msg *); | ||||
| 
 | ||||
| struct rpc_clnt; | ||||
| extern struct dentry *rpc_create_client_dir(struct dentry *, struct qstr *, struct rpc_clnt *); | ||||
| extern struct dentry *rpc_create_client_dir(struct dentry *, const char *, struct rpc_clnt *); | ||||
| extern int rpc_remove_client_dir(struct dentry *); | ||||
| 
 | ||||
| struct cache_detail; | ||||
| extern struct dentry *rpc_create_cache_dir(struct dentry *, | ||||
| 					   struct qstr *, | ||||
| 					   const char *, | ||||
| 					   umode_t umode, | ||||
| 					   struct cache_detail *); | ||||
| extern void rpc_remove_cache_dir(struct dentry *); | ||||
|  | ||||
| @ -1812,19 +1812,11 @@ int sunrpc_cache_register_pipefs(struct dentry *parent, | ||||
| 				 const char *name, umode_t umode, | ||||
| 				 struct cache_detail *cd) | ||||
| { | ||||
| 	struct qstr q; | ||||
| 	struct dentry *dir; | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	q.name = name; | ||||
| 	q.len = strlen(name); | ||||
| 	q.hash = full_name_hash(q.name, q.len); | ||||
| 	dir = rpc_create_cache_dir(parent, &q, umode, cd); | ||||
| 	if (!IS_ERR(dir)) | ||||
| 		cd->u.pipefs.dir = dir; | ||||
| 	else | ||||
| 		ret = PTR_ERR(dir); | ||||
| 	return ret; | ||||
| 	struct dentry *dir = rpc_create_cache_dir(parent, name, umode, cd); | ||||
| 	if (IS_ERR(dir)) | ||||
| 		return PTR_ERR(dir); | ||||
| 	cd->u.pipefs.dir = dir; | ||||
| 	return 0; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(sunrpc_cache_register_pipefs); | ||||
| 
 | ||||
|  | ||||
| @ -128,9 +128,7 @@ static struct dentry *rpc_setup_pipedir_sb(struct super_block *sb, | ||||
| { | ||||
| 	static uint32_t clntid; | ||||
| 	char name[15]; | ||||
| 	struct qstr q = { .name = name }; | ||||
| 	struct dentry *dir, *dentry; | ||||
| 	int error; | ||||
| 
 | ||||
| 	dir = rpc_d_lookup_sb(sb, dir_name); | ||||
| 	if (dir == NULL) { | ||||
| @ -138,19 +136,17 @@ static struct dentry *rpc_setup_pipedir_sb(struct super_block *sb, | ||||
| 		return dir; | ||||
| 	} | ||||
| 	for (;;) { | ||||
| 		q.len = snprintf(name, sizeof(name), "clnt%x", (unsigned int)clntid++); | ||||
| 		snprintf(name, sizeof(name), "clnt%x", (unsigned int)clntid++); | ||||
| 		name[sizeof(name) - 1] = '\0'; | ||||
| 		q.hash = full_name_hash(q.name, q.len); | ||||
| 		dentry = rpc_create_client_dir(dir, &q, clnt); | ||||
| 		dentry = rpc_create_client_dir(dir, name, clnt); | ||||
| 		if (!IS_ERR(dentry)) | ||||
| 			break; | ||||
| 		error = PTR_ERR(dentry); | ||||
| 		if (error != -EEXIST) { | ||||
| 			printk(KERN_INFO "RPC: Couldn't create pipefs entry" | ||||
| 					" %s/%s, error %d\n", | ||||
| 					dir_name, name, error); | ||||
| 			break; | ||||
| 		} | ||||
| 		if (dentry == ERR_PTR(-EEXIST)) | ||||
| 			continue; | ||||
| 		printk(KERN_INFO "RPC: Couldn't create pipefs entry" | ||||
| 				" %s/%s, error %ld\n", | ||||
| 				dir_name, name, PTR_ERR(dentry)); | ||||
| 		break; | ||||
| 	} | ||||
| 	dput(dir); | ||||
| 	return dentry; | ||||
|  | ||||
| @ -770,15 +770,17 @@ out_bad: | ||||
| } | ||||
| 
 | ||||
| static struct dentry *rpc_mkdir_populate(struct dentry *parent, | ||||
| 		struct qstr *name, umode_t mode, void *private, | ||||
| 		const char *name, umode_t mode, void *private, | ||||
| 		int (*populate)(struct dentry *, void *), void *args_populate) | ||||
| { | ||||
| 	struct dentry *dentry; | ||||
| 	struct qstr q = QSTR_INIT(name, strlen(name)); | ||||
| 	struct inode *dir = parent->d_inode; | ||||
| 	int error; | ||||
| 
 | ||||
| 	q.hash = full_name_hash(q.name, q.len); | ||||
| 	mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT); | ||||
| 	dentry = __rpc_lookup_create_exclusive(parent, name); | ||||
| 	dentry = __rpc_lookup_create_exclusive(parent, &q); | ||||
| 	if (IS_ERR(dentry)) | ||||
| 		goto out; | ||||
| 	error = __rpc_mkdir(dir, dentry, mode, NULL, private); | ||||
| @ -925,8 +927,8 @@ static void rpc_clntdir_depopulate(struct dentry *dentry) | ||||
| 
 | ||||
| /**
 | ||||
|  * rpc_create_client_dir - Create a new rpc_client directory in rpc_pipefs | ||||
|  * @dentry: dentry from the rpc_pipefs root to the new directory | ||||
|  * @name: &struct qstr for the name | ||||
|  * @dentry: the parent of new directory | ||||
|  * @name: the name of new directory | ||||
|  * @rpc_client: rpc client to associate with this directory | ||||
|  * | ||||
|  * This creates a directory at the given @path associated with | ||||
| @ -935,7 +937,7 @@ static void rpc_clntdir_depopulate(struct dentry *dentry) | ||||
|  * later be created using rpc_mkpipe(). | ||||
|  */ | ||||
| struct dentry *rpc_create_client_dir(struct dentry *dentry, | ||||
| 				   struct qstr *name, | ||||
| 				   const char *name, | ||||
| 				   struct rpc_clnt *rpc_client) | ||||
| { | ||||
| 	return rpc_mkdir_populate(dentry, name, S_IRUGO | S_IXUGO, NULL, | ||||
| @ -981,7 +983,7 @@ static void rpc_cachedir_depopulate(struct dentry *dentry) | ||||
| 	rpc_depopulate(dentry, cache_pipefs_files, 0, 3); | ||||
| } | ||||
| 
 | ||||
| struct dentry *rpc_create_cache_dir(struct dentry *parent, struct qstr *name, | ||||
| struct dentry *rpc_create_cache_dir(struct dentry *parent, const char *name, | ||||
| 				    umode_t umode, struct cache_detail *cd) | ||||
| { | ||||
| 	return rpc_mkdir_populate(parent, name, umode, NULL, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user