Commit b9e2780d authored by Eric W. Biederman's avatar Eric W. Biederman Committed by Linus Torvalds

sysfs: Remove support for tagged directories with untagged members (again)

In commit 8a9ea323 ("Merge git://.../davem/net-next") where my sysfs
changes from the net tree merged with the sysfs rbtree changes from
Mickulas Patocka the conflict resolution failed to preserve the
simplified property that was the point of my changes.

That is sysfs_find_dirent can now say something is a match if and only
s_name and s_ns match what we are looking for, and sysfs_readdir can
simply return all of the directory entries where s_ns matches the
directory that we should be returning.

Now that we are back to exact matches we can tweak sysfs_find_dirent and
the name rb_tree to order sysfs_dirents by s_ns s_name and remove the
second loop in sysfs_find_dirent.  However that change seems a bit much
for a conflict resolution so it can come later.
Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c9d6329c
...@@ -590,8 +590,8 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, ...@@ -590,8 +590,8 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
#undef node #undef node
} }
if (found && ns) { if (found) {
while (found->s_ns && found->s_ns != ns) { while (found->s_ns != ns) {
p = rb_next(&found->name_node); p = rb_next(&found->name_node);
if (!p) if (!p)
return NULL; return NULL;
...@@ -947,7 +947,7 @@ static struct sysfs_dirent *sysfs_dir_pos(const void *ns, ...@@ -947,7 +947,7 @@ static struct sysfs_dirent *sysfs_dir_pos(const void *ns,
#undef node #undef node
} }
} }
while (pos && pos->s_ns && pos->s_ns != ns) { while (pos && pos->s_ns != ns) {
struct rb_node *p = rb_next(&pos->inode_node); struct rb_node *p = rb_next(&pos->inode_node);
if (!p) if (!p)
pos = NULL; pos = NULL;
...@@ -967,7 +967,7 @@ static struct sysfs_dirent *sysfs_dir_next_pos(const void *ns, ...@@ -967,7 +967,7 @@ static struct sysfs_dirent *sysfs_dir_next_pos(const void *ns,
pos = NULL; pos = NULL;
else else
pos = rb_entry(p, struct sysfs_dirent, inode_node); pos = rb_entry(p, struct sysfs_dirent, inode_node);
} while (pos && pos->s_ns && pos->s_ns != ns); } while (pos && pos->s_ns != ns);
return pos; return pos;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment