Lines Matching refs:znode

111 int insert_old_idx_znode(struct ubifs_info *c, struct ubifs_znode *znode)  in insert_old_idx_znode()  argument
113 if (znode->parent) { in insert_old_idx_znode()
116 zbr = &znode->parent->zbranch[znode->iip]; in insert_old_idx_znode()
134 struct ubifs_znode *znode) in ins_clr_old_idx_znode() argument
138 if (znode->parent) { in ins_clr_old_idx_znode()
141 zbr = &znode->parent->zbranch[znode->iip]; in ins_clr_old_idx_znode()
190 struct ubifs_znode *znode) in copy_znode() argument
194 zn = kmemdup(znode, c->max_znode_sz, GFP_NOFS); in copy_znode()
202 ubifs_assert(c, !ubifs_zn_obsolete(znode)); in copy_znode()
203 __set_bit(OBSOLETE_ZNODE, &znode->flags); in copy_znode()
205 if (znode->level != 0) { in copy_znode()
213 if (zbr->znode) in copy_znode()
214 zbr->znode->parent = zn; in copy_znode()
246 struct ubifs_znode *znode = zbr->znode; in dirty_cow_znode() local
250 if (!ubifs_zn_cow(znode)) { in dirty_cow_znode()
252 if (!test_and_set_bit(DIRTY_ZNODE, &znode->flags)) { in dirty_cow_znode()
260 return znode; in dirty_cow_znode()
263 zn = copy_znode(c, znode); in dirty_cow_znode()
275 zbr->znode = zn; in dirty_cow_znode()
581 struct ubifs_znode *znode, int n) in get_znode() argument
585 zbr = &znode->zbranch[n]; in get_znode()
586 if (zbr->znode) in get_znode()
587 znode = zbr->znode; in get_znode()
589 znode = ubifs_load_znode(c, zbr, znode, n); in get_znode()
590 return znode; in get_znode()
604 struct ubifs_znode *znode = *zn; in tnc_next() local
608 if (nn < znode->child_cnt) { in tnc_next()
615 zp = znode->parent; in tnc_next()
618 nn = znode->iip + 1; in tnc_next()
619 znode = zp; in tnc_next()
620 if (nn < znode->child_cnt) { in tnc_next()
621 znode = get_znode(c, znode, nn); in tnc_next()
622 if (IS_ERR(znode)) in tnc_next()
623 return PTR_ERR(znode); in tnc_next()
624 while (znode->level != 0) { in tnc_next()
625 znode = get_znode(c, znode, 0); in tnc_next()
626 if (IS_ERR(znode)) in tnc_next()
627 return PTR_ERR(znode); in tnc_next()
633 *zn = znode; in tnc_next()
649 struct ubifs_znode *znode = *zn; in tnc_prev() local
659 zp = znode->parent; in tnc_prev()
662 nn = znode->iip - 1; in tnc_prev()
663 znode = zp; in tnc_prev()
665 znode = get_znode(c, znode, nn); in tnc_prev()
666 if (IS_ERR(znode)) in tnc_prev()
667 return PTR_ERR(znode); in tnc_prev()
668 while (znode->level != 0) { in tnc_prev()
669 nn = znode->child_cnt - 1; in tnc_prev()
670 znode = get_znode(c, znode, nn); in tnc_prev()
671 if (IS_ERR(znode)) in tnc_prev()
672 return PTR_ERR(znode); in tnc_prev()
674 nn = znode->child_cnt - 1; in tnc_prev()
678 *zn = znode; in tnc_prev()
777 struct ubifs_znode *znode = *zn; in resolve_collision() local
781 err = tnc_next(c, &znode, &nn); in resolve_collision()
786 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision()
788 err = matches_name(c, &znode->zbranch[nn], nm); in resolve_collision()
793 *zn = znode; in resolve_collision()
893 struct ubifs_znode *o_znode = NULL, *znode = *zn; in fallible_resolve_collision() local
896 cmp = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
902 o_znode = znode; in fallible_resolve_collision()
961 *zn = znode; in fallible_resolve_collision()
964 err = tnc_next(c, &znode, &nn); in fallible_resolve_collision()
969 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in fallible_resolve_collision()
971 err = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
976 *zn = znode; in fallible_resolve_collision()
981 o_znode = znode; in fallible_resolve_collision()
1037 struct ubifs_znode *znode; in resolve_collision_directly() local
1040 znode = *zn; in resolve_collision_directly()
1042 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1047 err = tnc_prev(c, &znode, &nn); in resolve_collision_directly()
1052 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1054 if (matches_position(&znode->zbranch[nn], lnum, offs)) { in resolve_collision_directly()
1055 *zn = znode; in resolve_collision_directly()
1062 znode = *zn; in resolve_collision_directly()
1065 err = tnc_next(c, &znode, &nn); in resolve_collision_directly()
1070 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1072 *zn = znode; in resolve_collision_directly()
1074 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1090 struct ubifs_znode *znode) in dirty_cow_bottom_up() argument
1095 ubifs_assert(c, c->zroot.znode); in dirty_cow_bottom_up()
1096 ubifs_assert(c, znode); in dirty_cow_bottom_up()
1097 if (c->zroot.znode->level > BOTTOM_UP_HEIGHT) { in dirty_cow_bottom_up()
1099 c->bottom_up_buf = kmalloc_array(c->zroot.znode->level, in dirty_cow_bottom_up()
1106 if (c->zroot.znode->level) { in dirty_cow_bottom_up()
1111 zp = znode->parent; in dirty_cow_bottom_up()
1114 n = znode->iip; in dirty_cow_bottom_up()
1115 ubifs_assert(c, p < c->zroot.znode->level); in dirty_cow_bottom_up()
1117 if (!zp->cnext && ubifs_zn_dirty(znode)) in dirty_cow_bottom_up()
1119 znode = zp; in dirty_cow_bottom_up()
1127 zp = znode->parent; in dirty_cow_bottom_up()
1132 znode = dirty_cow_znode(c, zbr); in dirty_cow_bottom_up()
1134 ubifs_assert(c, znode == c->zroot.znode); in dirty_cow_bottom_up()
1135 znode = dirty_cow_znode(c, &c->zroot); in dirty_cow_bottom_up()
1137 if (IS_ERR(znode) || !p) in dirty_cow_bottom_up()
1140 ubifs_assert(c, path[p - 1] < znode->child_cnt); in dirty_cow_bottom_up()
1141 znode = znode->zbranch[path[p - 1]].znode; in dirty_cow_bottom_up()
1144 return znode; in dirty_cow_bottom_up()
1173 struct ubifs_znode *znode; in ubifs_lookup_level0() local
1179 znode = c->zroot.znode; in ubifs_lookup_level0()
1180 if (unlikely(!znode)) { in ubifs_lookup_level0()
1181 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in ubifs_lookup_level0()
1182 if (IS_ERR(znode)) in ubifs_lookup_level0()
1183 return PTR_ERR(znode); in ubifs_lookup_level0()
1186 znode->time = time; in ubifs_lookup_level0()
1191 exact = ubifs_search_zbranch(c, znode, key, n); in ubifs_lookup_level0()
1193 if (znode->level == 0) in ubifs_lookup_level0()
1198 zbr = &znode->zbranch[*n]; in ubifs_lookup_level0()
1200 if (zbr->znode) { in ubifs_lookup_level0()
1201 znode->time = time; in ubifs_lookup_level0()
1202 znode = zbr->znode; in ubifs_lookup_level0()
1207 znode = ubifs_load_znode(c, zbr, znode, *n); in ubifs_lookup_level0()
1208 if (IS_ERR(znode)) in ubifs_lookup_level0()
1209 return PTR_ERR(znode); in ubifs_lookup_level0()
1212 *zn = znode; in ubifs_lookup_level0()
1214 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in ubifs_lookup_level0()
1261 err = tnc_prev(c, &znode, n); in ubifs_lookup_level0()
1263 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1269 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in ubifs_lookup_level0()
1270 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1275 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in ubifs_lookup_level0()
1276 *zn = znode; in ubifs_lookup_level0()
1309 struct ubifs_znode *znode; in lookup_level0_dirty() local
1314 znode = c->zroot.znode; in lookup_level0_dirty()
1315 if (unlikely(!znode)) { in lookup_level0_dirty()
1316 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_level0_dirty()
1317 if (IS_ERR(znode)) in lookup_level0_dirty()
1318 return PTR_ERR(znode); in lookup_level0_dirty()
1321 znode = dirty_cow_znode(c, &c->zroot); in lookup_level0_dirty()
1322 if (IS_ERR(znode)) in lookup_level0_dirty()
1323 return PTR_ERR(znode); in lookup_level0_dirty()
1325 znode->time = time; in lookup_level0_dirty()
1330 exact = ubifs_search_zbranch(c, znode, key, n); in lookup_level0_dirty()
1332 if (znode->level == 0) in lookup_level0_dirty()
1337 zbr = &znode->zbranch[*n]; in lookup_level0_dirty()
1339 if (zbr->znode) { in lookup_level0_dirty()
1340 znode->time = time; in lookup_level0_dirty()
1341 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1342 if (IS_ERR(znode)) in lookup_level0_dirty()
1343 return PTR_ERR(znode); in lookup_level0_dirty()
1348 znode = ubifs_load_znode(c, zbr, znode, *n); in lookup_level0_dirty()
1349 if (IS_ERR(znode)) in lookup_level0_dirty()
1350 return PTR_ERR(znode); in lookup_level0_dirty()
1351 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1352 if (IS_ERR(znode)) in lookup_level0_dirty()
1353 return PTR_ERR(znode); in lookup_level0_dirty()
1356 *zn = znode; in lookup_level0_dirty()
1358 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in lookup_level0_dirty()
1366 err = tnc_prev(c, &znode, n); in lookup_level0_dirty()
1369 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1374 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in lookup_level0_dirty()
1376 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1380 if (znode->cnext || !ubifs_zn_dirty(znode)) { in lookup_level0_dirty()
1381 znode = dirty_cow_bottom_up(c, znode); in lookup_level0_dirty()
1382 if (IS_ERR(znode)) in lookup_level0_dirty()
1383 return PTR_ERR(znode); in lookup_level0_dirty()
1386 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in lookup_level0_dirty()
1387 *zn = znode; in lookup_level0_dirty()
1444 struct ubifs_znode *znode; in ubifs_tnc_locate() local
1449 found = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_locate()
1457 zt = &znode->zbranch[n]; in ubifs_tnc_locate()
1475 zbr = znode->zbranch[n]; in ubifs_tnc_locate()
1519 struct ubifs_znode *znode; in ubifs_tnc_get_bu_keys() local
1527 err = ubifs_lookup_level0(c, &bu->key, &znode, &n); in ubifs_tnc_get_bu_keys()
1532 len = znode->zbranch[n].len; in ubifs_tnc_get_bu_keys()
1539 bu->zbranch[bu->cnt++] = znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1541 lnum = znode->zbranch[n].lnum; in ubifs_tnc_get_bu_keys()
1542 offs = ALIGN(znode->zbranch[n].offs + len, 8); in ubifs_tnc_get_bu_keys()
1550 err = tnc_next(c, &znode, &n); in ubifs_tnc_get_bu_keys()
1553 zbr = &znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1812 struct ubifs_znode *znode; in do_lookup_nm() local
1816 found = ubifs_lookup_level0(c, key, &znode, &n); in do_lookup_nm()
1827 err = resolve_collision(c, key, &znode, &n, nm); in do_lookup_nm()
1828 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in do_lookup_nm()
1836 err = tnc_read_hashed_node(c, &znode->zbranch[n], node); in do_lookup_nm()
1887 struct ubifs_znode *znode = *zn; in search_dh_cookie() local
1892 err = tnc_next(c, &znode, n); in search_dh_cookie()
1898 zbr = &znode->zbranch[*n]; in search_dh_cookie()
1912 *zn = znode; in search_dh_cookie()
1916 err = tnc_next(c, &znode, n); in search_dh_cookie()
1926 struct ubifs_znode *znode; in do_lookup_dh() local
1934 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in do_lookup_dh()
1938 err = search_dh_cookie(c, key, dent, cookie, &znode, &n, err); in do_lookup_dh()
1996 struct ubifs_znode *znode) in correct_parent_keys() argument
2000 ubifs_assert(c, znode->parent); in correct_parent_keys()
2001 ubifs_assert(c, znode->iip == 0); in correct_parent_keys()
2003 key = &znode->zbranch[0].key; in correct_parent_keys()
2004 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2008 znode = znode->parent; in correct_parent_keys()
2009 znode->alt = 1; in correct_parent_keys()
2010 if (!znode->parent || znode->iip) in correct_parent_keys()
2012 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2028 static void insert_zbranch(struct ubifs_info *c, struct ubifs_znode *znode, in insert_zbranch() argument
2033 ubifs_assert(c, ubifs_zn_dirty(znode)); in insert_zbranch()
2035 if (znode->level) { in insert_zbranch()
2036 for (i = znode->child_cnt; i > n; i--) { in insert_zbranch()
2037 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2038 if (znode->zbranch[i].znode) in insert_zbranch()
2039 znode->zbranch[i].znode->iip = i; in insert_zbranch()
2041 if (zbr->znode) in insert_zbranch()
2042 zbr->znode->iip = n; in insert_zbranch()
2044 for (i = znode->child_cnt; i > n; i--) in insert_zbranch()
2045 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2047 znode->zbranch[n] = *zbr; in insert_zbranch()
2048 znode->child_cnt += 1; in insert_zbranch()
2065 znode->alt = 1; in insert_zbranch()
2080 static int tnc_insert(struct ubifs_info *c, struct ubifs_znode *znode, in tnc_insert() argument
2091 zp = znode->parent; in tnc_insert()
2092 if (znode->child_cnt < c->fanout) { in tnc_insert()
2094 dbg_tnck(key, "inserted at %d level %d, key ", n, znode->level); in tnc_insert()
2096 insert_zbranch(c, znode, zbr, n); in tnc_insert()
2099 if (n == 0 && zp && znode->iip == 0) in tnc_insert()
2100 correct_parent_keys(c, znode); in tnc_insert()
2109 dbg_tnck(key, "splitting level %d, key ", znode->level); in tnc_insert()
2111 if (znode->alt) in tnc_insert()
2116 ins_clr_old_idx_znode(c, znode); in tnc_insert()
2122 zn->level = znode->level; in tnc_insert()
2125 if (znode->level == 0 && key_type(c, key) == UBIFS_DATA_KEY) { in tnc_insert()
2128 key1 = &znode->zbranch[n - 1].key; in tnc_insert()
2139 key1 = &znode->zbranch[0].key; in tnc_insert()
2142 key1 = &znode->zbranch[n].key; in tnc_insert()
2147 zi = znode; in tnc_insert()
2169 zi = znode; in tnc_insert()
2178 zbr->znode->parent = zn; in tnc_insert()
2187 znode->child_cnt = keep; in tnc_insert()
2193 zn->zbranch[i] = znode->zbranch[keep + i]; in tnc_insert()
2196 if (zn->zbranch[i].znode) { in tnc_insert()
2197 zn->zbranch[i].znode->parent = zn; in tnc_insert()
2198 zn->zbranch[i].znode->iip = i; in tnc_insert()
2209 if (n == 0 && zi == znode && znode->iip == 0) in tnc_insert()
2210 correct_parent_keys(c, znode); in tnc_insert()
2213 n = znode->iip + 1; in tnc_insert()
2217 zbr->znode = zn; in tnc_insert()
2221 znode = zp; in tnc_insert()
2227 dbg_tnc("creating new zroot at level %d", znode->level + 1); in tnc_insert()
2234 zi->level = znode->level + 1; in tnc_insert()
2239 zi->zbranch[0].key = znode->zbranch[0].key; in tnc_insert()
2240 zi->zbranch[0].znode = znode; in tnc_insert()
2245 zi->zbranch[1].znode = zn; in tnc_insert()
2250 c->zroot.znode = zi; in tnc_insert()
2254 znode->parent = zi; in tnc_insert()
2255 znode->iip = 0; in tnc_insert()
2277 struct ubifs_znode *znode; in ubifs_tnc_add() local
2281 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add()
2285 zbr.znode = NULL; in ubifs_tnc_add()
2291 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add()
2293 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add()
2328 struct ubifs_znode *znode; in ubifs_tnc_replace() local
2333 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_replace()
2340 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2353 found = resolve_collision_directly(c, key, &znode, &n, in ubifs_tnc_replace()
2356 found, znode, n, old_lnum, old_offs); in ubifs_tnc_replace()
2364 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_replace()
2365 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_replace()
2366 if (IS_ERR(znode)) { in ubifs_tnc_replace()
2367 err = PTR_ERR(znode); in ubifs_tnc_replace()
2371 zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2413 struct ubifs_znode *znode; in ubifs_tnc_add_nm() local
2417 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add_nm()
2425 found = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_add_nm()
2428 found = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_add_nm()
2429 dbg_tnc("rc returned %d, znode %p, n %d", found, znode, n); in ubifs_tnc_add_nm()
2436 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_add_nm()
2437 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_add_nm()
2438 if (IS_ERR(znode)) { in ubifs_tnc_add_nm()
2439 err = PTR_ERR(znode); in ubifs_tnc_add_nm()
2445 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add_nm()
2460 zbr.znode = NULL; in ubifs_tnc_add_nm()
2466 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add_nm()
2502 static int tnc_delete(struct ubifs_info *c, struct ubifs_znode *znode, int n) in tnc_delete() argument
2509 ubifs_assert(c, znode->level == 0); in tnc_delete()
2511 dbg_tnck(&znode->zbranch[n].key, "deleting key "); in tnc_delete()
2513 zbr = &znode->zbranch[n]; in tnc_delete()
2518 ubifs_dump_znode(c, znode); in tnc_delete()
2523 for (i = n; i < znode->child_cnt - 1; i++) in tnc_delete()
2524 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2525 znode->child_cnt -= 1; in tnc_delete()
2527 if (znode->child_cnt > 0) in tnc_delete()
2536 ubifs_assert(c, !ubifs_zn_obsolete(znode)); in tnc_delete()
2537 ubifs_assert(c, ubifs_zn_dirty(znode)); in tnc_delete()
2539 zp = znode->parent; in tnc_delete()
2540 n = znode->iip; in tnc_delete()
2544 err = insert_old_idx_znode(c, znode); in tnc_delete()
2548 if (znode->cnext) { in tnc_delete()
2549 __set_bit(OBSOLETE_ZNODE, &znode->flags); in tnc_delete()
2553 kfree(znode); in tnc_delete()
2554 znode = zp; in tnc_delete()
2555 } while (znode->child_cnt == 1); /* while removing last child */ in tnc_delete()
2558 znode->child_cnt -= 1; in tnc_delete()
2559 ubifs_assert(c, znode->level != 0); in tnc_delete()
2560 for (i = n; i < znode->child_cnt; i++) { in tnc_delete()
2561 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2562 if (znode->zbranch[i].znode) in tnc_delete()
2563 znode->zbranch[i].znode->iip = i; in tnc_delete()
2570 if (!znode->parent) { in tnc_delete()
2571 while (znode->child_cnt == 1 && znode->level != 0) { in tnc_delete()
2572 zp = znode; in tnc_delete()
2573 zbr = &znode->zbranch[0]; in tnc_delete()
2574 znode = get_znode(c, znode, 0); in tnc_delete()
2575 if (IS_ERR(znode)) in tnc_delete()
2576 return PTR_ERR(znode); in tnc_delete()
2577 znode = dirty_cow_znode(c, zbr); in tnc_delete()
2578 if (IS_ERR(znode)) in tnc_delete()
2579 return PTR_ERR(znode); in tnc_delete()
2580 znode->parent = NULL; in tnc_delete()
2581 znode->iip = 0; in tnc_delete()
2591 c->zroot.znode = znode; in tnc_delete()
2618 struct ubifs_znode *znode; in ubifs_tnc_remove() local
2622 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove()
2628 err = tnc_delete(c, znode, n); in ubifs_tnc_remove()
2649 struct ubifs_znode *znode; in ubifs_tnc_remove_nm() local
2653 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_nm()
2659 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_remove_nm()
2662 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_remove_nm()
2663 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in ubifs_tnc_remove_nm()
2668 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_nm()
2669 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_nm()
2670 if (IS_ERR(znode)) { in ubifs_tnc_remove_nm()
2671 err = PTR_ERR(znode); in ubifs_tnc_remove_nm()
2675 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_nm()
2698 struct ubifs_znode *znode; in ubifs_tnc_remove_dh() local
2706 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_dh()
2710 zbr = &znode->zbranch[n]; in ubifs_tnc_remove_dh()
2727 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in ubifs_tnc_remove_dh()
2731 err = search_dh_cookie(c, key, dent, cookie, &znode, &n, err); in ubifs_tnc_remove_dh()
2736 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_dh()
2737 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_dh()
2738 if (IS_ERR(znode)) { in ubifs_tnc_remove_dh()
2739 err = PTR_ERR(znode); in ubifs_tnc_remove_dh()
2743 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_dh()
2787 struct ubifs_znode *znode; in ubifs_tnc_remove_range() local
2793 err = ubifs_lookup_level0(c, from_key, &znode, &n); in ubifs_tnc_remove_range()
2800 err = tnc_next(c, &znode, &n); in ubifs_tnc_remove_range()
2807 key = &znode->zbranch[n].key; in ubifs_tnc_remove_range()
2815 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_range()
2816 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_range()
2817 if (IS_ERR(znode)) { in ubifs_tnc_remove_range()
2818 err = PTR_ERR(znode); in ubifs_tnc_remove_range()
2824 for (i = n + 1, k = 0; i < znode->child_cnt; i++, k++) { in ubifs_tnc_remove_range()
2825 key = &znode->zbranch[i].key; in ubifs_tnc_remove_range()
2828 lnc_free(&znode->zbranch[i]); in ubifs_tnc_remove_range()
2829 err = ubifs_add_dirt(c, znode->zbranch[i].lnum, in ubifs_tnc_remove_range()
2830 znode->zbranch[i].len); in ubifs_tnc_remove_range()
2832 ubifs_dump_znode(c, znode); in ubifs_tnc_remove_range()
2838 for (i = n + 1 + k; i < znode->child_cnt; i++) in ubifs_tnc_remove_range()
2839 znode->zbranch[i - k] = znode->zbranch[i]; in ubifs_tnc_remove_range()
2840 znode->child_cnt -= k; in ubifs_tnc_remove_range()
2844 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_range()
2955 struct ubifs_znode *znode; in ubifs_tnc_next_ent() local
2964 err = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_next_ent()
2972 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_next_ent()
2975 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_next_ent()
2977 err, znode, n); in ubifs_tnc_next_ent()
2983 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2998 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
3004 zbr = &znode->zbranch[n]; in ubifs_tnc_next_ent()
3051 struct ubifs_znode *znode = cnext; in tnc_destroy_cnext() local
3054 if (ubifs_zn_obsolete(znode)) in tnc_destroy_cnext()
3055 kfree(znode); in tnc_destroy_cnext()
3066 if (c->zroot.znode) { in ubifs_tnc_close()
3070 freed = ubifs_destroy_tnc_subtree(c, c->zroot.znode); in ubifs_tnc_close()
3088 struct ubifs_znode *znode) in left_znode() argument
3090 int level = znode->level; in left_znode()
3093 int n = znode->iip - 1; in left_znode()
3096 znode = znode->parent; in left_znode()
3097 if (!znode) in left_znode()
3101 znode = get_znode(c, znode, n); in left_znode()
3102 if (IS_ERR(znode)) in left_znode()
3103 return znode; in left_znode()
3104 while (znode->level != level) { in left_znode()
3105 n = znode->child_cnt - 1; in left_znode()
3106 znode = get_znode(c, znode, n); in left_znode()
3107 if (IS_ERR(znode)) in left_znode()
3108 return znode; in left_znode()
3113 return znode; in left_znode()
3125 struct ubifs_znode *znode) in right_znode() argument
3127 int level = znode->level; in right_znode()
3130 int n = znode->iip + 1; in right_znode()
3133 znode = znode->parent; in right_znode()
3134 if (!znode) in right_znode()
3136 if (n < znode->child_cnt) { in right_znode()
3138 znode = get_znode(c, znode, n); in right_znode()
3139 if (IS_ERR(znode)) in right_znode()
3140 return znode; in right_znode()
3141 while (znode->level != level) { in right_znode()
3142 znode = get_znode(c, znode, 0); in right_znode()
3143 if (IS_ERR(znode)) in right_znode()
3144 return znode; in right_znode()
3149 return znode; in right_znode()
3181 struct ubifs_znode *znode, *zn; in lookup_znode() local
3194 znode = c->zroot.znode; in lookup_znode()
3195 if (!znode) { in lookup_znode()
3196 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_znode()
3197 if (IS_ERR(znode)) in lookup_znode()
3198 return znode; in lookup_znode()
3202 return znode; in lookup_znode()
3204 if (level >= znode->level) in lookup_znode()
3207 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3217 znode = left_znode(c, znode); in lookup_znode()
3218 if (!znode) in lookup_znode()
3220 if (IS_ERR(znode)) in lookup_znode()
3221 return znode; in lookup_znode()
3222 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3225 if (znode->level == level + 1) in lookup_znode()
3227 znode = get_znode(c, znode, n); in lookup_znode()
3228 if (IS_ERR(znode)) in lookup_znode()
3229 return znode; in lookup_znode()
3232 if (znode->zbranch[n].lnum == lnum && znode->zbranch[n].offs == offs) in lookup_znode()
3233 return get_znode(c, znode, n); in lookup_znode()
3241 zn = znode; in lookup_znode()
3249 znode = left_znode(c, znode); in lookup_znode()
3250 if (!znode) in lookup_znode()
3252 if (IS_ERR(znode)) in lookup_znode()
3253 return znode; in lookup_znode()
3254 n = znode->child_cnt - 1; in lookup_znode()
3257 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3258 znode->zbranch[n].offs == offs) in lookup_znode()
3259 return get_znode(c, znode, n); in lookup_znode()
3261 if (keys_cmp(c, &znode->zbranch[n].key, key) < 0) in lookup_znode()
3265 znode = zn; in lookup_znode()
3270 if (++n >= znode->child_cnt) { in lookup_znode()
3271 znode = right_znode(c, znode); in lookup_znode()
3272 if (!znode) in lookup_znode()
3274 if (IS_ERR(znode)) in lookup_znode()
3275 return znode; in lookup_znode()
3279 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3280 znode->zbranch[n].offs == offs) in lookup_znode()
3281 return get_znode(c, znode, n); in lookup_znode()
3283 if (keys_cmp(c, &znode->zbranch[n].key, key) > 0) in lookup_znode()
3309 struct ubifs_znode *znode; in is_idx_node_in_tnc() local
3311 znode = lookup_znode(c, key, level, lnum, offs); in is_idx_node_in_tnc()
3312 if (!znode) in is_idx_node_in_tnc()
3314 if (IS_ERR(znode)) in is_idx_node_in_tnc()
3315 return PTR_ERR(znode); in is_idx_node_in_tnc()
3317 return ubifs_zn_dirty(znode) ? 1 : 2; in is_idx_node_in_tnc()
3337 struct ubifs_znode *znode, *zn; in is_leaf_node_in_tnc() local
3341 found = ubifs_lookup_level0(c, key, &znode, &n); in is_leaf_node_in_tnc()
3346 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3355 zn = znode; in is_leaf_node_in_tnc()
3359 err = tnc_prev(c, &znode, &n); in is_leaf_node_in_tnc()
3364 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3366 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3371 znode = zn; in is_leaf_node_in_tnc()
3374 err = tnc_next(c, &znode, &n); in is_leaf_node_in_tnc()
3380 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3382 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3446 struct ubifs_znode *znode; in ubifs_dirty_idx_node() local
3450 znode = lookup_znode(c, key, level, lnum, offs); in ubifs_dirty_idx_node()
3451 if (!znode) in ubifs_dirty_idx_node()
3453 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3454 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3457 znode = dirty_cow_bottom_up(c, znode); in ubifs_dirty_idx_node()
3458 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3459 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3484 struct ubifs_znode *znode; in dbg_check_inode_size() local
3497 err = ubifs_lookup_level0(c, &from_key, &znode, &n); in dbg_check_inode_size()
3506 err = tnc_next(c, &znode, &n); in dbg_check_inode_size()
3515 key = &znode->zbranch[n].key; in dbg_check_inode_size()