• Home
  • Raw
  • Download

Lines Matching refs:pos

354 		struct kernfs_node *pos;  in kernfs_link_sibling()  local
357 pos = rb_to_kn(*node); in kernfs_link_sibling()
359 result = kernfs_sd_compare(kn, pos); in kernfs_link_sibling()
361 node = &pos->rb.rb_left; in kernfs_link_sibling()
363 node = &pos->rb.rb_right; in kernfs_link_sibling()
1189 static struct kernfs_node *kernfs_leftmost_descendant(struct kernfs_node *pos) in kernfs_leftmost_descendant() argument
1196 last = pos; in kernfs_leftmost_descendant()
1198 if (kernfs_type(pos) != KERNFS_DIR) in kernfs_leftmost_descendant()
1201 rbn = rb_first(&pos->dir.children); in kernfs_leftmost_descendant()
1205 pos = rb_to_kn(rbn); in kernfs_leftmost_descendant()
1220 static struct kernfs_node *kernfs_next_descendant_post(struct kernfs_node *pos, in kernfs_next_descendant_post() argument
1228 if (!pos) in kernfs_next_descendant_post()
1232 if (pos == root) in kernfs_next_descendant_post()
1236 rbn = rb_next(&pos->rb); in kernfs_next_descendant_post()
1241 return pos->parent; in kernfs_next_descendant_post()
1259 struct kernfs_node *pos; in kernfs_activate() local
1263 pos = NULL; in kernfs_activate()
1264 while ((pos = kernfs_next_descendant_post(pos, kn))) { in kernfs_activate()
1265 if (!pos || (pos->flags & KERNFS_ACTIVATED)) in kernfs_activate()
1268 WARN_ON_ONCE(pos->parent && RB_EMPTY_NODE(&pos->rb)); in kernfs_activate()
1269 WARN_ON_ONCE(atomic_read(&pos->active) != KN_DEACTIVATED_BIAS); in kernfs_activate()
1271 atomic_sub(KN_DEACTIVATED_BIAS, &pos->active); in kernfs_activate()
1272 pos->flags |= KERNFS_ACTIVATED; in kernfs_activate()
1280 struct kernfs_node *pos; in __kernfs_remove() local
1295 pos = NULL; in __kernfs_remove()
1296 while ((pos = kernfs_next_descendant_post(pos, kn))) in __kernfs_remove()
1297 if (kernfs_active(pos)) in __kernfs_remove()
1298 atomic_add(KN_DEACTIVATED_BIAS, &pos->active); in __kernfs_remove()
1302 pos = kernfs_leftmost_descendant(kn); in __kernfs_remove()
1310 kernfs_get(pos); in __kernfs_remove()
1319 kernfs_drain(pos); in __kernfs_remove()
1327 if (!pos->parent || kernfs_unlink_sibling(pos)) { in __kernfs_remove()
1329 pos->parent ? pos->parent->iattr : NULL; in __kernfs_remove()
1337 kernfs_put(pos); in __kernfs_remove()
1340 kernfs_put(pos); in __kernfs_remove()
1341 } while (pos != kn); in __kernfs_remove()
1611 struct kernfs_node *parent, loff_t hash, struct kernfs_node *pos) in kernfs_dir_pos() argument
1613 if (pos) { in kernfs_dir_pos()
1614 int valid = kernfs_active(pos) && in kernfs_dir_pos()
1615 pos->parent == parent && hash == pos->hash; in kernfs_dir_pos()
1616 kernfs_put(pos); in kernfs_dir_pos()
1618 pos = NULL; in kernfs_dir_pos()
1620 if (!pos && (hash > 1) && (hash < INT_MAX)) { in kernfs_dir_pos()
1623 pos = rb_to_kn(node); in kernfs_dir_pos()
1625 if (hash < pos->hash) in kernfs_dir_pos()
1627 else if (hash > pos->hash) in kernfs_dir_pos()
1634 while (pos && (!kernfs_active(pos) || pos->ns != ns)) { in kernfs_dir_pos()
1635 struct rb_node *node = rb_next(&pos->rb); in kernfs_dir_pos()
1637 pos = NULL; in kernfs_dir_pos()
1639 pos = rb_to_kn(node); in kernfs_dir_pos()
1641 return pos; in kernfs_dir_pos()
1645 struct kernfs_node *parent, ino_t ino, struct kernfs_node *pos) in kernfs_dir_next_pos() argument
1647 pos = kernfs_dir_pos(ns, parent, ino, pos); in kernfs_dir_next_pos()
1648 if (pos) { in kernfs_dir_next_pos()
1650 struct rb_node *node = rb_next(&pos->rb); in kernfs_dir_next_pos()
1652 pos = NULL; in kernfs_dir_next_pos()
1654 pos = rb_to_kn(node); in kernfs_dir_next_pos()
1655 } while (pos && (!kernfs_active(pos) || pos->ns != ns)); in kernfs_dir_next_pos()
1657 return pos; in kernfs_dir_next_pos()
1664 struct kernfs_node *pos = file->private_data; in kernfs_fop_readdir() local
1674 for (pos = kernfs_dir_pos(ns, parent, ctx->pos, pos); in kernfs_fop_readdir()
1675 pos; in kernfs_fop_readdir()
1676 pos = kernfs_dir_next_pos(ns, parent, ctx->pos, pos)) { in kernfs_fop_readdir()
1677 const char *name = pos->name; in kernfs_fop_readdir()
1678 unsigned int type = dt_type(pos); in kernfs_fop_readdir()
1680 ino_t ino = pos->id.ino; in kernfs_fop_readdir()
1682 ctx->pos = pos->hash; in kernfs_fop_readdir()
1683 file->private_data = pos; in kernfs_fop_readdir()
1684 kernfs_get(pos); in kernfs_fop_readdir()
1693 ctx->pos = INT_MAX; in kernfs_fop_readdir()