Skip to content

Commit

Permalink
fs: configfs: Factor out configfs_find_subsys_dentry()
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Joel Becker <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Signed-off-by: Nicholas Bellinger <[email protected]>
  • Loading branch information
kopasiak authored and Nicholas Bellinger committed Dec 21, 2015
1 parent 9fb434e commit 9a70adf
Showing 1 changed file with 21 additions and 12 deletions.
33 changes: 21 additions & 12 deletions fs/configfs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1079,11 +1079,30 @@ static int configfs_do_depend_item(struct dentry *subsys_dentry,
return ret;
}

static inline struct configfs_dirent *
configfs_find_subsys_dentry(struct configfs_dirent *root_sd,
struct config_item *subsys_item)
{
struct configfs_dirent *p;
struct configfs_dirent *ret = NULL;

list_for_each_entry(p, &root_sd->s_children, s_sibling) {
if (p->s_type & CONFIGFS_DIR &&
p->s_element == subsys_item) {
ret = p;
break;
}
}

return ret;
}


int configfs_depend_item(struct configfs_subsystem *subsys,
struct config_item *target)
{
int ret;
struct configfs_dirent *p, *root_sd, *subsys_sd = NULL;
struct configfs_dirent *subsys_sd;
struct config_item *s_item = &subsys->su_group.cg_item;
struct dentry *root;

Expand All @@ -1102,17 +1121,7 @@ int configfs_depend_item(struct configfs_subsystem *subsys,
*/
mutex_lock(&d_inode(root)->i_mutex);

root_sd = root->d_fsdata;

list_for_each_entry(p, &root_sd->s_children, s_sibling) {
if (p->s_type & CONFIGFS_DIR) {
if (p->s_element == s_item) {
subsys_sd = p;
break;
}
}
}

subsys_sd = configfs_find_subsys_dentry(root->d_fsdata, s_item);
if (!subsys_sd) {
ret = -ENOENT;
goto out_unlock_fs;
Expand Down

0 comments on commit 9a70adf

Please sign in to comment.