Lines Matching refs:znode
123 int insert_old_idx_znode(struct ubifs_info *c, struct ubifs_znode *znode) in insert_old_idx_znode() argument
125 if (znode->parent) { in insert_old_idx_znode()
128 zbr = &znode->parent->zbranch[znode->iip]; in insert_old_idx_znode()
146 struct ubifs_znode *znode) in ins_clr_old_idx_znode() argument
150 if (znode->parent) { in ins_clr_old_idx_znode()
153 zbr = &znode->parent->zbranch[znode->iip]; in ins_clr_old_idx_znode()
202 struct ubifs_znode *znode) in copy_znode() argument
206 zn = kmemdup(znode, c->max_znode_sz, GFP_NOFS); in copy_znode()
214 ubifs_assert(c, !ubifs_zn_obsolete(znode)); in copy_znode()
215 __set_bit(OBSOLETE_ZNODE, &znode->flags); in copy_znode()
217 if (znode->level != 0) { in copy_znode()
225 if (zbr->znode) in copy_znode()
226 zbr->znode->parent = zn; in copy_znode()
258 struct ubifs_znode *znode = zbr->znode; in dirty_cow_znode() local
262 if (!ubifs_zn_cow(znode)) { in dirty_cow_znode()
264 if (!test_and_set_bit(DIRTY_ZNODE, &znode->flags)) { in dirty_cow_znode()
272 return znode; in dirty_cow_znode()
275 zn = copy_znode(c, znode); in dirty_cow_znode()
287 zbr->znode = zn; in dirty_cow_znode()
589 struct ubifs_znode *znode, int n) in get_znode() argument
593 zbr = &znode->zbranch[n]; in get_znode()
594 if (zbr->znode) in get_znode()
595 znode = zbr->znode; in get_znode()
597 znode = ubifs_load_znode(c, zbr, znode, n); in get_znode()
598 return znode; in get_znode()
612 struct ubifs_znode *znode = *zn; in tnc_next() local
616 if (nn < znode->child_cnt) { in tnc_next()
623 zp = znode->parent; in tnc_next()
626 nn = znode->iip + 1; in tnc_next()
627 znode = zp; in tnc_next()
628 if (nn < znode->child_cnt) { in tnc_next()
629 znode = get_znode(c, znode, nn); in tnc_next()
630 if (IS_ERR(znode)) in tnc_next()
631 return PTR_ERR(znode); in tnc_next()
632 while (znode->level != 0) { in tnc_next()
633 znode = get_znode(c, znode, 0); in tnc_next()
634 if (IS_ERR(znode)) in tnc_next()
635 return PTR_ERR(znode); in tnc_next()
641 *zn = znode; in tnc_next()
657 struct ubifs_znode *znode = *zn; in tnc_prev() local
667 zp = znode->parent; in tnc_prev()
670 nn = znode->iip - 1; in tnc_prev()
671 znode = zp; in tnc_prev()
673 znode = get_znode(c, znode, nn); in tnc_prev()
674 if (IS_ERR(znode)) in tnc_prev()
675 return PTR_ERR(znode); in tnc_prev()
676 while (znode->level != 0) { in tnc_prev()
677 nn = znode->child_cnt - 1; in tnc_prev()
678 znode = get_znode(c, znode, nn); in tnc_prev()
679 if (IS_ERR(znode)) in tnc_prev()
680 return PTR_ERR(znode); in tnc_prev()
682 nn = znode->child_cnt - 1; in tnc_prev()
686 *zn = znode; in tnc_prev()
785 struct ubifs_znode *znode = *zn; in resolve_collision() local
789 err = tnc_next(c, &znode, &nn); in resolve_collision()
794 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision()
796 err = matches_name(c, &znode->zbranch[nn], nm); in resolve_collision()
801 *zn = znode; in resolve_collision()
901 struct ubifs_znode *o_znode = NULL, *znode = *zn; in fallible_resolve_collision() local
904 cmp = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
910 o_znode = znode; in fallible_resolve_collision()
969 *zn = znode; in fallible_resolve_collision()
972 err = tnc_next(c, &znode, &nn); in fallible_resolve_collision()
977 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in fallible_resolve_collision()
979 err = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
984 *zn = znode; in fallible_resolve_collision()
989 o_znode = znode; in fallible_resolve_collision()
1045 struct ubifs_znode *znode; in resolve_collision_directly() local
1048 znode = *zn; in resolve_collision_directly()
1050 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1055 err = tnc_prev(c, &znode, &nn); in resolve_collision_directly()
1060 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1062 if (matches_position(&znode->zbranch[nn], lnum, offs)) { in resolve_collision_directly()
1063 *zn = znode; in resolve_collision_directly()
1070 znode = *zn; in resolve_collision_directly()
1073 err = tnc_next(c, &znode, &nn); in resolve_collision_directly()
1078 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1080 *zn = znode; in resolve_collision_directly()
1082 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1098 struct ubifs_znode *znode) in dirty_cow_bottom_up() argument
1103 ubifs_assert(c, c->zroot.znode); in dirty_cow_bottom_up()
1104 ubifs_assert(c, znode); in dirty_cow_bottom_up()
1105 if (c->zroot.znode->level > BOTTOM_UP_HEIGHT) { in dirty_cow_bottom_up()
1107 c->bottom_up_buf = kmalloc_array(c->zroot.znode->level, in dirty_cow_bottom_up()
1114 if (c->zroot.znode->level) { in dirty_cow_bottom_up()
1119 zp = znode->parent; in dirty_cow_bottom_up()
1122 n = znode->iip; in dirty_cow_bottom_up()
1123 ubifs_assert(c, p < c->zroot.znode->level); in dirty_cow_bottom_up()
1125 if (!zp->cnext && ubifs_zn_dirty(znode)) in dirty_cow_bottom_up()
1127 znode = zp; in dirty_cow_bottom_up()
1135 zp = znode->parent; in dirty_cow_bottom_up()
1140 znode = dirty_cow_znode(c, zbr); in dirty_cow_bottom_up()
1142 ubifs_assert(c, znode == c->zroot.znode); in dirty_cow_bottom_up()
1143 znode = dirty_cow_znode(c, &c->zroot); in dirty_cow_bottom_up()
1145 if (IS_ERR(znode) || !p) in dirty_cow_bottom_up()
1148 ubifs_assert(c, path[p - 1] < znode->child_cnt); in dirty_cow_bottom_up()
1149 znode = znode->zbranch[path[p - 1]].znode; in dirty_cow_bottom_up()
1152 return znode; in dirty_cow_bottom_up()
1181 struct ubifs_znode *znode; in ubifs_lookup_level0() local
1187 znode = c->zroot.znode; in ubifs_lookup_level0()
1188 if (unlikely(!znode)) { in ubifs_lookup_level0()
1189 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in ubifs_lookup_level0()
1190 if (IS_ERR(znode)) in ubifs_lookup_level0()
1191 return PTR_ERR(znode); in ubifs_lookup_level0()
1194 znode->time = time; in ubifs_lookup_level0()
1199 exact = ubifs_search_zbranch(c, znode, key, n); in ubifs_lookup_level0()
1201 if (znode->level == 0) in ubifs_lookup_level0()
1206 zbr = &znode->zbranch[*n]; in ubifs_lookup_level0()
1208 if (zbr->znode) { in ubifs_lookup_level0()
1209 znode->time = time; in ubifs_lookup_level0()
1210 znode = zbr->znode; in ubifs_lookup_level0()
1215 znode = ubifs_load_znode(c, zbr, znode, *n); in ubifs_lookup_level0()
1216 if (IS_ERR(znode)) in ubifs_lookup_level0()
1217 return PTR_ERR(znode); in ubifs_lookup_level0()
1220 *zn = znode; in ubifs_lookup_level0()
1222 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in ubifs_lookup_level0()
1269 err = tnc_prev(c, &znode, n); in ubifs_lookup_level0()
1271 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1277 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in ubifs_lookup_level0()
1278 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1283 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in ubifs_lookup_level0()
1284 *zn = znode; in ubifs_lookup_level0()
1317 struct ubifs_znode *znode; in lookup_level0_dirty() local
1322 znode = c->zroot.znode; in lookup_level0_dirty()
1323 if (unlikely(!znode)) { in lookup_level0_dirty()
1324 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_level0_dirty()
1325 if (IS_ERR(znode)) in lookup_level0_dirty()
1326 return PTR_ERR(znode); in lookup_level0_dirty()
1329 znode = dirty_cow_znode(c, &c->zroot); in lookup_level0_dirty()
1330 if (IS_ERR(znode)) in lookup_level0_dirty()
1331 return PTR_ERR(znode); in lookup_level0_dirty()
1333 znode->time = time; in lookup_level0_dirty()
1338 exact = ubifs_search_zbranch(c, znode, key, n); in lookup_level0_dirty()
1340 if (znode->level == 0) in lookup_level0_dirty()
1345 zbr = &znode->zbranch[*n]; in lookup_level0_dirty()
1347 if (zbr->znode) { in lookup_level0_dirty()
1348 znode->time = time; in lookup_level0_dirty()
1349 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1350 if (IS_ERR(znode)) in lookup_level0_dirty()
1351 return PTR_ERR(znode); in lookup_level0_dirty()
1356 znode = ubifs_load_znode(c, zbr, znode, *n); in lookup_level0_dirty()
1357 if (IS_ERR(znode)) in lookup_level0_dirty()
1358 return PTR_ERR(znode); in lookup_level0_dirty()
1359 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1360 if (IS_ERR(znode)) in lookup_level0_dirty()
1361 return PTR_ERR(znode); in lookup_level0_dirty()
1364 *zn = znode; in lookup_level0_dirty()
1366 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in lookup_level0_dirty()
1374 err = tnc_prev(c, &znode, n); in lookup_level0_dirty()
1377 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1382 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in lookup_level0_dirty()
1384 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1388 if (znode->cnext || !ubifs_zn_dirty(znode)) { in lookup_level0_dirty()
1389 znode = dirty_cow_bottom_up(c, znode); in lookup_level0_dirty()
1390 if (IS_ERR(znode)) in lookup_level0_dirty()
1391 return PTR_ERR(znode); in lookup_level0_dirty()
1394 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in lookup_level0_dirty()
1395 *zn = znode; in lookup_level0_dirty()
1452 struct ubifs_znode *znode; in ubifs_tnc_locate() local
1457 found = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_locate()
1465 zt = &znode->zbranch[n]; in ubifs_tnc_locate()
1483 zbr = znode->zbranch[n]; in ubifs_tnc_locate()
1527 struct ubifs_znode *znode; in ubifs_tnc_get_bu_keys() local
1535 err = ubifs_lookup_level0(c, &bu->key, &znode, &n); in ubifs_tnc_get_bu_keys()
1540 len = znode->zbranch[n].len; in ubifs_tnc_get_bu_keys()
1547 bu->zbranch[bu->cnt++] = znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1549 lnum = znode->zbranch[n].lnum; in ubifs_tnc_get_bu_keys()
1550 offs = ALIGN(znode->zbranch[n].offs + len, 8); in ubifs_tnc_get_bu_keys()
1558 err = tnc_next(c, &znode, &n); in ubifs_tnc_get_bu_keys()
1561 zbr = &znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1814 struct ubifs_znode *znode; in do_lookup_nm() local
1818 found = ubifs_lookup_level0(c, key, &znode, &n); in do_lookup_nm()
1829 err = resolve_collision(c, key, &znode, &n, nm); in do_lookup_nm()
1830 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in do_lookup_nm()
1838 err = tnc_read_hashed_node(c, &znode->zbranch[n], node); in do_lookup_nm()
1889 struct ubifs_znode *znode = *zn; in search_dh_cookie() local
1894 zbr = &znode->zbranch[*n]; in search_dh_cookie()
1908 *zn = znode; in search_dh_cookie()
1912 err = tnc_next(c, &znode, n); in search_dh_cookie()
1922 struct ubifs_znode *znode; in do_lookup_dh() local
1930 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in do_lookup_dh()
1934 err = search_dh_cookie(c, key, dent, cookie, &znode, &n); in do_lookup_dh()
1992 struct ubifs_znode *znode) in correct_parent_keys() argument
1996 ubifs_assert(c, znode->parent); in correct_parent_keys()
1997 ubifs_assert(c, znode->iip == 0); in correct_parent_keys()
1999 key = &znode->zbranch[0].key; in correct_parent_keys()
2000 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2004 znode = znode->parent; in correct_parent_keys()
2005 znode->alt = 1; in correct_parent_keys()
2006 if (!znode->parent || znode->iip) in correct_parent_keys()
2008 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2024 static void insert_zbranch(struct ubifs_info *c, struct ubifs_znode *znode, in insert_zbranch() argument
2029 ubifs_assert(c, ubifs_zn_dirty(znode)); in insert_zbranch()
2031 if (znode->level) { in insert_zbranch()
2032 for (i = znode->child_cnt; i > n; i--) { in insert_zbranch()
2033 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2034 if (znode->zbranch[i].znode) in insert_zbranch()
2035 znode->zbranch[i].znode->iip = i; in insert_zbranch()
2037 if (zbr->znode) in insert_zbranch()
2038 zbr->znode->iip = n; in insert_zbranch()
2040 for (i = znode->child_cnt; i > n; i--) in insert_zbranch()
2041 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2043 znode->zbranch[n] = *zbr; in insert_zbranch()
2044 znode->child_cnt += 1; in insert_zbranch()
2061 znode->alt = 1; in insert_zbranch()
2076 static int tnc_insert(struct ubifs_info *c, struct ubifs_znode *znode, in tnc_insert() argument
2087 zp = znode->parent; in tnc_insert()
2088 if (znode->child_cnt < c->fanout) { in tnc_insert()
2090 dbg_tnck(key, "inserted at %d level %d, key ", n, znode->level); in tnc_insert()
2092 insert_zbranch(c, znode, zbr, n); in tnc_insert()
2095 if (n == 0 && zp && znode->iip == 0) in tnc_insert()
2096 correct_parent_keys(c, znode); in tnc_insert()
2105 dbg_tnck(key, "splitting level %d, key ", znode->level); in tnc_insert()
2107 if (znode->alt) in tnc_insert()
2112 ins_clr_old_idx_znode(c, znode); in tnc_insert()
2118 zn->level = znode->level; in tnc_insert()
2121 if (znode->level == 0 && key_type(c, key) == UBIFS_DATA_KEY) { in tnc_insert()
2124 key1 = &znode->zbranch[n - 1].key; in tnc_insert()
2135 key1 = &znode->zbranch[0].key; in tnc_insert()
2138 key1 = &znode->zbranch[n].key; in tnc_insert()
2143 zi = znode; in tnc_insert()
2165 zi = znode; in tnc_insert()
2174 zbr->znode->parent = zn; in tnc_insert()
2183 znode->child_cnt = keep; in tnc_insert()
2189 zn->zbranch[i] = znode->zbranch[keep + i]; in tnc_insert()
2192 if (zn->zbranch[i].znode) { in tnc_insert()
2193 zn->zbranch[i].znode->parent = zn; in tnc_insert()
2194 zn->zbranch[i].znode->iip = i; in tnc_insert()
2205 if (n == 0 && zi == znode && znode->iip == 0) in tnc_insert()
2206 correct_parent_keys(c, znode); in tnc_insert()
2209 n = znode->iip + 1; in tnc_insert()
2213 zbr->znode = zn; in tnc_insert()
2217 znode = zp; in tnc_insert()
2223 dbg_tnc("creating new zroot at level %d", znode->level + 1); in tnc_insert()
2230 zi->level = znode->level + 1; in tnc_insert()
2235 zi->zbranch[0].key = znode->zbranch[0].key; in tnc_insert()
2236 zi->zbranch[0].znode = znode; in tnc_insert()
2241 zi->zbranch[1].znode = zn; in tnc_insert()
2246 c->zroot.znode = zi; in tnc_insert()
2250 znode->parent = zi; in tnc_insert()
2251 znode->iip = 0; in tnc_insert()
2272 struct ubifs_znode *znode; in ubifs_tnc_add() local
2276 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add()
2280 zbr.znode = NULL; in ubifs_tnc_add()
2285 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add()
2287 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add()
2321 struct ubifs_znode *znode; in ubifs_tnc_replace() local
2326 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_replace()
2333 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2346 found = resolve_collision_directly(c, key, &znode, &n, in ubifs_tnc_replace()
2349 found, znode, n, old_lnum, old_offs); in ubifs_tnc_replace()
2357 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_replace()
2358 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_replace()
2359 if (IS_ERR(znode)) { in ubifs_tnc_replace()
2360 err = PTR_ERR(znode); in ubifs_tnc_replace()
2364 zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2405 struct ubifs_znode *znode; in ubifs_tnc_add_nm() local
2409 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add_nm()
2417 found = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_add_nm()
2420 found = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_add_nm()
2421 dbg_tnc("rc returned %d, znode %p, n %d", found, znode, n); in ubifs_tnc_add_nm()
2428 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_add_nm()
2429 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_add_nm()
2430 if (IS_ERR(znode)) { in ubifs_tnc_add_nm()
2431 err = PTR_ERR(znode); in ubifs_tnc_add_nm()
2437 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add_nm()
2451 zbr.znode = NULL; in ubifs_tnc_add_nm()
2456 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add_nm()
2492 static int tnc_delete(struct ubifs_info *c, struct ubifs_znode *znode, int n) in tnc_delete() argument
2499 ubifs_assert(c, znode->level == 0); in tnc_delete()
2501 dbg_tnck(&znode->zbranch[n].key, "deleting key "); in tnc_delete()
2503 zbr = &znode->zbranch[n]; in tnc_delete()
2508 ubifs_dump_znode(c, znode); in tnc_delete()
2513 for (i = n; i < znode->child_cnt - 1; i++) in tnc_delete()
2514 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2515 znode->child_cnt -= 1; in tnc_delete()
2517 if (znode->child_cnt > 0) in tnc_delete()
2526 ubifs_assert(c, !ubifs_zn_obsolete(znode)); in tnc_delete()
2527 ubifs_assert(c, ubifs_zn_dirty(znode)); in tnc_delete()
2529 zp = znode->parent; in tnc_delete()
2530 n = znode->iip; in tnc_delete()
2534 err = insert_old_idx_znode(c, znode); in tnc_delete()
2538 if (znode->cnext) { in tnc_delete()
2539 __set_bit(OBSOLETE_ZNODE, &znode->flags); in tnc_delete()
2543 kfree(znode); in tnc_delete()
2544 znode = zp; in tnc_delete()
2545 } while (znode->child_cnt == 1); /* while removing last child */ in tnc_delete()
2548 znode->child_cnt -= 1; in tnc_delete()
2549 ubifs_assert(c, znode->level != 0); in tnc_delete()
2550 for (i = n; i < znode->child_cnt; i++) { in tnc_delete()
2551 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2552 if (znode->zbranch[i].znode) in tnc_delete()
2553 znode->zbranch[i].znode->iip = i; in tnc_delete()
2560 if (!znode->parent) { in tnc_delete()
2561 while (znode->child_cnt == 1 && znode->level != 0) { in tnc_delete()
2562 zp = znode; in tnc_delete()
2563 zbr = &znode->zbranch[0]; in tnc_delete()
2564 znode = get_znode(c, znode, 0); in tnc_delete()
2565 if (IS_ERR(znode)) in tnc_delete()
2566 return PTR_ERR(znode); in tnc_delete()
2567 znode = dirty_cow_znode(c, zbr); in tnc_delete()
2568 if (IS_ERR(znode)) in tnc_delete()
2569 return PTR_ERR(znode); in tnc_delete()
2570 znode->parent = NULL; in tnc_delete()
2571 znode->iip = 0; in tnc_delete()
2581 c->zroot.znode = znode; in tnc_delete()
2608 struct ubifs_znode *znode; in ubifs_tnc_remove() local
2612 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove()
2618 err = tnc_delete(c, znode, n); in ubifs_tnc_remove()
2639 struct ubifs_znode *znode; in ubifs_tnc_remove_nm() local
2643 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_nm()
2649 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_remove_nm()
2652 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_remove_nm()
2653 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in ubifs_tnc_remove_nm()
2658 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_nm()
2659 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_nm()
2660 if (IS_ERR(znode)) { in ubifs_tnc_remove_nm()
2661 err = PTR_ERR(znode); in ubifs_tnc_remove_nm()
2665 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_nm()
2688 struct ubifs_znode *znode; in ubifs_tnc_remove_dh() local
2696 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_dh()
2700 zbr = &znode->zbranch[n]; in ubifs_tnc_remove_dh()
2717 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in ubifs_tnc_remove_dh()
2721 err = search_dh_cookie(c, key, dent, cookie, &znode, &n); in ubifs_tnc_remove_dh()
2726 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_dh()
2727 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_dh()
2728 if (IS_ERR(znode)) { in ubifs_tnc_remove_dh()
2729 err = PTR_ERR(znode); in ubifs_tnc_remove_dh()
2733 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_dh()
2777 struct ubifs_znode *znode; in ubifs_tnc_remove_range() local
2783 err = ubifs_lookup_level0(c, from_key, &znode, &n); in ubifs_tnc_remove_range()
2790 err = tnc_next(c, &znode, &n); in ubifs_tnc_remove_range()
2797 key = &znode->zbranch[n].key; in ubifs_tnc_remove_range()
2805 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_range()
2806 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_range()
2807 if (IS_ERR(znode)) { in ubifs_tnc_remove_range()
2808 err = PTR_ERR(znode); in ubifs_tnc_remove_range()
2814 for (i = n + 1, k = 0; i < znode->child_cnt; i++, k++) { in ubifs_tnc_remove_range()
2815 key = &znode->zbranch[i].key; in ubifs_tnc_remove_range()
2818 lnc_free(&znode->zbranch[i]); in ubifs_tnc_remove_range()
2819 err = ubifs_add_dirt(c, znode->zbranch[i].lnum, in ubifs_tnc_remove_range()
2820 znode->zbranch[i].len); in ubifs_tnc_remove_range()
2822 ubifs_dump_znode(c, znode); in ubifs_tnc_remove_range()
2828 for (i = n + 1 + k; i < znode->child_cnt; i++) in ubifs_tnc_remove_range()
2829 znode->zbranch[i - k] = znode->zbranch[i]; in ubifs_tnc_remove_range()
2830 znode->child_cnt -= k; in ubifs_tnc_remove_range()
2834 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_range()
2942 struct ubifs_znode *znode; in ubifs_tnc_next_ent() local
2951 err = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_next_ent()
2959 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_next_ent()
2962 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_next_ent()
2964 err, znode, n); in ubifs_tnc_next_ent()
2970 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2985 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2991 zbr = &znode->zbranch[n]; in ubifs_tnc_next_ent()
3038 struct ubifs_znode *znode = cnext; in tnc_destroy_cnext() local
3041 if (ubifs_zn_obsolete(znode)) in tnc_destroy_cnext()
3042 kfree(znode); in tnc_destroy_cnext()
3053 if (c->zroot.znode) { in ubifs_tnc_close()
3057 freed = ubifs_destroy_tnc_subtree(c, c->zroot.znode); in ubifs_tnc_close()
3075 struct ubifs_znode *znode) in left_znode() argument
3077 int level = znode->level; in left_znode()
3080 int n = znode->iip - 1; in left_znode()
3083 znode = znode->parent; in left_znode()
3084 if (!znode) in left_znode()
3088 znode = get_znode(c, znode, n); in left_znode()
3089 if (IS_ERR(znode)) in left_znode()
3090 return znode; in left_znode()
3091 while (znode->level != level) { in left_znode()
3092 n = znode->child_cnt - 1; in left_znode()
3093 znode = get_znode(c, znode, n); in left_znode()
3094 if (IS_ERR(znode)) in left_znode()
3095 return znode; in left_znode()
3100 return znode; in left_znode()
3112 struct ubifs_znode *znode) in right_znode() argument
3114 int level = znode->level; in right_znode()
3117 int n = znode->iip + 1; in right_znode()
3120 znode = znode->parent; in right_znode()
3121 if (!znode) in right_znode()
3123 if (n < znode->child_cnt) { in right_znode()
3125 znode = get_znode(c, znode, n); in right_znode()
3126 if (IS_ERR(znode)) in right_znode()
3127 return znode; in right_znode()
3128 while (znode->level != level) { in right_znode()
3129 znode = get_znode(c, znode, 0); in right_znode()
3130 if (IS_ERR(znode)) in right_znode()
3131 return znode; in right_znode()
3136 return znode; in right_znode()
3168 struct ubifs_znode *znode, *zn; in lookup_znode() local
3181 znode = c->zroot.znode; in lookup_znode()
3182 if (!znode) { in lookup_znode()
3183 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_znode()
3184 if (IS_ERR(znode)) in lookup_znode()
3185 return znode; in lookup_znode()
3189 return znode; in lookup_znode()
3191 if (level >= znode->level) in lookup_znode()
3194 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3204 znode = left_znode(c, znode); in lookup_znode()
3205 if (!znode) in lookup_znode()
3207 if (IS_ERR(znode)) in lookup_znode()
3208 return znode; in lookup_znode()
3209 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3212 if (znode->level == level + 1) in lookup_znode()
3214 znode = get_znode(c, znode, n); in lookup_znode()
3215 if (IS_ERR(znode)) in lookup_znode()
3216 return znode; in lookup_znode()
3219 if (znode->zbranch[n].lnum == lnum && znode->zbranch[n].offs == offs) in lookup_znode()
3220 return get_znode(c, znode, n); in lookup_znode()
3228 zn = znode; in lookup_znode()
3236 znode = left_znode(c, znode); in lookup_znode()
3237 if (!znode) in lookup_znode()
3239 if (IS_ERR(znode)) in lookup_znode()
3240 return znode; in lookup_znode()
3241 n = znode->child_cnt - 1; in lookup_znode()
3244 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3245 znode->zbranch[n].offs == offs) in lookup_znode()
3246 return get_znode(c, znode, n); in lookup_znode()
3248 if (keys_cmp(c, &znode->zbranch[n].key, key) < 0) in lookup_znode()
3252 znode = zn; in lookup_znode()
3257 if (++n >= znode->child_cnt) { in lookup_znode()
3258 znode = right_znode(c, znode); in lookup_znode()
3259 if (!znode) in lookup_znode()
3261 if (IS_ERR(znode)) in lookup_znode()
3262 return znode; in lookup_znode()
3266 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3267 znode->zbranch[n].offs == offs) in lookup_znode()
3268 return get_znode(c, znode, n); in lookup_znode()
3270 if (keys_cmp(c, &znode->zbranch[n].key, key) > 0) in lookup_znode()
3296 struct ubifs_znode *znode; in is_idx_node_in_tnc() local
3298 znode = lookup_znode(c, key, level, lnum, offs); in is_idx_node_in_tnc()
3299 if (!znode) in is_idx_node_in_tnc()
3301 if (IS_ERR(znode)) in is_idx_node_in_tnc()
3302 return PTR_ERR(znode); in is_idx_node_in_tnc()
3304 return ubifs_zn_dirty(znode) ? 1 : 2; in is_idx_node_in_tnc()
3324 struct ubifs_znode *znode, *zn; in is_leaf_node_in_tnc() local
3328 found = ubifs_lookup_level0(c, key, &znode, &n); in is_leaf_node_in_tnc()
3333 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3342 zn = znode; in is_leaf_node_in_tnc()
3346 err = tnc_prev(c, &znode, &n); in is_leaf_node_in_tnc()
3351 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3353 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3358 znode = zn; in is_leaf_node_in_tnc()
3361 err = tnc_next(c, &znode, &n); in is_leaf_node_in_tnc()
3367 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3369 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3433 struct ubifs_znode *znode; in ubifs_dirty_idx_node() local
3437 znode = lookup_znode(c, key, level, lnum, offs); in ubifs_dirty_idx_node()
3438 if (!znode) in ubifs_dirty_idx_node()
3440 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3441 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3444 znode = dirty_cow_bottom_up(c, znode); in ubifs_dirty_idx_node()
3445 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3446 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3471 struct ubifs_znode *znode; in dbg_check_inode_size() local
3484 err = ubifs_lookup_level0(c, &from_key, &znode, &n); in dbg_check_inode_size()
3493 err = tnc_next(c, &znode, &n); in dbg_check_inode_size()
3502 key = &znode->zbranch[n].key; in dbg_check_inode_size()