Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a70adff authored by Krzysztof Opasiak's avatar Krzysztof Opasiak Committed by Nicholas Bellinger
Browse files

fs: configfs: Factor out configfs_find_subsys_dentry()



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: default avatarKrzysztof Opasiak <k.opasiak@samsung.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 9fb434e7
Loading
Loading
Loading
Loading
+21 −12
Original line number Diff line number Diff line
@@ -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;

@@ -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;