Lines Matching refs:znode
119 int insert_old_idx_znode(struct ubifs_info *c, struct ubifs_znode *znode) in insert_old_idx_znode() argument
121 if (znode->parent) { in insert_old_idx_znode()
124 zbr = &znode->parent->zbranch[znode->iip]; in insert_old_idx_znode()
142 struct ubifs_znode *znode) in ins_clr_old_idx_znode() argument
146 if (znode->parent) { in ins_clr_old_idx_znode()
149 zbr = &znode->parent->zbranch[znode->iip]; in ins_clr_old_idx_znode()
198 struct ubifs_znode *znode) in copy_znode() argument
202 zn = kmemdup(znode, c->max_znode_sz, GFP_NOFS); in copy_znode()
250 if (child->znode) in replace_znode()
251 child->znode->parent = new_zn; in replace_znode()
255 zbr->znode = new_zn; in replace_znode()
273 struct ubifs_znode *znode = zbr->znode; in dirty_cow_znode() local
277 if (!ubifs_zn_cow(znode)) { in dirty_cow_znode()
279 if (!test_and_set_bit(DIRTY_ZNODE, &znode->flags)) { in dirty_cow_znode()
287 return znode; in dirty_cow_znode()
290 zn = copy_znode(c, znode); in dirty_cow_znode()
314 replace_znode(c, zn, znode, zbr); in dirty_cow_znode()
619 struct ubifs_znode *znode, int n) in get_znode() argument
623 zbr = &znode->zbranch[n]; in get_znode()
624 if (zbr->znode) in get_znode()
625 znode = zbr->znode; in get_znode()
627 znode = ubifs_load_znode(c, zbr, znode, n); in get_znode()
628 return znode; in get_znode()
642 struct ubifs_znode *znode = *zn; in tnc_next() local
646 if (nn < znode->child_cnt) { in tnc_next()
653 zp = znode->parent; in tnc_next()
656 nn = znode->iip + 1; in tnc_next()
657 znode = zp; in tnc_next()
658 if (nn < znode->child_cnt) { in tnc_next()
659 znode = get_znode(c, znode, nn); in tnc_next()
660 if (IS_ERR(znode)) in tnc_next()
661 return PTR_ERR(znode); in tnc_next()
662 while (znode->level != 0) { in tnc_next()
663 znode = get_znode(c, znode, 0); in tnc_next()
664 if (IS_ERR(znode)) in tnc_next()
665 return PTR_ERR(znode); in tnc_next()
671 *zn = znode; in tnc_next()
687 struct ubifs_znode *znode = *zn; in tnc_prev() local
697 zp = znode->parent; in tnc_prev()
700 nn = znode->iip - 1; in tnc_prev()
701 znode = zp; in tnc_prev()
703 znode = get_znode(c, znode, nn); in tnc_prev()
704 if (IS_ERR(znode)) in tnc_prev()
705 return PTR_ERR(znode); in tnc_prev()
706 while (znode->level != 0) { in tnc_prev()
707 nn = znode->child_cnt - 1; in tnc_prev()
708 znode = get_znode(c, znode, nn); in tnc_prev()
709 if (IS_ERR(znode)) in tnc_prev()
710 return PTR_ERR(znode); in tnc_prev()
712 nn = znode->child_cnt - 1; in tnc_prev()
716 *zn = znode; in tnc_prev()
815 struct ubifs_znode *znode = *zn; in resolve_collision() local
819 err = tnc_next(c, &znode, &nn); in resolve_collision()
824 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision()
826 err = matches_name(c, &znode->zbranch[nn], nm); in resolve_collision()
831 *zn = znode; in resolve_collision()
931 struct ubifs_znode *o_znode = NULL, *znode = *zn; in fallible_resolve_collision() local
934 cmp = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
940 o_znode = znode; in fallible_resolve_collision()
999 *zn = znode; in fallible_resolve_collision()
1002 err = tnc_next(c, &znode, &nn); in fallible_resolve_collision()
1007 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in fallible_resolve_collision()
1009 err = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
1014 *zn = znode; in fallible_resolve_collision()
1019 o_znode = znode; in fallible_resolve_collision()
1075 struct ubifs_znode *znode; in resolve_collision_directly() local
1078 znode = *zn; in resolve_collision_directly()
1080 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1085 err = tnc_prev(c, &znode, &nn); in resolve_collision_directly()
1090 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1092 if (matches_position(&znode->zbranch[nn], lnum, offs)) { in resolve_collision_directly()
1093 *zn = znode; in resolve_collision_directly()
1100 znode = *zn; in resolve_collision_directly()
1103 err = tnc_next(c, &znode, &nn); in resolve_collision_directly()
1108 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1110 *zn = znode; in resolve_collision_directly()
1112 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1128 struct ubifs_znode *znode) in dirty_cow_bottom_up() argument
1133 ubifs_assert(c, c->zroot.znode); in dirty_cow_bottom_up()
1134 ubifs_assert(c, znode); in dirty_cow_bottom_up()
1135 if (c->zroot.znode->level > BOTTOM_UP_HEIGHT) { in dirty_cow_bottom_up()
1137 c->bottom_up_buf = kmalloc_array(c->zroot.znode->level, in dirty_cow_bottom_up()
1144 if (c->zroot.znode->level) { in dirty_cow_bottom_up()
1149 zp = znode->parent; in dirty_cow_bottom_up()
1152 n = znode->iip; in dirty_cow_bottom_up()
1153 ubifs_assert(c, p < c->zroot.znode->level); in dirty_cow_bottom_up()
1155 if (!zp->cnext && ubifs_zn_dirty(znode)) in dirty_cow_bottom_up()
1157 znode = zp; in dirty_cow_bottom_up()
1165 zp = znode->parent; in dirty_cow_bottom_up()
1170 znode = dirty_cow_znode(c, zbr); in dirty_cow_bottom_up()
1172 ubifs_assert(c, znode == c->zroot.znode); in dirty_cow_bottom_up()
1173 znode = dirty_cow_znode(c, &c->zroot); in dirty_cow_bottom_up()
1175 if (IS_ERR(znode) || !p) in dirty_cow_bottom_up()
1178 ubifs_assert(c, path[p - 1] < znode->child_cnt); in dirty_cow_bottom_up()
1179 znode = znode->zbranch[path[p - 1]].znode; in dirty_cow_bottom_up()
1182 return znode; in dirty_cow_bottom_up()
1211 struct ubifs_znode *znode; in ubifs_lookup_level0() local
1217 znode = c->zroot.znode; in ubifs_lookup_level0()
1218 if (unlikely(!znode)) { in ubifs_lookup_level0()
1219 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in ubifs_lookup_level0()
1220 if (IS_ERR(znode)) in ubifs_lookup_level0()
1221 return PTR_ERR(znode); in ubifs_lookup_level0()
1224 znode->time = time; in ubifs_lookup_level0()
1229 exact = ubifs_search_zbranch(c, znode, key, n); in ubifs_lookup_level0()
1231 if (znode->level == 0) in ubifs_lookup_level0()
1236 zbr = &znode->zbranch[*n]; in ubifs_lookup_level0()
1238 if (zbr->znode) { in ubifs_lookup_level0()
1239 znode->time = time; in ubifs_lookup_level0()
1240 znode = zbr->znode; in ubifs_lookup_level0()
1245 znode = ubifs_load_znode(c, zbr, znode, *n); in ubifs_lookup_level0()
1246 if (IS_ERR(znode)) in ubifs_lookup_level0()
1247 return PTR_ERR(znode); in ubifs_lookup_level0()
1250 *zn = znode; in ubifs_lookup_level0()
1252 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in ubifs_lookup_level0()
1299 err = tnc_prev(c, &znode, n); in ubifs_lookup_level0()
1301 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1307 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in ubifs_lookup_level0()
1308 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1313 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in ubifs_lookup_level0()
1314 *zn = znode; in ubifs_lookup_level0()
1347 struct ubifs_znode *znode; in lookup_level0_dirty() local
1352 znode = c->zroot.znode; in lookup_level0_dirty()
1353 if (unlikely(!znode)) { in lookup_level0_dirty()
1354 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_level0_dirty()
1355 if (IS_ERR(znode)) in lookup_level0_dirty()
1356 return PTR_ERR(znode); in lookup_level0_dirty()
1359 znode = dirty_cow_znode(c, &c->zroot); in lookup_level0_dirty()
1360 if (IS_ERR(znode)) in lookup_level0_dirty()
1361 return PTR_ERR(znode); in lookup_level0_dirty()
1363 znode->time = time; in lookup_level0_dirty()
1368 exact = ubifs_search_zbranch(c, znode, key, n); in lookup_level0_dirty()
1370 if (znode->level == 0) in lookup_level0_dirty()
1375 zbr = &znode->zbranch[*n]; in lookup_level0_dirty()
1377 if (zbr->znode) { in lookup_level0_dirty()
1378 znode->time = time; in lookup_level0_dirty()
1379 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1380 if (IS_ERR(znode)) in lookup_level0_dirty()
1381 return PTR_ERR(znode); in lookup_level0_dirty()
1386 znode = ubifs_load_znode(c, zbr, znode, *n); in lookup_level0_dirty()
1387 if (IS_ERR(znode)) in lookup_level0_dirty()
1388 return PTR_ERR(znode); in lookup_level0_dirty()
1389 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1390 if (IS_ERR(znode)) in lookup_level0_dirty()
1391 return PTR_ERR(znode); in lookup_level0_dirty()
1394 *zn = znode; in lookup_level0_dirty()
1396 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in lookup_level0_dirty()
1404 err = tnc_prev(c, &znode, n); in lookup_level0_dirty()
1407 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1412 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in lookup_level0_dirty()
1414 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1418 if (znode->cnext || !ubifs_zn_dirty(znode)) { in lookup_level0_dirty()
1419 znode = dirty_cow_bottom_up(c, znode); in lookup_level0_dirty()
1420 if (IS_ERR(znode)) in lookup_level0_dirty()
1421 return PTR_ERR(znode); in lookup_level0_dirty()
1424 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in lookup_level0_dirty()
1425 *zn = znode; in lookup_level0_dirty()
1482 struct ubifs_znode *znode; in ubifs_tnc_locate() local
1487 found = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_locate()
1495 zt = &znode->zbranch[n]; in ubifs_tnc_locate()
1513 zbr = znode->zbranch[n]; in ubifs_tnc_locate()
1557 struct ubifs_znode *znode; in ubifs_tnc_get_bu_keys() local
1565 err = ubifs_lookup_level0(c, &bu->key, &znode, &n); in ubifs_tnc_get_bu_keys()
1570 len = znode->zbranch[n].len; in ubifs_tnc_get_bu_keys()
1577 bu->zbranch[bu->cnt++] = znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1579 lnum = znode->zbranch[n].lnum; in ubifs_tnc_get_bu_keys()
1580 offs = ALIGN(znode->zbranch[n].offs + len, 8); in ubifs_tnc_get_bu_keys()
1588 err = tnc_next(c, &znode, &n); in ubifs_tnc_get_bu_keys()
1591 zbr = &znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1850 struct ubifs_znode *znode; in do_lookup_nm() local
1854 found = ubifs_lookup_level0(c, key, &znode, &n); in do_lookup_nm()
1865 err = resolve_collision(c, key, &znode, &n, nm); in do_lookup_nm()
1866 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in do_lookup_nm()
1874 err = tnc_read_hashed_node(c, &znode->zbranch[n], node); in do_lookup_nm()
1925 struct ubifs_znode *znode = *zn; in search_dh_cookie() local
1930 err = tnc_next(c, &znode, n); in search_dh_cookie()
1936 zbr = &znode->zbranch[*n]; in search_dh_cookie()
1950 *zn = znode; in search_dh_cookie()
1954 err = tnc_next(c, &znode, n); in search_dh_cookie()
1964 struct ubifs_znode *znode; in do_lookup_dh() local
1972 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in do_lookup_dh()
1976 err = search_dh_cookie(c, key, dent, cookie, &znode, &n, err); in do_lookup_dh()
2034 struct ubifs_znode *znode) in correct_parent_keys() argument
2038 ubifs_assert(c, znode->parent); in correct_parent_keys()
2039 ubifs_assert(c, znode->iip == 0); in correct_parent_keys()
2041 key = &znode->zbranch[0].key; in correct_parent_keys()
2042 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2046 znode = znode->parent; in correct_parent_keys()
2047 znode->alt = 1; in correct_parent_keys()
2048 if (!znode->parent || znode->iip) in correct_parent_keys()
2050 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2066 static void insert_zbranch(struct ubifs_info *c, struct ubifs_znode *znode, in insert_zbranch() argument
2071 ubifs_assert(c, ubifs_zn_dirty(znode)); in insert_zbranch()
2073 if (znode->level) { in insert_zbranch()
2074 for (i = znode->child_cnt; i > n; i--) { in insert_zbranch()
2075 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2076 if (znode->zbranch[i].znode) in insert_zbranch()
2077 znode->zbranch[i].znode->iip = i; in insert_zbranch()
2079 if (zbr->znode) in insert_zbranch()
2080 zbr->znode->iip = n; in insert_zbranch()
2082 for (i = znode->child_cnt; i > n; i--) in insert_zbranch()
2083 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2085 znode->zbranch[n] = *zbr; in insert_zbranch()
2086 znode->child_cnt += 1; in insert_zbranch()
2103 znode->alt = 1; in insert_zbranch()
2118 static int tnc_insert(struct ubifs_info *c, struct ubifs_znode *znode, in tnc_insert() argument
2129 zp = znode->parent; in tnc_insert()
2130 if (znode->child_cnt < c->fanout) { in tnc_insert()
2132 dbg_tnck(key, "inserted at %d level %d, key ", n, znode->level); in tnc_insert()
2134 insert_zbranch(c, znode, zbr, n); in tnc_insert()
2137 if (n == 0 && zp && znode->iip == 0) in tnc_insert()
2138 correct_parent_keys(c, znode); in tnc_insert()
2147 dbg_tnck(key, "splitting level %d, key ", znode->level); in tnc_insert()
2149 if (znode->alt) in tnc_insert()
2154 ins_clr_old_idx_znode(c, znode); in tnc_insert()
2160 zn->level = znode->level; in tnc_insert()
2163 if (znode->level == 0 && key_type(c, key) == UBIFS_DATA_KEY) { in tnc_insert()
2166 key1 = &znode->zbranch[n - 1].key; in tnc_insert()
2177 key1 = &znode->zbranch[0].key; in tnc_insert()
2180 key1 = &znode->zbranch[n].key; in tnc_insert()
2185 zi = znode; in tnc_insert()
2207 zi = znode; in tnc_insert()
2216 zbr->znode->parent = zn; in tnc_insert()
2225 znode->child_cnt = keep; in tnc_insert()
2231 zn->zbranch[i] = znode->zbranch[keep + i]; in tnc_insert()
2234 if (zn->zbranch[i].znode) { in tnc_insert()
2235 zn->zbranch[i].znode->parent = zn; in tnc_insert()
2236 zn->zbranch[i].znode->iip = i; in tnc_insert()
2247 if (n == 0 && zi == znode && znode->iip == 0) in tnc_insert()
2248 correct_parent_keys(c, znode); in tnc_insert()
2251 n = znode->iip + 1; in tnc_insert()
2255 zbr->znode = zn; in tnc_insert()
2259 znode = zp; in tnc_insert()
2265 dbg_tnc("creating new zroot at level %d", znode->level + 1); in tnc_insert()
2272 zi->level = znode->level + 1; in tnc_insert()
2277 zi->zbranch[0].key = znode->zbranch[0].key; in tnc_insert()
2278 zi->zbranch[0].znode = znode; in tnc_insert()
2283 zi->zbranch[1].znode = zn; in tnc_insert()
2288 c->zroot.znode = zi; in tnc_insert()
2292 znode->parent = zi; in tnc_insert()
2293 znode->iip = 0; in tnc_insert()
2315 struct ubifs_znode *znode; in ubifs_tnc_add() local
2319 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add()
2323 zbr.znode = NULL; in ubifs_tnc_add()
2329 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add()
2331 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add()
2366 struct ubifs_znode *znode; in ubifs_tnc_replace() local
2371 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_replace()
2378 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2391 found = resolve_collision_directly(c, key, &znode, &n, in ubifs_tnc_replace()
2394 found, znode, n, old_lnum, old_offs); in ubifs_tnc_replace()
2402 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_replace()
2403 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_replace()
2404 if (IS_ERR(znode)) { in ubifs_tnc_replace()
2405 err = PTR_ERR(znode); in ubifs_tnc_replace()
2409 zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2451 struct ubifs_znode *znode; in ubifs_tnc_add_nm() local
2455 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add_nm()
2463 found = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_add_nm()
2466 found = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_add_nm()
2467 dbg_tnc("rc returned %d, znode %p, n %d", found, znode, n); in ubifs_tnc_add_nm()
2474 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_add_nm()
2475 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_add_nm()
2476 if (IS_ERR(znode)) { in ubifs_tnc_add_nm()
2477 err = PTR_ERR(znode); in ubifs_tnc_add_nm()
2483 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add_nm()
2498 zbr.znode = NULL; in ubifs_tnc_add_nm()
2504 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add_nm()
2540 static int tnc_delete(struct ubifs_info *c, struct ubifs_znode *znode, int n) in tnc_delete() argument
2547 ubifs_assert(c, znode->level == 0); in tnc_delete()
2549 dbg_tnck(&znode->zbranch[n].key, "deleting key "); in tnc_delete()
2551 zbr = &znode->zbranch[n]; in tnc_delete()
2556 ubifs_dump_znode(c, znode); in tnc_delete()
2561 for (i = n; i < znode->child_cnt - 1; i++) in tnc_delete()
2562 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2563 znode->child_cnt -= 1; in tnc_delete()
2565 if (znode->child_cnt > 0) in tnc_delete()
2574 ubifs_assert(c, !ubifs_zn_obsolete(znode)); in tnc_delete()
2575 ubifs_assert(c, ubifs_zn_dirty(znode)); in tnc_delete()
2577 zp = znode->parent; in tnc_delete()
2578 n = znode->iip; in tnc_delete()
2582 err = insert_old_idx_znode(c, znode); in tnc_delete()
2586 if (znode->cnext) { in tnc_delete()
2587 __set_bit(OBSOLETE_ZNODE, &znode->flags); in tnc_delete()
2591 kfree(znode); in tnc_delete()
2592 znode = zp; in tnc_delete()
2593 } while (znode->child_cnt == 1); /* while removing last child */ in tnc_delete()
2596 znode->child_cnt -= 1; in tnc_delete()
2597 ubifs_assert(c, znode->level != 0); in tnc_delete()
2598 for (i = n; i < znode->child_cnt; i++) { in tnc_delete()
2599 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2600 if (znode->zbranch[i].znode) in tnc_delete()
2601 znode->zbranch[i].znode->iip = i; in tnc_delete()
2608 if (!znode->parent) { in tnc_delete()
2609 while (znode->child_cnt == 1 && znode->level != 0) { in tnc_delete()
2610 zp = znode; in tnc_delete()
2611 zbr = &znode->zbranch[0]; in tnc_delete()
2612 znode = get_znode(c, znode, 0); in tnc_delete()
2613 if (IS_ERR(znode)) in tnc_delete()
2614 return PTR_ERR(znode); in tnc_delete()
2615 znode = dirty_cow_znode(c, zbr); in tnc_delete()
2616 if (IS_ERR(znode)) in tnc_delete()
2617 return PTR_ERR(znode); in tnc_delete()
2618 znode->parent = NULL; in tnc_delete()
2619 znode->iip = 0; in tnc_delete()
2629 c->zroot.znode = znode; in tnc_delete()
2656 struct ubifs_znode *znode; in ubifs_tnc_remove() local
2660 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove()
2666 err = tnc_delete(c, znode, n); in ubifs_tnc_remove()
2687 struct ubifs_znode *znode; in ubifs_tnc_remove_nm() local
2691 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_nm()
2697 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_remove_nm()
2700 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_remove_nm()
2701 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in ubifs_tnc_remove_nm()
2706 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_nm()
2707 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_nm()
2708 if (IS_ERR(znode)) { in ubifs_tnc_remove_nm()
2709 err = PTR_ERR(znode); in ubifs_tnc_remove_nm()
2713 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_nm()
2736 struct ubifs_znode *znode; in ubifs_tnc_remove_dh() local
2744 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_dh()
2748 zbr = &znode->zbranch[n]; in ubifs_tnc_remove_dh()
2765 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in ubifs_tnc_remove_dh()
2769 err = search_dh_cookie(c, key, dent, cookie, &znode, &n, err); in ubifs_tnc_remove_dh()
2774 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_dh()
2775 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_dh()
2776 if (IS_ERR(znode)) { in ubifs_tnc_remove_dh()
2777 err = PTR_ERR(znode); in ubifs_tnc_remove_dh()
2781 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_dh()
2825 struct ubifs_znode *znode; in ubifs_tnc_remove_range() local
2831 err = ubifs_lookup_level0(c, from_key, &znode, &n); in ubifs_tnc_remove_range()
2838 err = tnc_next(c, &znode, &n); in ubifs_tnc_remove_range()
2845 key = &znode->zbranch[n].key; in ubifs_tnc_remove_range()
2853 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_range()
2854 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_range()
2855 if (IS_ERR(znode)) { in ubifs_tnc_remove_range()
2856 err = PTR_ERR(znode); in ubifs_tnc_remove_range()
2862 for (i = n + 1, k = 0; i < znode->child_cnt; i++, k++) { in ubifs_tnc_remove_range()
2863 key = &znode->zbranch[i].key; in ubifs_tnc_remove_range()
2866 lnc_free(&znode->zbranch[i]); in ubifs_tnc_remove_range()
2867 err = ubifs_add_dirt(c, znode->zbranch[i].lnum, in ubifs_tnc_remove_range()
2868 znode->zbranch[i].len); in ubifs_tnc_remove_range()
2870 ubifs_dump_znode(c, znode); in ubifs_tnc_remove_range()
2876 for (i = n + 1 + k; i < znode->child_cnt; i++) in ubifs_tnc_remove_range()
2877 znode->zbranch[i - k] = znode->zbranch[i]; in ubifs_tnc_remove_range()
2878 znode->child_cnt -= k; in ubifs_tnc_remove_range()
2882 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_range()
2991 struct ubifs_znode *znode; in ubifs_tnc_next_ent() local
3000 err = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_next_ent()
3008 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_next_ent()
3011 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_next_ent()
3013 err, znode, n); in ubifs_tnc_next_ent()
3019 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
3034 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
3040 zbr = &znode->zbranch[n]; in ubifs_tnc_next_ent()
3087 struct ubifs_znode *znode = cnext; in tnc_destroy_cnext() local
3090 if (ubifs_zn_obsolete(znode)) in tnc_destroy_cnext()
3091 kfree(znode); in tnc_destroy_cnext()
3092 else if (!ubifs_zn_cow(znode)) { in tnc_destroy_cnext()
3132 struct ubifs_znode *znode) in left_znode() argument
3134 int level = znode->level; in left_znode()
3137 int n = znode->iip - 1; in left_znode()
3140 znode = znode->parent; in left_znode()
3141 if (!znode) in left_znode()
3145 znode = get_znode(c, znode, n); in left_znode()
3146 if (IS_ERR(znode)) in left_znode()
3147 return znode; in left_znode()
3148 while (znode->level != level) { in left_znode()
3149 n = znode->child_cnt - 1; in left_znode()
3150 znode = get_znode(c, znode, n); in left_znode()
3151 if (IS_ERR(znode)) in left_znode()
3152 return znode; in left_znode()
3157 return znode; in left_znode()
3169 struct ubifs_znode *znode) in right_znode() argument
3171 int level = znode->level; in right_znode()
3174 int n = znode->iip + 1; in right_znode()
3177 znode = znode->parent; in right_znode()
3178 if (!znode) in right_znode()
3180 if (n < znode->child_cnt) { in right_znode()
3182 znode = get_znode(c, znode, n); in right_znode()
3183 if (IS_ERR(znode)) in right_znode()
3184 return znode; in right_znode()
3185 while (znode->level != level) { in right_znode()
3186 znode = get_znode(c, znode, 0); in right_znode()
3187 if (IS_ERR(znode)) in right_znode()
3188 return znode; in right_znode()
3193 return znode; in right_znode()
3225 struct ubifs_znode *znode, *zn; in lookup_znode() local
3238 znode = c->zroot.znode; in lookup_znode()
3239 if (!znode) { in lookup_znode()
3240 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_znode()
3241 if (IS_ERR(znode)) in lookup_znode()
3242 return znode; in lookup_znode()
3246 return znode; in lookup_znode()
3248 if (level >= znode->level) in lookup_znode()
3251 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3261 znode = left_znode(c, znode); in lookup_znode()
3262 if (!znode) in lookup_znode()
3264 if (IS_ERR(znode)) in lookup_znode()
3265 return znode; in lookup_znode()
3266 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3269 if (znode->level == level + 1) in lookup_znode()
3271 znode = get_znode(c, znode, n); in lookup_znode()
3272 if (IS_ERR(znode)) in lookup_znode()
3273 return znode; in lookup_znode()
3276 if (znode->zbranch[n].lnum == lnum && znode->zbranch[n].offs == offs) in lookup_znode()
3277 return get_znode(c, znode, n); in lookup_znode()
3285 zn = znode; in lookup_znode()
3293 znode = left_znode(c, znode); in lookup_znode()
3294 if (!znode) in lookup_znode()
3296 if (IS_ERR(znode)) in lookup_znode()
3297 return znode; in lookup_znode()
3298 n = znode->child_cnt - 1; in lookup_znode()
3301 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3302 znode->zbranch[n].offs == offs) in lookup_znode()
3303 return get_znode(c, znode, n); in lookup_znode()
3305 if (keys_cmp(c, &znode->zbranch[n].key, key) < 0) in lookup_znode()
3309 znode = zn; in lookup_znode()
3314 if (++n >= znode->child_cnt) { in lookup_znode()
3315 znode = right_znode(c, znode); in lookup_znode()
3316 if (!znode) in lookup_znode()
3318 if (IS_ERR(znode)) in lookup_znode()
3319 return znode; in lookup_znode()
3323 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3324 znode->zbranch[n].offs == offs) in lookup_znode()
3325 return get_znode(c, znode, n); in lookup_znode()
3327 if (keys_cmp(c, &znode->zbranch[n].key, key) > 0) in lookup_znode()
3353 struct ubifs_znode *znode; in is_idx_node_in_tnc() local
3355 znode = lookup_znode(c, key, level, lnum, offs); in is_idx_node_in_tnc()
3356 if (!znode) in is_idx_node_in_tnc()
3358 if (IS_ERR(znode)) in is_idx_node_in_tnc()
3359 return PTR_ERR(znode); in is_idx_node_in_tnc()
3361 return ubifs_zn_dirty(znode) ? 1 : 2; in is_idx_node_in_tnc()
3381 struct ubifs_znode *znode, *zn; in is_leaf_node_in_tnc() local
3385 found = ubifs_lookup_level0(c, key, &znode, &n); in is_leaf_node_in_tnc()
3390 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3399 zn = znode; in is_leaf_node_in_tnc()
3403 err = tnc_prev(c, &znode, &n); in is_leaf_node_in_tnc()
3408 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3410 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3415 znode = zn; in is_leaf_node_in_tnc()
3418 err = tnc_next(c, &znode, &n); in is_leaf_node_in_tnc()
3424 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3426 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3490 struct ubifs_znode *znode; in ubifs_dirty_idx_node() local
3494 znode = lookup_znode(c, key, level, lnum, offs); in ubifs_dirty_idx_node()
3495 if (!znode) in ubifs_dirty_idx_node()
3497 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3498 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3501 znode = dirty_cow_bottom_up(c, znode); in ubifs_dirty_idx_node()
3502 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3503 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3528 struct ubifs_znode *znode; in dbg_check_inode_size() local
3541 err = ubifs_lookup_level0(c, &from_key, &znode, &n); in dbg_check_inode_size()
3550 err = tnc_next(c, &znode, &n); in dbg_check_inode_size()
3559 key = &znode->zbranch[n].key; in dbg_check_inode_size()