diff options
author | Krzysztof Opasiak | 2015-12-11 16:06:10 +0100 |
---|---|---|
committer | Nicholas Bellinger | 2015-12-20 18:03:59 -0800 |
commit | 9fb434e7544b5013d1c2d8a2306f8b562cb52d80 (patch) | |
tree | e7ac8f098491f1d1b9c30239176169882946147d /fs/configfs/dir.c | |
parent | 9a9e3415edd567813d52c8de402042b9720c54f5 (diff) |
fs: configfs: Factor out configfs_do_depend_item()
configfs_depend_item() is quite complicated and should
be split up into smaller functions. This also allow to
share this code with other functions.
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'fs/configfs/dir.c')
-rw-r--r-- | fs/configfs/dir.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c index d390245965b1..43decd26851c 100644 --- a/fs/configfs/dir.c +++ b/fs/configfs/dir.c @@ -1054,6 +1054,31 @@ out: return ret; } +static int configfs_do_depend_item(struct dentry *subsys_dentry, + struct config_item *target) +{ + struct configfs_dirent *p; + int ret; + + spin_lock(&configfs_dirent_lock); + /* Scan the tree, return 0 if found */ + ret = configfs_depend_prep(subsys_dentry, target); + if (ret) + goto out_unlock_dirent_lock; + + /* + * We are sure that the item is not about to be removed by rmdir(), and + * not in the middle of attachment by mkdir(). + */ + p = target->ci_dentry->d_fsdata; + p->s_dependent_count += 1; + +out_unlock_dirent_lock: + spin_unlock(&configfs_dirent_lock); + + return ret; +} + int configfs_depend_item(struct configfs_subsystem *subsys, struct config_item *target) { @@ -1094,22 +1119,8 @@ int configfs_depend_item(struct configfs_subsystem *subsys, } /* Ok, now we can trust subsys/s_item */ + ret = configfs_do_depend_item(subsys_sd->s_dentry, target); - spin_lock(&configfs_dirent_lock); - /* Scan the tree, return 0 if found */ - ret = configfs_depend_prep(subsys_sd->s_dentry, target); - if (ret) - goto out_unlock_dirent_lock; - - /* - * We are sure that the item is not about to be removed by rmdir(), and - * not in the middle of attachment by mkdir(). - */ - p = target->ci_dentry->d_fsdata; - p->s_dependent_count += 1; - -out_unlock_dirent_lock: - spin_unlock(&configfs_dirent_lock); out_unlock_fs: mutex_unlock(&d_inode(root)->i_mutex); |