Lines Matching refs:nnode

26  * @nnode: nnode at which to start
30 static struct ubifs_cnode *first_dirty_cnode(const struct ubifs_info *c, struct ubifs_nnode *nnode)
32 ubifs_assert(c, nnode);
39 cnode = nnode->nbranch[i].cnode;
44 nnode = (struct ubifs_nnode *)cnode;
50 return (struct ubifs_cnode *)nnode;
63 struct ubifs_nnode *nnode;
67 nnode = cnode->parent;
68 if (!nnode)
71 cnode = nnode->nbranch[i].cnode;
75 /* cnode is a nnode */
79 return (struct ubifs_cnode *)nnode;
555 struct ubifs_nnode *nnode;
559 nnode = pnode->parent;
561 if (nnode->nbranch[iip].lnum)
562 return ubifs_get_pnode(c, nnode, iip);
567 iip = nnode->iip + 1;
568 nnode = nnode->parent;
569 if (!nnode)
572 if (nnode->nbranch[iip].lnum)
578 nnode = ubifs_get_nnode(c, nnode, iip);
579 if (IS_ERR(nnode))
580 return (void *)nnode;
583 while (nnode->level > 1) {
585 if (nnode->nbranch[iip].lnum)
595 nnode = ubifs_get_nnode(c, nnode, iip);
596 if (IS_ERR(nnode))
597 return (void *)nnode;
601 if (nnode->nbranch[iip].lnum)
606 return ubifs_get_pnode(c, nnode, iip);
629 struct ubifs_nnode *nnode;
634 nnode = pnode->parent;
635 while (nnode) {
636 if (!test_and_set_bit(DIRTY_CNODE, &nnode->flags)) {
638 ubifs_add_nnode_dirt(c, nnode);
639 nnode = nnode->parent;
815 * nnode_lookup - lookup a nnode in the LPT.
817 * @i: nnode number
819 * This function returns a pointer to the nnode on success or a negative
825 struct ubifs_nnode *nnode;
832 nnode = c->nroot;
838 nnode = ubifs_get_nnode(c, nnode, iip);
839 if (IS_ERR(nnode))
840 return nnode;
842 return nnode;
846 * make_nnode_dirty - find a nnode and, if found, make it dirty.
848 * @node_num: nnode number of nnode to make dirty
849 * @lnum: LEB number where nnode was written
850 * @offs: offset where nnode was written
863 struct ubifs_nnode *nnode;
865 nnode = nnode_lookup(c, node_num);
866 if (IS_ERR(nnode))
867 return PTR_ERR(nnode);
868 if (nnode->parent) {
871 branch = &nnode->parent->nbranch[nnode->iip];
873 return 0; /* nnode is obsolete */
875 return 0; /* nnode is obsolete */
877 if (!test_and_set_bit(DIRTY_CNODE, &nnode->flags)) {
879 ubifs_add_nnode_dirt(c, nnode);
881 nnode = nnode->parent;
882 while (nnode) {
883 if (!test_and_set_bit(DIRTY_CNODE, &nnode->flags)) {
885 ubifs_add_nnode_dirt(c, nnode);
886 nnode = nnode->parent;
1332 * first_nnode - find the first nnode in memory.
1334 * @hght: height of tree where nnode found is returned here
1336 * This function returns a pointer to the nnode found or %NULL if no nnode is
1341 struct ubifs_nnode *nnode;
1344 nnode = c->nroot;
1346 if (!nnode)
1351 if (nnode->nbranch[i].nnode) {
1353 nnode = nnode->nbranch[i].nnode;
1361 return nnode;
1365 * next_nnode - find the next nnode in memory.
1367 * @nnode: nnode from which to start.
1368 * @hght: height of tree where nnode is, is passed and returned here
1370 * This function returns a pointer to the nnode found or %NULL if no nnode is
1374 struct ubifs_nnode *nnode, int *hght)
1379 parent = nnode->parent;
1382 if (nnode->iip == UBIFS_LPT_FANOUT - 1) {
1386 for (iip = nnode->iip + 1; iip < UBIFS_LPT_FANOUT; iip++) {
1387 nnode = parent->nbranch[iip].nnode;
1388 if (nnode)
1391 if (!nnode) {
1398 if (nnode->nbranch[i].nnode) {
1400 nnode = nnode->nbranch[i].nnode;
1408 return nnode;
1418 struct ubifs_nnode *nnode;
1437 nnode = first_nnode(c, &hght);
1438 while (nnode) {
1440 kfree(nnode->nbranch[i].nnode);
1441 nnode = next_nnode(c, nnode, &hght);
1471 * dbg_is_nnode_dirty - determine if a nnode is dirty.
1473 * @lnum: LEB number where nnode was written
1474 * @offs: offset where nnode was written
1478 struct ubifs_nnode *nnode;
1482 nnode = first_nnode(c, &hght);
1483 for (; nnode; nnode = next_nnode(c, nnode, &hght)) {
1487 if (nnode->parent) {
1488 branch = &nnode->parent->nbranch[nnode->iip];
1491 if (test_bit(DIRTY_CNODE, &nnode->flags))
1497 if (test_bit(DIRTY_CNODE, &nnode->flags))
1891 struct ubifs_nnode nnode;
1895 pr_err("LEB %d:%d, nnode num %d, ",
1898 pr_err("LEB %d:%d, nnode, ",
1900 err = ubifs_unpack_nnode(c, p, &nnode);
1907 pr_cont("%d:%d", nnode.nbranch[i].lnum,
1908 nnode.nbranch[i].offs);