Lines Matching refs:pos

240 		struct kernfs_node *pos;  in kernfs_link_sibling()  local
243 pos = rb_to_kn(*node); in kernfs_link_sibling()
245 result = kernfs_sd_compare(kn, pos); in kernfs_link_sibling()
247 node = &pos->rb.rb_left; in kernfs_link_sibling()
249 node = &pos->rb.rb_right; in kernfs_link_sibling()
938 static struct kernfs_node *kernfs_leftmost_descendant(struct kernfs_node *pos) in kernfs_leftmost_descendant() argument
945 last = pos; in kernfs_leftmost_descendant()
947 if (kernfs_type(pos) != KERNFS_DIR) in kernfs_leftmost_descendant()
950 rbn = rb_first(&pos->dir.children); in kernfs_leftmost_descendant()
954 pos = rb_to_kn(rbn); in kernfs_leftmost_descendant()
969 static struct kernfs_node *kernfs_next_descendant_post(struct kernfs_node *pos, in kernfs_next_descendant_post() argument
977 if (!pos) in kernfs_next_descendant_post()
981 if (pos == root) in kernfs_next_descendant_post()
985 rbn = rb_next(&pos->rb); in kernfs_next_descendant_post()
990 return pos->parent; in kernfs_next_descendant_post()
1008 struct kernfs_node *pos; in kernfs_activate() local
1012 pos = NULL; in kernfs_activate()
1013 while ((pos = kernfs_next_descendant_post(pos, kn))) { in kernfs_activate()
1014 if (!pos || (pos->flags & KERNFS_ACTIVATED)) in kernfs_activate()
1017 WARN_ON_ONCE(pos->parent && RB_EMPTY_NODE(&pos->rb)); in kernfs_activate()
1018 WARN_ON_ONCE(atomic_read(&pos->active) != KN_DEACTIVATED_BIAS); in kernfs_activate()
1020 atomic_sub(KN_DEACTIVATED_BIAS, &pos->active); in kernfs_activate()
1021 pos->flags |= KERNFS_ACTIVATED; in kernfs_activate()
1029 struct kernfs_node *pos; in __kernfs_remove() local
1044 pos = NULL; in __kernfs_remove()
1045 while ((pos = kernfs_next_descendant_post(pos, kn))) in __kernfs_remove()
1046 if (kernfs_active(pos)) in __kernfs_remove()
1047 atomic_add(KN_DEACTIVATED_BIAS, &pos->active); in __kernfs_remove()
1051 pos = kernfs_leftmost_descendant(kn); in __kernfs_remove()
1059 kernfs_get(pos); in __kernfs_remove()
1068 kernfs_drain(pos); in __kernfs_remove()
1076 if (!pos->parent || kernfs_unlink_sibling(pos)) { in __kernfs_remove()
1078 pos->parent ? pos->parent->iattr : NULL; in __kernfs_remove()
1086 kernfs_put(pos); in __kernfs_remove()
1089 kernfs_put(pos); in __kernfs_remove()
1090 } while (pos != kn); in __kernfs_remove()
1360 struct kernfs_node *parent, loff_t hash, struct kernfs_node *pos) in kernfs_dir_pos() argument
1362 if (pos) { in kernfs_dir_pos()
1363 int valid = kernfs_active(pos) && in kernfs_dir_pos()
1364 pos->parent == parent && hash == pos->hash; in kernfs_dir_pos()
1365 kernfs_put(pos); in kernfs_dir_pos()
1367 pos = NULL; in kernfs_dir_pos()
1369 if (!pos && (hash > 1) && (hash < INT_MAX)) { in kernfs_dir_pos()
1372 pos = rb_to_kn(node); in kernfs_dir_pos()
1374 if (hash < pos->hash) in kernfs_dir_pos()
1376 else if (hash > pos->hash) in kernfs_dir_pos()
1383 while (pos && (!kernfs_active(pos) || pos->ns != ns)) { in kernfs_dir_pos()
1384 struct rb_node *node = rb_next(&pos->rb); in kernfs_dir_pos()
1386 pos = NULL; in kernfs_dir_pos()
1388 pos = rb_to_kn(node); in kernfs_dir_pos()
1390 return pos; in kernfs_dir_pos()
1394 struct kernfs_node *parent, ino_t ino, struct kernfs_node *pos) in kernfs_dir_next_pos() argument
1396 pos = kernfs_dir_pos(ns, parent, ino, pos); in kernfs_dir_next_pos()
1397 if (pos) { in kernfs_dir_next_pos()
1399 struct rb_node *node = rb_next(&pos->rb); in kernfs_dir_next_pos()
1401 pos = NULL; in kernfs_dir_next_pos()
1403 pos = rb_to_kn(node); in kernfs_dir_next_pos()
1404 } while (pos && (!kernfs_active(pos) || pos->ns != ns)); in kernfs_dir_next_pos()
1406 return pos; in kernfs_dir_next_pos()
1413 struct kernfs_node *pos = file->private_data; in kernfs_fop_readdir() local
1423 for (pos = kernfs_dir_pos(ns, parent, ctx->pos, pos); in kernfs_fop_readdir()
1424 pos; in kernfs_fop_readdir()
1425 pos = kernfs_dir_next_pos(ns, parent, ctx->pos, pos)) { in kernfs_fop_readdir()
1426 const char *name = pos->name; in kernfs_fop_readdir()
1427 unsigned int type = dt_type(pos); in kernfs_fop_readdir()
1429 ino_t ino = pos->ino; in kernfs_fop_readdir()
1431 ctx->pos = pos->hash; in kernfs_fop_readdir()
1432 file->private_data = pos; in kernfs_fop_readdir()
1433 kernfs_get(pos); in kernfs_fop_readdir()
1442 ctx->pos = INT_MAX; in kernfs_fop_readdir()