aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysfs/dir.c
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2011-10-25 08:38:41 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-25 09:10:28 -0400
commitb9e2780d576a010d4aba1e69f247170bf3718d6b (patch)
tree54755015072a0200218b2cbd4e29e1495d398fc9 /fs/sysfs/dir.c
parentc9d6329c35869ebf2ff88a5831e8073d3365e8bd (diff)
sysfs: Remove support for tagged directories with untagged members (again)
In commit 8a9ea3237e7e ("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: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/sysfs/dir.c')
-rw-r--r--fs/sysfs/dir.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 0344ee70a47c..48ffbdf0d017 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -590,8 +590,8 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
590#undef node 590#undef node
591 } 591 }
592 592
593 if (found && ns) { 593 if (found) {
594 while (found->s_ns && found->s_ns != ns) { 594 while (found->s_ns != ns) {
595 p = rb_next(&found->name_node); 595 p = rb_next(&found->name_node);
596 if (!p) 596 if (!p)
597 return NULL; 597 return NULL;
@@ -947,7 +947,7 @@ static struct sysfs_dirent *sysfs_dir_pos(const void *ns,
947#undef node 947#undef node
948 } 948 }
949 } 949 }
950 while (pos && pos->s_ns && pos->s_ns != ns) { 950 while (pos && pos->s_ns != ns) {
951 struct rb_node *p = rb_next(&pos->inode_node); 951 struct rb_node *p = rb_next(&pos->inode_node);
952 if (!p) 952 if (!p)
953 pos = NULL; 953 pos = NULL;
@@ -967,7 +967,7 @@ static struct sysfs_dirent *sysfs_dir_next_pos(const void *ns,
967 pos = NULL; 967 pos = NULL;
968 else 968 else
969 pos = rb_entry(p, struct sysfs_dirent, inode_node); 969 pos = rb_entry(p, struct sysfs_dirent, inode_node);
970 } while (pos && pos->s_ns && pos->s_ns != ns); 970 } while (pos && pos->s_ns != ns);
971 return pos; 971 return pos;
972} 972}
973 973