Loading include/linux/sunrpc/rpc_pipe_fs.h +2 −2 Original line number Diff line number Diff line Loading @@ -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 *); Loading net/sunrpc/cache.c +5 −13 Original line number Diff line number Diff line Loading @@ -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)) struct dentry *dir = rpc_create_cache_dir(parent, name, umode, cd); if (IS_ERR(dir)) return PTR_ERR(dir); cd->u.pipefs.dir = dir; else ret = PTR_ERR(dir); return ret; return 0; } EXPORT_SYMBOL_GPL(sunrpc_cache_register_pipefs); Loading net/sunrpc/clnt.c +8 −12 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -138,20 +136,18 @@ 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) { if (dentry == ERR_PTR(-EEXIST)) continue; printk(KERN_INFO "RPC: Couldn't create pipefs entry" " %s/%s, error %d\n", dir_name, name, error); " %s/%s, error %ld\n", dir_name, name, PTR_ERR(dentry)); break; } } dput(dir); return dentry; } Loading net/sunrpc/rpc_pipe.c +8 −6 Original line number Diff line number Diff line Loading @@ -770,15 +770,17 @@ static int rpc_populate(struct dentry *parent, } 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); Loading Loading @@ -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 Loading @@ -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, Loading Loading @@ -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 Loading
include/linux/sunrpc/rpc_pipe_fs.h +2 −2 Original line number Diff line number Diff line Loading @@ -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 *); Loading
net/sunrpc/cache.c +5 −13 Original line number Diff line number Diff line Loading @@ -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)) struct dentry *dir = rpc_create_cache_dir(parent, name, umode, cd); if (IS_ERR(dir)) return PTR_ERR(dir); cd->u.pipefs.dir = dir; else ret = PTR_ERR(dir); return ret; return 0; } EXPORT_SYMBOL_GPL(sunrpc_cache_register_pipefs); Loading
net/sunrpc/clnt.c +8 −12 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -138,20 +136,18 @@ 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) { if (dentry == ERR_PTR(-EEXIST)) continue; printk(KERN_INFO "RPC: Couldn't create pipefs entry" " %s/%s, error %d\n", dir_name, name, error); " %s/%s, error %ld\n", dir_name, name, PTR_ERR(dentry)); break; } } dput(dir); return dentry; } Loading
net/sunrpc/rpc_pipe.c +8 −6 Original line number Diff line number Diff line Loading @@ -770,15 +770,17 @@ static int rpc_populate(struct dentry *parent, } 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); Loading Loading @@ -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 Loading @@ -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, Loading Loading @@ -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