Lines Matching refs:znode

118 int insert_old_idx_znode(struct ubifs_info *c, struct ubifs_znode *znode)  in insert_old_idx_znode()  argument
120 if (znode->parent) { in insert_old_idx_znode()
123 zbr = &znode->parent->zbranch[znode->iip]; in insert_old_idx_znode()
141 struct ubifs_znode *znode) in ins_clr_old_idx_znode() argument
145 if (znode->parent) { in ins_clr_old_idx_znode()
148 zbr = &znode->parent->zbranch[znode->iip]; in ins_clr_old_idx_znode()
197 struct ubifs_znode *znode) in copy_znode() argument
205 memcpy(zn, znode, c->max_znode_sz); in copy_znode()
210 ubifs_assert(!ubifs_zn_obsolete(znode)); in copy_znode()
211 __set_bit(OBSOLETE_ZNODE, &znode->flags); in copy_znode()
213 if (znode->level != 0) { in copy_znode()
221 if (zbr->znode) in copy_znode()
222 zbr->znode->parent = zn; in copy_znode()
254 struct ubifs_znode *znode = zbr->znode; in dirty_cow_znode() local
258 if (!ubifs_zn_cow(znode)) { in dirty_cow_znode()
260 if (!test_and_set_bit(DIRTY_ZNODE, &znode->flags)) { in dirty_cow_znode()
268 return znode; in dirty_cow_znode()
271 zn = copy_znode(c, znode); in dirty_cow_znode()
283 zbr->znode = zn; in dirty_cow_znode()
585 struct ubifs_znode *znode, int n) in get_znode() argument
589 zbr = &znode->zbranch[n]; in get_znode()
590 if (zbr->znode) in get_znode()
591 znode = zbr->znode; in get_znode()
593 znode = ubifs_load_znode(c, zbr, znode, n); in get_znode()
594 return znode; in get_znode()
608 struct ubifs_znode *znode = *zn; in tnc_next() local
612 if (nn < znode->child_cnt) { in tnc_next()
619 zp = znode->parent; in tnc_next()
622 nn = znode->iip + 1; in tnc_next()
623 znode = zp; in tnc_next()
624 if (nn < znode->child_cnt) { in tnc_next()
625 znode = get_znode(c, znode, nn); in tnc_next()
626 if (IS_ERR(znode)) in tnc_next()
627 return PTR_ERR(znode); in tnc_next()
628 while (znode->level != 0) { in tnc_next()
629 znode = get_znode(c, znode, 0); in tnc_next()
630 if (IS_ERR(znode)) in tnc_next()
631 return PTR_ERR(znode); in tnc_next()
637 *zn = znode; in tnc_next()
653 struct ubifs_znode *znode = *zn; in tnc_prev() local
663 zp = znode->parent; in tnc_prev()
666 nn = znode->iip - 1; in tnc_prev()
667 znode = zp; in tnc_prev()
669 znode = get_znode(c, znode, nn); in tnc_prev()
670 if (IS_ERR(znode)) in tnc_prev()
671 return PTR_ERR(znode); in tnc_prev()
672 while (znode->level != 0) { in tnc_prev()
673 nn = znode->child_cnt - 1; in tnc_prev()
674 znode = get_znode(c, znode, nn); in tnc_prev()
675 if (IS_ERR(znode)) in tnc_prev()
676 return PTR_ERR(znode); in tnc_prev()
678 nn = znode->child_cnt - 1; in tnc_prev()
682 *zn = znode; in tnc_prev()
781 struct ubifs_znode *znode = *zn; in resolve_collision() local
785 err = tnc_next(c, &znode, &nn); in resolve_collision()
790 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision()
792 err = matches_name(c, &znode->zbranch[nn], nm); in resolve_collision()
797 *zn = znode; in resolve_collision()
896 struct ubifs_znode *o_znode = NULL, *znode = *zn; in fallible_resolve_collision() local
899 cmp = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
905 o_znode = znode; in fallible_resolve_collision()
964 *zn = znode; in fallible_resolve_collision()
967 err = tnc_next(c, &znode, &nn); in fallible_resolve_collision()
972 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in fallible_resolve_collision()
974 err = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
979 *zn = znode; in fallible_resolve_collision()
984 o_znode = znode; in fallible_resolve_collision()
1040 struct ubifs_znode *znode; in resolve_collision_directly() local
1043 znode = *zn; in resolve_collision_directly()
1045 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1050 err = tnc_prev(c, &znode, &nn); in resolve_collision_directly()
1055 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1057 if (matches_position(&znode->zbranch[nn], lnum, offs)) { in resolve_collision_directly()
1058 *zn = znode; in resolve_collision_directly()
1065 znode = *zn; in resolve_collision_directly()
1068 err = tnc_next(c, &znode, &nn); in resolve_collision_directly()
1073 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1075 *zn = znode; in resolve_collision_directly()
1077 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1093 struct ubifs_znode *znode) in dirty_cow_bottom_up() argument
1098 ubifs_assert(c->zroot.znode); in dirty_cow_bottom_up()
1099 ubifs_assert(znode); in dirty_cow_bottom_up()
1100 if (c->zroot.znode->level > BOTTOM_UP_HEIGHT) { in dirty_cow_bottom_up()
1102 c->bottom_up_buf = kmalloc(c->zroot.znode->level * sizeof(int), in dirty_cow_bottom_up()
1108 if (c->zroot.znode->level) { in dirty_cow_bottom_up()
1113 zp = znode->parent; in dirty_cow_bottom_up()
1116 n = znode->iip; in dirty_cow_bottom_up()
1117 ubifs_assert(p < c->zroot.znode->level); in dirty_cow_bottom_up()
1119 if (!zp->cnext && ubifs_zn_dirty(znode)) in dirty_cow_bottom_up()
1121 znode = zp; in dirty_cow_bottom_up()
1129 zp = znode->parent; in dirty_cow_bottom_up()
1134 znode = dirty_cow_znode(c, zbr); in dirty_cow_bottom_up()
1136 ubifs_assert(znode == c->zroot.znode); in dirty_cow_bottom_up()
1137 znode = dirty_cow_znode(c, &c->zroot); in dirty_cow_bottom_up()
1139 if (IS_ERR(znode) || !p) in dirty_cow_bottom_up()
1142 ubifs_assert(path[p - 1] < znode->child_cnt); in dirty_cow_bottom_up()
1143 znode = znode->zbranch[path[p - 1]].znode; in dirty_cow_bottom_up()
1146 return znode; in dirty_cow_bottom_up()
1175 struct ubifs_znode *znode; in ubifs_lookup_level0() local
1181 znode = c->zroot.znode; in ubifs_lookup_level0()
1182 if (unlikely(!znode)) { in ubifs_lookup_level0()
1183 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in ubifs_lookup_level0()
1184 if (IS_ERR(znode)) in ubifs_lookup_level0()
1185 return PTR_ERR(znode); in ubifs_lookup_level0()
1188 znode->time = time; in ubifs_lookup_level0()
1193 exact = ubifs_search_zbranch(c, znode, key, n); in ubifs_lookup_level0()
1195 if (znode->level == 0) in ubifs_lookup_level0()
1200 zbr = &znode->zbranch[*n]; in ubifs_lookup_level0()
1202 if (zbr->znode) { in ubifs_lookup_level0()
1203 znode->time = time; in ubifs_lookup_level0()
1204 znode = zbr->znode; in ubifs_lookup_level0()
1209 znode = ubifs_load_znode(c, zbr, znode, *n); in ubifs_lookup_level0()
1210 if (IS_ERR(znode)) in ubifs_lookup_level0()
1211 return PTR_ERR(znode); in ubifs_lookup_level0()
1214 *zn = znode; in ubifs_lookup_level0()
1216 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in ubifs_lookup_level0()
1263 err = tnc_prev(c, &znode, n); in ubifs_lookup_level0()
1265 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1271 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in ubifs_lookup_level0()
1272 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1277 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in ubifs_lookup_level0()
1278 *zn = znode; in ubifs_lookup_level0()
1311 struct ubifs_znode *znode; in lookup_level0_dirty() local
1316 znode = c->zroot.znode; in lookup_level0_dirty()
1317 if (unlikely(!znode)) { in lookup_level0_dirty()
1318 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_level0_dirty()
1319 if (IS_ERR(znode)) in lookup_level0_dirty()
1320 return PTR_ERR(znode); in lookup_level0_dirty()
1323 znode = dirty_cow_znode(c, &c->zroot); in lookup_level0_dirty()
1324 if (IS_ERR(znode)) in lookup_level0_dirty()
1325 return PTR_ERR(znode); in lookup_level0_dirty()
1327 znode->time = time; in lookup_level0_dirty()
1332 exact = ubifs_search_zbranch(c, znode, key, n); in lookup_level0_dirty()
1334 if (znode->level == 0) in lookup_level0_dirty()
1339 zbr = &znode->zbranch[*n]; in lookup_level0_dirty()
1341 if (zbr->znode) { in lookup_level0_dirty()
1342 znode->time = time; in lookup_level0_dirty()
1343 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1344 if (IS_ERR(znode)) in lookup_level0_dirty()
1345 return PTR_ERR(znode); in lookup_level0_dirty()
1350 znode = ubifs_load_znode(c, zbr, znode, *n); in lookup_level0_dirty()
1351 if (IS_ERR(znode)) in lookup_level0_dirty()
1352 return PTR_ERR(znode); in lookup_level0_dirty()
1353 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1354 if (IS_ERR(znode)) in lookup_level0_dirty()
1355 return PTR_ERR(znode); in lookup_level0_dirty()
1358 *zn = znode; in lookup_level0_dirty()
1360 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in lookup_level0_dirty()
1368 err = tnc_prev(c, &znode, n); in lookup_level0_dirty()
1371 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1376 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in lookup_level0_dirty()
1378 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1382 if (znode->cnext || !ubifs_zn_dirty(znode)) { in lookup_level0_dirty()
1383 znode = dirty_cow_bottom_up(c, znode); in lookup_level0_dirty()
1384 if (IS_ERR(znode)) in lookup_level0_dirty()
1385 return PTR_ERR(znode); in lookup_level0_dirty()
1388 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in lookup_level0_dirty()
1389 *zn = znode; in lookup_level0_dirty()
1450 struct ubifs_znode *znode; in ubifs_tnc_locate() local
1455 found = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_locate()
1463 zt = &znode->zbranch[n]; in ubifs_tnc_locate()
1481 zbr = znode->zbranch[n]; in ubifs_tnc_locate()
1525 struct ubifs_znode *znode; in ubifs_tnc_get_bu_keys() local
1533 err = ubifs_lookup_level0(c, &bu->key, &znode, &n); in ubifs_tnc_get_bu_keys()
1538 len = znode->zbranch[n].len; in ubifs_tnc_get_bu_keys()
1545 bu->zbranch[bu->cnt++] = znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1547 lnum = znode->zbranch[n].lnum; in ubifs_tnc_get_bu_keys()
1548 offs = ALIGN(znode->zbranch[n].offs + len, 8); in ubifs_tnc_get_bu_keys()
1556 err = tnc_next(c, &znode, &n); in ubifs_tnc_get_bu_keys()
1559 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_node_nm(c, &znode->zbranch[n], node); in do_lookup_nm()
1891 struct ubifs_znode *znode) in correct_parent_keys() argument
1895 ubifs_assert(znode->parent); in correct_parent_keys()
1896 ubifs_assert(znode->iip == 0); in correct_parent_keys()
1898 key = &znode->zbranch[0].key; in correct_parent_keys()
1899 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
1903 znode = znode->parent; in correct_parent_keys()
1904 znode->alt = 1; in correct_parent_keys()
1905 if (!znode->parent || znode->iip) in correct_parent_keys()
1907 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
1922 static void insert_zbranch(struct ubifs_znode *znode, in insert_zbranch() argument
1927 ubifs_assert(ubifs_zn_dirty(znode)); in insert_zbranch()
1929 if (znode->level) { in insert_zbranch()
1930 for (i = znode->child_cnt; i > n; i--) { in insert_zbranch()
1931 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
1932 if (znode->zbranch[i].znode) in insert_zbranch()
1933 znode->zbranch[i].znode->iip = i; in insert_zbranch()
1935 if (zbr->znode) in insert_zbranch()
1936 zbr->znode->iip = n; in insert_zbranch()
1938 for (i = znode->child_cnt; i > n; i--) in insert_zbranch()
1939 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
1941 znode->zbranch[n] = *zbr; in insert_zbranch()
1942 znode->child_cnt += 1; in insert_zbranch()
1959 znode->alt = 1; in insert_zbranch()
1974 static int tnc_insert(struct ubifs_info *c, struct ubifs_znode *znode, in tnc_insert() argument
1985 zp = znode->parent; in tnc_insert()
1986 if (znode->child_cnt < c->fanout) { in tnc_insert()
1988 dbg_tnck(key, "inserted at %d level %d, key ", n, znode->level); in tnc_insert()
1990 insert_zbranch(znode, zbr, n); in tnc_insert()
1993 if (n == 0 && zp && znode->iip == 0) in tnc_insert()
1994 correct_parent_keys(c, znode); in tnc_insert()
2003 dbg_tnck(key, "splitting level %d, key ", znode->level); in tnc_insert()
2005 if (znode->alt) in tnc_insert()
2010 ins_clr_old_idx_znode(c, znode); in tnc_insert()
2016 zn->level = znode->level; in tnc_insert()
2019 if (znode->level == 0 && key_type(c, key) == UBIFS_DATA_KEY) { in tnc_insert()
2022 key1 = &znode->zbranch[n - 1].key; in tnc_insert()
2033 key1 = &znode->zbranch[0].key; in tnc_insert()
2036 key1 = &znode->zbranch[n].key; in tnc_insert()
2041 zi = znode; in tnc_insert()
2063 zi = znode; in tnc_insert()
2072 zbr->znode->parent = zn; in tnc_insert()
2081 znode->child_cnt = keep; in tnc_insert()
2087 zn->zbranch[i] = znode->zbranch[keep + i]; in tnc_insert()
2090 if (zn->zbranch[i].znode) { in tnc_insert()
2091 zn->zbranch[i].znode->parent = zn; in tnc_insert()
2092 zn->zbranch[i].znode->iip = i; in tnc_insert()
2103 if (n == 0 && zi == znode && znode->iip == 0) in tnc_insert()
2104 correct_parent_keys(c, znode); in tnc_insert()
2107 n = znode->iip + 1; in tnc_insert()
2111 zbr->znode = zn; in tnc_insert()
2115 znode = zp; in tnc_insert()
2121 dbg_tnc("creating new zroot at level %d", znode->level + 1); in tnc_insert()
2128 zi->level = znode->level + 1; in tnc_insert()
2133 zi->zbranch[0].key = znode->zbranch[0].key; in tnc_insert()
2134 zi->zbranch[0].znode = znode; in tnc_insert()
2139 zi->zbranch[1].znode = zn; in tnc_insert()
2144 c->zroot.znode = zi; in tnc_insert()
2148 znode->parent = zi; in tnc_insert()
2149 znode->iip = 0; in tnc_insert()
2170 struct ubifs_znode *znode; in ubifs_tnc_add() local
2174 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add()
2178 zbr.znode = NULL; in ubifs_tnc_add()
2183 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add()
2185 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add()
2219 struct ubifs_znode *znode; in ubifs_tnc_replace() local
2224 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_replace()
2231 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2244 found = resolve_collision_directly(c, key, &znode, &n, in ubifs_tnc_replace()
2247 found, znode, n, old_lnum, old_offs); in ubifs_tnc_replace()
2255 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_replace()
2256 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_replace()
2257 if (IS_ERR(znode)) { in ubifs_tnc_replace()
2258 err = PTR_ERR(znode); in ubifs_tnc_replace()
2262 zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2302 struct ubifs_znode *znode; in ubifs_tnc_add_nm() local
2307 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add_nm()
2315 found = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_add_nm()
2318 found = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_add_nm()
2319 dbg_tnc("rc returned %d, znode %p, n %d", found, znode, n); in ubifs_tnc_add_nm()
2326 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_add_nm()
2327 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_add_nm()
2328 if (IS_ERR(znode)) { in ubifs_tnc_add_nm()
2329 err = PTR_ERR(znode); in ubifs_tnc_add_nm()
2335 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add_nm()
2349 zbr.znode = NULL; in ubifs_tnc_add_nm()
2354 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add_nm()
2390 static int tnc_delete(struct ubifs_info *c, struct ubifs_znode *znode, int n) in tnc_delete() argument
2397 ubifs_assert(znode->level == 0); in tnc_delete()
2399 dbg_tnck(&znode->zbranch[n].key, "deleting key "); in tnc_delete()
2401 zbr = &znode->zbranch[n]; in tnc_delete()
2406 ubifs_dump_znode(c, znode); in tnc_delete()
2411 for (i = n; i < znode->child_cnt - 1; i++) in tnc_delete()
2412 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2413 znode->child_cnt -= 1; in tnc_delete()
2415 if (znode->child_cnt > 0) in tnc_delete()
2424 ubifs_assert(!ubifs_zn_obsolete(znode)); in tnc_delete()
2425 ubifs_assert(ubifs_zn_dirty(znode)); in tnc_delete()
2427 zp = znode->parent; in tnc_delete()
2428 n = znode->iip; in tnc_delete()
2432 err = insert_old_idx_znode(c, znode); in tnc_delete()
2436 if (znode->cnext) { in tnc_delete()
2437 __set_bit(OBSOLETE_ZNODE, &znode->flags); in tnc_delete()
2441 kfree(znode); in tnc_delete()
2442 znode = zp; in tnc_delete()
2443 } while (znode->child_cnt == 1); /* while removing last child */ in tnc_delete()
2446 znode->child_cnt -= 1; in tnc_delete()
2447 ubifs_assert(znode->level != 0); in tnc_delete()
2448 for (i = n; i < znode->child_cnt; i++) { in tnc_delete()
2449 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2450 if (znode->zbranch[i].znode) in tnc_delete()
2451 znode->zbranch[i].znode->iip = i; in tnc_delete()
2458 if (!znode->parent) { in tnc_delete()
2459 while (znode->child_cnt == 1 && znode->level != 0) { in tnc_delete()
2460 zp = znode; in tnc_delete()
2461 zbr = &znode->zbranch[0]; in tnc_delete()
2462 znode = get_znode(c, znode, 0); in tnc_delete()
2463 if (IS_ERR(znode)) in tnc_delete()
2464 return PTR_ERR(znode); in tnc_delete()
2465 znode = dirty_cow_znode(c, zbr); in tnc_delete()
2466 if (IS_ERR(znode)) in tnc_delete()
2467 return PTR_ERR(znode); in tnc_delete()
2468 znode->parent = NULL; in tnc_delete()
2469 znode->iip = 0; in tnc_delete()
2479 c->zroot.znode = znode; in tnc_delete()
2506 struct ubifs_znode *znode; in ubifs_tnc_remove() local
2510 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove()
2516 err = tnc_delete(c, znode, n); in ubifs_tnc_remove()
2537 struct ubifs_znode *znode; in ubifs_tnc_remove_nm() local
2541 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_nm()
2547 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_remove_nm()
2550 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_remove_nm()
2551 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in ubifs_tnc_remove_nm()
2556 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_nm()
2557 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_nm()
2558 if (IS_ERR(znode)) { in ubifs_tnc_remove_nm()
2559 err = PTR_ERR(znode); in ubifs_tnc_remove_nm()
2563 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_nm()
2607 struct ubifs_znode *znode; in ubifs_tnc_remove_range() local
2613 err = ubifs_lookup_level0(c, from_key, &znode, &n); in ubifs_tnc_remove_range()
2620 err = tnc_next(c, &znode, &n); in ubifs_tnc_remove_range()
2627 key = &znode->zbranch[n].key; in ubifs_tnc_remove_range()
2635 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_range()
2636 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_range()
2637 if (IS_ERR(znode)) { in ubifs_tnc_remove_range()
2638 err = PTR_ERR(znode); in ubifs_tnc_remove_range()
2644 for (i = n + 1, k = 0; i < znode->child_cnt; i++, k++) { in ubifs_tnc_remove_range()
2645 key = &znode->zbranch[i].key; in ubifs_tnc_remove_range()
2648 lnc_free(&znode->zbranch[i]); in ubifs_tnc_remove_range()
2649 err = ubifs_add_dirt(c, znode->zbranch[i].lnum, in ubifs_tnc_remove_range()
2650 znode->zbranch[i].len); in ubifs_tnc_remove_range()
2652 ubifs_dump_znode(c, znode); in ubifs_tnc_remove_range()
2658 for (i = n + 1 + k; i < znode->child_cnt; i++) in ubifs_tnc_remove_range()
2659 znode->zbranch[i - k] = znode->zbranch[i]; in ubifs_tnc_remove_range()
2660 znode->child_cnt -= k; in ubifs_tnc_remove_range()
2664 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_range()
2770 struct ubifs_znode *znode; in ubifs_tnc_next_ent() local
2779 err = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_next_ent()
2787 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_next_ent()
2790 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_next_ent()
2792 err, znode, n); in ubifs_tnc_next_ent()
2798 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2813 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2819 zbr = &znode->zbranch[n]; in ubifs_tnc_next_ent()
2866 struct ubifs_znode *znode = cnext; in tnc_destroy_cnext() local
2869 if (ubifs_zn_obsolete(znode)) in tnc_destroy_cnext()
2870 kfree(znode); in tnc_destroy_cnext()
2881 if (c->zroot.znode) { in ubifs_tnc_close()
2885 freed = ubifs_destroy_tnc_subtree(c->zroot.znode); in ubifs_tnc_close()
2903 struct ubifs_znode *znode) in left_znode() argument
2905 int level = znode->level; in left_znode()
2908 int n = znode->iip - 1; in left_znode()
2911 znode = znode->parent; in left_znode()
2912 if (!znode) in left_znode()
2916 znode = get_znode(c, znode, n); in left_znode()
2917 if (IS_ERR(znode)) in left_znode()
2918 return znode; in left_znode()
2919 while (znode->level != level) { in left_znode()
2920 n = znode->child_cnt - 1; in left_znode()
2921 znode = get_znode(c, znode, n); in left_znode()
2922 if (IS_ERR(znode)) in left_znode()
2923 return znode; in left_znode()
2928 return znode; in left_znode()
2940 struct ubifs_znode *znode) in right_znode() argument
2942 int level = znode->level; in right_znode()
2945 int n = znode->iip + 1; in right_znode()
2948 znode = znode->parent; in right_znode()
2949 if (!znode) in right_znode()
2951 if (n < znode->child_cnt) { in right_znode()
2953 znode = get_znode(c, znode, n); in right_znode()
2954 if (IS_ERR(znode)) in right_znode()
2955 return znode; in right_znode()
2956 while (znode->level != level) { in right_znode()
2957 znode = get_znode(c, znode, 0); in right_znode()
2958 if (IS_ERR(znode)) in right_znode()
2959 return znode; in right_znode()
2964 return znode; in right_znode()
2996 struct ubifs_znode *znode, *zn; in lookup_znode() local
3009 znode = c->zroot.znode; in lookup_znode()
3010 if (!znode) { in lookup_znode()
3011 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_znode()
3012 if (IS_ERR(znode)) in lookup_znode()
3013 return znode; in lookup_znode()
3017 return znode; in lookup_znode()
3019 if (level >= znode->level) in lookup_znode()
3022 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3032 znode = left_znode(c, znode); in lookup_znode()
3033 if (!znode) in lookup_znode()
3035 if (IS_ERR(znode)) in lookup_znode()
3036 return znode; in lookup_znode()
3037 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3040 if (znode->level == level + 1) in lookup_znode()
3042 znode = get_znode(c, znode, n); in lookup_znode()
3043 if (IS_ERR(znode)) in lookup_znode()
3044 return znode; in lookup_znode()
3047 if (znode->zbranch[n].lnum == lnum && znode->zbranch[n].offs == offs) in lookup_znode()
3048 return get_znode(c, znode, n); in lookup_znode()
3056 zn = znode; in lookup_znode()
3064 znode = left_znode(c, znode); in lookup_znode()
3065 if (!znode) in lookup_znode()
3067 if (IS_ERR(znode)) in lookup_znode()
3068 return znode; in lookup_znode()
3069 n = znode->child_cnt - 1; in lookup_znode()
3072 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3073 znode->zbranch[n].offs == offs) in lookup_znode()
3074 return get_znode(c, znode, n); in lookup_znode()
3076 if (keys_cmp(c, &znode->zbranch[n].key, key) < 0) in lookup_znode()
3080 znode = zn; in lookup_znode()
3085 if (++n >= znode->child_cnt) { in lookup_znode()
3086 znode = right_znode(c, znode); in lookup_znode()
3087 if (!znode) in lookup_znode()
3089 if (IS_ERR(znode)) in lookup_znode()
3090 return znode; in lookup_znode()
3094 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3095 znode->zbranch[n].offs == offs) in lookup_znode()
3096 return get_znode(c, znode, n); in lookup_znode()
3098 if (keys_cmp(c, &znode->zbranch[n].key, key) > 0) in lookup_znode()
3124 struct ubifs_znode *znode; in is_idx_node_in_tnc() local
3126 znode = lookup_znode(c, key, level, lnum, offs); in is_idx_node_in_tnc()
3127 if (!znode) in is_idx_node_in_tnc()
3129 if (IS_ERR(znode)) in is_idx_node_in_tnc()
3130 return PTR_ERR(znode); in is_idx_node_in_tnc()
3132 return ubifs_zn_dirty(znode) ? 1 : 2; in is_idx_node_in_tnc()
3152 struct ubifs_znode *znode, *zn; in is_leaf_node_in_tnc() local
3156 found = ubifs_lookup_level0(c, key, &znode, &n); in is_leaf_node_in_tnc()
3161 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3170 zn = znode; in is_leaf_node_in_tnc()
3174 err = tnc_prev(c, &znode, &n); in is_leaf_node_in_tnc()
3179 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3181 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3186 znode = zn; in is_leaf_node_in_tnc()
3189 err = tnc_next(c, &znode, &n); in is_leaf_node_in_tnc()
3195 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3197 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3261 struct ubifs_znode *znode; in ubifs_dirty_idx_node() local
3265 znode = lookup_znode(c, key, level, lnum, offs); in ubifs_dirty_idx_node()
3266 if (!znode) in ubifs_dirty_idx_node()
3268 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3269 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3272 znode = dirty_cow_bottom_up(c, znode); in ubifs_dirty_idx_node()
3273 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3274 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3299 struct ubifs_znode *znode; in dbg_check_inode_size() local
3312 err = ubifs_lookup_level0(c, &from_key, &znode, &n); in dbg_check_inode_size()
3321 err = tnc_next(c, &znode, &n); in dbg_check_inode_size()
3330 key = &znode->zbranch[n].key; in dbg_check_inode_size()