configfs: fold create_dir() into its only caller
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 29 Jan 2015 05:20:49 +0000 (00:20 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 18 Feb 2015 03:16:35 +0000 (22:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/configfs/dir.c

index 6371ba1..cf0db00 100644 (file)
@@ -260,37 +260,6 @@ static void init_symlink(struct inode * inode)
        inode->i_op = &configfs_symlink_inode_operations;
 }
 
-static int create_dir(struct config_item *k, struct dentry *d)
-{
-       int error;
-       umode_t mode = S_IFDIR| S_IRWXU | S_IRUGO | S_IXUGO;
-       struct dentry *p = d->d_parent;
-
-       BUG_ON(!k);
-
-       error = configfs_dirent_exists(p->d_fsdata, d->d_name.name);
-       if (!error)
-               error = configfs_make_dirent(p->d_fsdata, d, k, mode,
-                                            CONFIGFS_DIR | CONFIGFS_USET_CREATING);
-       if (!error) {
-               configfs_set_dir_dirent_depth(p->d_fsdata, d->d_fsdata);
-               error = configfs_create(d, mode, init_dir);
-               if (!error) {
-                       inc_nlink(p->d_inode);
-               } else {
-                       struct configfs_dirent *sd = d->d_fsdata;
-                       if (sd) {
-                               spin_lock(&configfs_dirent_lock);
-                               list_del_init(&sd->s_sibling);
-                               spin_unlock(&configfs_dirent_lock);
-                               configfs_put(sd);
-                       }
-               }
-       }
-       return error;
-}
-
-
 /**
  *     configfs_create_dir - create a directory for an config_item.
  *     @item:          config_itemwe're creating directory for.
@@ -300,11 +269,37 @@ static int create_dir(struct config_item *k, struct dentry *d)
  *     until it is validated by configfs_dir_set_ready()
  */
 
-static int configfs_create_dir(struct config_item * item, struct dentry *dentry)
+static int configfs_create_dir(struct config_item *item, struct dentry *dentry)
 {
-       int error = create_dir(item, dentry);
-       if (!error)
+       int error;
+       umode_t mode = S_IFDIR| S_IRWXU | S_IRUGO | S_IXUGO;
+       struct dentry *p = dentry->d_parent;
+
+       BUG_ON(!item);
+
+       error = configfs_dirent_exists(p->d_fsdata, dentry->d_name.name);
+       if (unlikely(error))
+               return error;
+
+       error = configfs_make_dirent(p->d_fsdata, dentry, item, mode,
+                                    CONFIGFS_DIR | CONFIGFS_USET_CREATING);
+       if (unlikely(error))
+               return error;
+
+       configfs_set_dir_dirent_depth(p->d_fsdata, dentry->d_fsdata);
+       error = configfs_create(dentry, mode, init_dir);
+       if (!error) {
+               inc_nlink(p->d_inode);
                item->ci_dentry = dentry;
+       } else {
+               struct configfs_dirent *sd = dentry->d_fsdata;
+               if (sd) {
+                       spin_lock(&configfs_dirent_lock);
+                       list_del_init(&sd->s_sibling);
+                       spin_unlock(&configfs_dirent_lock);
+                       configfs_put(sd);
+               }
+       }
        return error;
 }