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()
573 struct ubifs_znode *znode, int n) in get_znode() argument
577 zbr = &znode->zbranch[n]; in get_znode()
578 if (zbr->znode) in get_znode()
579 znode = zbr->znode; in get_znode()
581 znode = ubifs_load_znode(c, zbr, znode, n); in get_znode()
582 return znode; in get_znode()
596 struct ubifs_znode *znode = *zn; in tnc_next() local
600 if (nn < znode->child_cnt) { in tnc_next()
607 zp = znode->parent; in tnc_next()
610 nn = znode->iip + 1; in tnc_next()
611 znode = zp; in tnc_next()
612 if (nn < znode->child_cnt) { in tnc_next()
613 znode = get_znode(c, znode, nn); in tnc_next()
614 if (IS_ERR(znode)) in tnc_next()
615 return PTR_ERR(znode); in tnc_next()
616 while (znode->level != 0) { in tnc_next()
617 znode = get_znode(c, znode, 0); in tnc_next()
618 if (IS_ERR(znode)) in tnc_next()
619 return PTR_ERR(znode); in tnc_next()
625 *zn = znode; in tnc_next()
641 struct ubifs_znode *znode = *zn; in tnc_prev() local
651 zp = znode->parent; in tnc_prev()
654 nn = znode->iip - 1; in tnc_prev()
655 znode = zp; in tnc_prev()
657 znode = get_znode(c, znode, nn); in tnc_prev()
658 if (IS_ERR(znode)) in tnc_prev()
659 return PTR_ERR(znode); in tnc_prev()
660 while (znode->level != 0) { in tnc_prev()
661 nn = znode->child_cnt - 1; in tnc_prev()
662 znode = get_znode(c, znode, nn); in tnc_prev()
663 if (IS_ERR(znode)) in tnc_prev()
664 return PTR_ERR(znode); in tnc_prev()
666 nn = znode->child_cnt - 1; in tnc_prev()
670 *zn = znode; in tnc_prev()
769 struct ubifs_znode *znode = *zn; in resolve_collision() local
773 err = tnc_next(c, &znode, &nn); in resolve_collision()
778 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision()
780 err = matches_name(c, &znode->zbranch[nn], nm); in resolve_collision()
785 *zn = znode; in resolve_collision()
884 struct ubifs_znode *o_znode = NULL, *znode = *zn; in fallible_resolve_collision() local
887 cmp = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
893 o_znode = znode; in fallible_resolve_collision()
952 *zn = znode; in fallible_resolve_collision()
955 err = tnc_next(c, &znode, &nn); in fallible_resolve_collision()
960 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in fallible_resolve_collision()
962 err = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
967 *zn = znode; in fallible_resolve_collision()
972 o_znode = znode; in fallible_resolve_collision()
1028 struct ubifs_znode *znode; in resolve_collision_directly() local
1031 znode = *zn; in resolve_collision_directly()
1033 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1038 err = tnc_prev(c, &znode, &nn); in resolve_collision_directly()
1043 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1045 if (matches_position(&znode->zbranch[nn], lnum, offs)) { in resolve_collision_directly()
1046 *zn = znode; in resolve_collision_directly()
1053 znode = *zn; in resolve_collision_directly()
1056 err = tnc_next(c, &znode, &nn); in resolve_collision_directly()
1061 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1063 *zn = znode; in resolve_collision_directly()
1065 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1081 struct ubifs_znode *znode) in dirty_cow_bottom_up() argument
1086 ubifs_assert(c->zroot.znode); in dirty_cow_bottom_up()
1087 ubifs_assert(znode); in dirty_cow_bottom_up()
1088 if (c->zroot.znode->level > BOTTOM_UP_HEIGHT) { in dirty_cow_bottom_up()
1090 c->bottom_up_buf = kmalloc(c->zroot.znode->level * sizeof(int), in dirty_cow_bottom_up()
1096 if (c->zroot.znode->level) { in dirty_cow_bottom_up()
1101 zp = znode->parent; in dirty_cow_bottom_up()
1104 n = znode->iip; in dirty_cow_bottom_up()
1105 ubifs_assert(p < c->zroot.znode->level); in dirty_cow_bottom_up()
1107 if (!zp->cnext && ubifs_zn_dirty(znode)) in dirty_cow_bottom_up()
1109 znode = zp; in dirty_cow_bottom_up()
1117 zp = znode->parent; in dirty_cow_bottom_up()
1122 znode = dirty_cow_znode(c, zbr); in dirty_cow_bottom_up()
1124 ubifs_assert(znode == c->zroot.znode); in dirty_cow_bottom_up()
1125 znode = dirty_cow_znode(c, &c->zroot); in dirty_cow_bottom_up()
1127 if (IS_ERR(znode) || !p) in dirty_cow_bottom_up()
1130 ubifs_assert(path[p - 1] < znode->child_cnt); in dirty_cow_bottom_up()
1131 znode = znode->zbranch[path[p - 1]].znode; in dirty_cow_bottom_up()
1134 return znode; in dirty_cow_bottom_up()
1163 struct ubifs_znode *znode; in ubifs_lookup_level0() local
1169 znode = c->zroot.znode; in ubifs_lookup_level0()
1170 if (unlikely(!znode)) { in ubifs_lookup_level0()
1171 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in ubifs_lookup_level0()
1172 if (IS_ERR(znode)) in ubifs_lookup_level0()
1173 return PTR_ERR(znode); in ubifs_lookup_level0()
1176 znode->time = time; in ubifs_lookup_level0()
1181 exact = ubifs_search_zbranch(c, znode, key, n); in ubifs_lookup_level0()
1183 if (znode->level == 0) in ubifs_lookup_level0()
1188 zbr = &znode->zbranch[*n]; in ubifs_lookup_level0()
1190 if (zbr->znode) { in ubifs_lookup_level0()
1191 znode->time = time; in ubifs_lookup_level0()
1192 znode = zbr->znode; in ubifs_lookup_level0()
1197 znode = ubifs_load_znode(c, zbr, znode, *n); in ubifs_lookup_level0()
1198 if (IS_ERR(znode)) in ubifs_lookup_level0()
1199 return PTR_ERR(znode); in ubifs_lookup_level0()
1202 *zn = znode; in ubifs_lookup_level0()
1204 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in ubifs_lookup_level0()
1251 err = tnc_prev(c, &znode, n); in ubifs_lookup_level0()
1253 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1259 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in ubifs_lookup_level0()
1260 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1265 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in ubifs_lookup_level0()
1266 *zn = znode; in ubifs_lookup_level0()
1299 struct ubifs_znode *znode; in lookup_level0_dirty() local
1304 znode = c->zroot.znode; in lookup_level0_dirty()
1305 if (unlikely(!znode)) { in lookup_level0_dirty()
1306 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_level0_dirty()
1307 if (IS_ERR(znode)) in lookup_level0_dirty()
1308 return PTR_ERR(znode); in lookup_level0_dirty()
1311 znode = dirty_cow_znode(c, &c->zroot); in lookup_level0_dirty()
1312 if (IS_ERR(znode)) in lookup_level0_dirty()
1313 return PTR_ERR(znode); in lookup_level0_dirty()
1315 znode->time = time; in lookup_level0_dirty()
1320 exact = ubifs_search_zbranch(c, znode, key, n); in lookup_level0_dirty()
1322 if (znode->level == 0) in lookup_level0_dirty()
1327 zbr = &znode->zbranch[*n]; in lookup_level0_dirty()
1329 if (zbr->znode) { in lookup_level0_dirty()
1330 znode->time = time; in lookup_level0_dirty()
1331 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1332 if (IS_ERR(znode)) in lookup_level0_dirty()
1333 return PTR_ERR(znode); in lookup_level0_dirty()
1338 znode = ubifs_load_znode(c, zbr, znode, *n); in lookup_level0_dirty()
1339 if (IS_ERR(znode)) in lookup_level0_dirty()
1340 return PTR_ERR(znode); 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()
1346 *zn = znode; in lookup_level0_dirty()
1348 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in lookup_level0_dirty()
1356 err = tnc_prev(c, &znode, n); in lookup_level0_dirty()
1359 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1364 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in lookup_level0_dirty()
1366 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1370 if (znode->cnext || !ubifs_zn_dirty(znode)) { in lookup_level0_dirty()
1371 znode = dirty_cow_bottom_up(c, znode); in lookup_level0_dirty()
1372 if (IS_ERR(znode)) in lookup_level0_dirty()
1373 return PTR_ERR(znode); in lookup_level0_dirty()
1376 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in lookup_level0_dirty()
1377 *zn = znode; in lookup_level0_dirty()
1434 struct ubifs_znode *znode; in ubifs_tnc_locate() local
1439 found = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_locate()
1447 zt = &znode->zbranch[n]; in ubifs_tnc_locate()
1465 zbr = znode->zbranch[n]; in ubifs_tnc_locate()
1509 struct ubifs_znode *znode; in ubifs_tnc_get_bu_keys() local
1517 err = ubifs_lookup_level0(c, &bu->key, &znode, &n); in ubifs_tnc_get_bu_keys()
1522 len = znode->zbranch[n].len; in ubifs_tnc_get_bu_keys()
1529 bu->zbranch[bu->cnt++] = znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1531 lnum = znode->zbranch[n].lnum; in ubifs_tnc_get_bu_keys()
1532 offs = ALIGN(znode->zbranch[n].offs + len, 8); in ubifs_tnc_get_bu_keys()
1540 err = tnc_next(c, &znode, &n); in ubifs_tnc_get_bu_keys()
1543 zbr = &znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1796 struct ubifs_znode *znode; in do_lookup_nm() local
1800 found = ubifs_lookup_level0(c, key, &znode, &n); in do_lookup_nm()
1811 err = resolve_collision(c, key, &znode, &n, nm); in do_lookup_nm()
1812 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in do_lookup_nm()
1820 err = tnc_read_node_nm(c, &znode->zbranch[n], node); in do_lookup_nm()
1875 struct ubifs_znode *znode) in correct_parent_keys() argument
1879 ubifs_assert(znode->parent); in correct_parent_keys()
1880 ubifs_assert(znode->iip == 0); in correct_parent_keys()
1882 key = &znode->zbranch[0].key; in correct_parent_keys()
1883 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
1887 znode = znode->parent; in correct_parent_keys()
1888 znode->alt = 1; in correct_parent_keys()
1889 if (!znode->parent || znode->iip) in correct_parent_keys()
1891 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
1906 static void insert_zbranch(struct ubifs_znode *znode, in insert_zbranch() argument
1911 ubifs_assert(ubifs_zn_dirty(znode)); in insert_zbranch()
1913 if (znode->level) { in insert_zbranch()
1914 for (i = znode->child_cnt; i > n; i--) { in insert_zbranch()
1915 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
1916 if (znode->zbranch[i].znode) in insert_zbranch()
1917 znode->zbranch[i].znode->iip = i; in insert_zbranch()
1919 if (zbr->znode) in insert_zbranch()
1920 zbr->znode->iip = n; in insert_zbranch()
1922 for (i = znode->child_cnt; i > n; i--) in insert_zbranch()
1923 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
1925 znode->zbranch[n] = *zbr; in insert_zbranch()
1926 znode->child_cnt += 1; in insert_zbranch()
1943 znode->alt = 1; in insert_zbranch()
1958 static int tnc_insert(struct ubifs_info *c, struct ubifs_znode *znode, in tnc_insert() argument
1969 zp = znode->parent; in tnc_insert()
1970 if (znode->child_cnt < c->fanout) { in tnc_insert()
1972 dbg_tnck(key, "inserted at %d level %d, key ", n, znode->level); in tnc_insert()
1974 insert_zbranch(znode, zbr, n); in tnc_insert()
1977 if (n == 0 && zp && znode->iip == 0) in tnc_insert()
1978 correct_parent_keys(c, znode); in tnc_insert()
1987 dbg_tnck(key, "splitting level %d, key ", znode->level); in tnc_insert()
1989 if (znode->alt) in tnc_insert()
1994 ins_clr_old_idx_znode(c, znode); in tnc_insert()
2000 zn->level = znode->level; in tnc_insert()
2003 if (znode->level == 0 && key_type(c, key) == UBIFS_DATA_KEY) { in tnc_insert()
2006 key1 = &znode->zbranch[n - 1].key; in tnc_insert()
2017 key1 = &znode->zbranch[0].key; in tnc_insert()
2020 key1 = &znode->zbranch[n].key; in tnc_insert()
2025 zi = znode; in tnc_insert()
2047 zi = znode; in tnc_insert()
2056 zbr->znode->parent = zn; in tnc_insert()
2065 znode->child_cnt = keep; in tnc_insert()
2071 zn->zbranch[i] = znode->zbranch[keep + i]; in tnc_insert()
2074 if (zn->zbranch[i].znode) { in tnc_insert()
2075 zn->zbranch[i].znode->parent = zn; in tnc_insert()
2076 zn->zbranch[i].znode->iip = i; in tnc_insert()
2087 if (n == 0 && zi == znode && znode->iip == 0) in tnc_insert()
2088 correct_parent_keys(c, znode); in tnc_insert()
2091 n = znode->iip + 1; in tnc_insert()
2095 zbr->znode = zn; in tnc_insert()
2099 znode = zp; in tnc_insert()
2105 dbg_tnc("creating new zroot at level %d", znode->level + 1); in tnc_insert()
2112 zi->level = znode->level + 1; in tnc_insert()
2117 zi->zbranch[0].key = znode->zbranch[0].key; in tnc_insert()
2118 zi->zbranch[0].znode = znode; in tnc_insert()
2123 zi->zbranch[1].znode = zn; in tnc_insert()
2128 c->zroot.znode = zi; in tnc_insert()
2132 znode->parent = zi; in tnc_insert()
2133 znode->iip = 0; in tnc_insert()
2154 struct ubifs_znode *znode; in ubifs_tnc_add() local
2158 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add()
2162 zbr.znode = NULL; in ubifs_tnc_add()
2167 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add()
2169 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add()
2203 struct ubifs_znode *znode; in ubifs_tnc_replace() local
2208 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_replace()
2215 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2228 found = resolve_collision_directly(c, key, &znode, &n, in ubifs_tnc_replace()
2231 found, znode, n, old_lnum, old_offs); in ubifs_tnc_replace()
2239 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_replace()
2240 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_replace()
2241 if (IS_ERR(znode)) { in ubifs_tnc_replace()
2242 err = PTR_ERR(znode); in ubifs_tnc_replace()
2246 zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2286 struct ubifs_znode *znode; in ubifs_tnc_add_nm() local
2291 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add_nm()
2299 found = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_add_nm()
2302 found = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_add_nm()
2303 dbg_tnc("rc returned %d, znode %p, n %d", found, znode, n); in ubifs_tnc_add_nm()
2310 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_add_nm()
2311 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_add_nm()
2312 if (IS_ERR(znode)) { in ubifs_tnc_add_nm()
2313 err = PTR_ERR(znode); in ubifs_tnc_add_nm()
2319 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add_nm()
2333 zbr.znode = NULL; in ubifs_tnc_add_nm()
2338 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add_nm()
2374 static int tnc_delete(struct ubifs_info *c, struct ubifs_znode *znode, int n) in tnc_delete() argument
2381 ubifs_assert(znode->level == 0); in tnc_delete()
2383 dbg_tnck(&znode->zbranch[n].key, "deleting key "); in tnc_delete()
2385 zbr = &znode->zbranch[n]; in tnc_delete()
2390 ubifs_dump_znode(c, znode); in tnc_delete()
2395 for (i = n; i < znode->child_cnt - 1; i++) in tnc_delete()
2396 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2397 znode->child_cnt -= 1; in tnc_delete()
2399 if (znode->child_cnt > 0) in tnc_delete()
2408 ubifs_assert(!ubifs_zn_obsolete(znode)); in tnc_delete()
2409 ubifs_assert(ubifs_zn_dirty(znode)); in tnc_delete()
2411 zp = znode->parent; in tnc_delete()
2412 n = znode->iip; in tnc_delete()
2416 err = insert_old_idx_znode(c, znode); in tnc_delete()
2420 if (znode->cnext) { in tnc_delete()
2421 __set_bit(OBSOLETE_ZNODE, &znode->flags); in tnc_delete()
2425 kfree(znode); in tnc_delete()
2426 znode = zp; in tnc_delete()
2427 } while (znode->child_cnt == 1); /* while removing last child */ in tnc_delete()
2430 znode->child_cnt -= 1; in tnc_delete()
2431 ubifs_assert(znode->level != 0); in tnc_delete()
2432 for (i = n; i < znode->child_cnt; i++) { in tnc_delete()
2433 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2434 if (znode->zbranch[i].znode) in tnc_delete()
2435 znode->zbranch[i].znode->iip = i; in tnc_delete()
2442 if (!znode->parent) { in tnc_delete()
2443 while (znode->child_cnt == 1 && znode->level != 0) { in tnc_delete()
2444 zp = znode; in tnc_delete()
2445 zbr = &znode->zbranch[0]; in tnc_delete()
2446 znode = get_znode(c, znode, 0); in tnc_delete()
2447 if (IS_ERR(znode)) in tnc_delete()
2448 return PTR_ERR(znode); in tnc_delete()
2449 znode = dirty_cow_znode(c, zbr); in tnc_delete()
2450 if (IS_ERR(znode)) in tnc_delete()
2451 return PTR_ERR(znode); in tnc_delete()
2452 znode->parent = NULL; in tnc_delete()
2453 znode->iip = 0; in tnc_delete()
2463 c->zroot.znode = znode; in tnc_delete()
2490 struct ubifs_znode *znode; in ubifs_tnc_remove() local
2494 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove()
2500 err = tnc_delete(c, znode, n); in ubifs_tnc_remove()
2521 struct ubifs_znode *znode; in ubifs_tnc_remove_nm() local
2525 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_nm()
2531 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_remove_nm()
2534 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_remove_nm()
2535 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in ubifs_tnc_remove_nm()
2540 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_nm()
2541 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_nm()
2542 if (IS_ERR(znode)) { in ubifs_tnc_remove_nm()
2543 err = PTR_ERR(znode); in ubifs_tnc_remove_nm()
2547 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_nm()
2591 struct ubifs_znode *znode; in ubifs_tnc_remove_range() local
2597 err = ubifs_lookup_level0(c, from_key, &znode, &n); in ubifs_tnc_remove_range()
2604 err = tnc_next(c, &znode, &n); in ubifs_tnc_remove_range()
2611 key = &znode->zbranch[n].key; in ubifs_tnc_remove_range()
2619 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_range()
2620 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_range()
2621 if (IS_ERR(znode)) { in ubifs_tnc_remove_range()
2622 err = PTR_ERR(znode); in ubifs_tnc_remove_range()
2628 for (i = n + 1, k = 0; i < znode->child_cnt; i++, k++) { in ubifs_tnc_remove_range()
2629 key = &znode->zbranch[i].key; in ubifs_tnc_remove_range()
2632 lnc_free(&znode->zbranch[i]); in ubifs_tnc_remove_range()
2633 err = ubifs_add_dirt(c, znode->zbranch[i].lnum, in ubifs_tnc_remove_range()
2634 znode->zbranch[i].len); in ubifs_tnc_remove_range()
2636 ubifs_dump_znode(c, znode); in ubifs_tnc_remove_range()
2642 for (i = n + 1 + k; i < znode->child_cnt; i++) in ubifs_tnc_remove_range()
2643 znode->zbranch[i - k] = znode->zbranch[i]; in ubifs_tnc_remove_range()
2644 znode->child_cnt -= k; in ubifs_tnc_remove_range()
2648 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_range()
2754 struct ubifs_znode *znode; in ubifs_tnc_next_ent() local
2763 err = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_next_ent()
2770 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_next_ent()
2772 err, znode, n); in ubifs_tnc_next_ent()
2778 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2793 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2799 zbr = &znode->zbranch[n]; in ubifs_tnc_next_ent()
2846 struct ubifs_znode *znode = cnext; in tnc_destroy_cnext() local
2849 if (ubifs_zn_obsolete(znode)) in tnc_destroy_cnext()
2850 kfree(znode); in tnc_destroy_cnext()
2861 if (c->zroot.znode) { in ubifs_tnc_close()
2865 freed = ubifs_destroy_tnc_subtree(c->zroot.znode); in ubifs_tnc_close()
2883 struct ubifs_znode *znode) in left_znode() argument
2885 int level = znode->level; in left_znode()
2888 int n = znode->iip - 1; in left_znode()
2891 znode = znode->parent; in left_znode()
2892 if (!znode) in left_znode()
2896 znode = get_znode(c, znode, n); in left_znode()
2897 if (IS_ERR(znode)) in left_znode()
2898 return znode; in left_znode()
2899 while (znode->level != level) { in left_znode()
2900 n = znode->child_cnt - 1; in left_znode()
2901 znode = get_znode(c, znode, n); in left_znode()
2902 if (IS_ERR(znode)) in left_znode()
2903 return znode; in left_znode()
2908 return znode; in left_znode()
2920 struct ubifs_znode *znode) in right_znode() argument
2922 int level = znode->level; in right_znode()
2925 int n = znode->iip + 1; in right_znode()
2928 znode = znode->parent; in right_znode()
2929 if (!znode) in right_znode()
2931 if (n < znode->child_cnt) { in right_znode()
2933 znode = get_znode(c, znode, n); in right_znode()
2934 if (IS_ERR(znode)) in right_znode()
2935 return znode; in right_znode()
2936 while (znode->level != level) { in right_znode()
2937 znode = get_znode(c, znode, 0); in right_znode()
2938 if (IS_ERR(znode)) in right_znode()
2939 return znode; in right_znode()
2944 return znode; in right_znode()
2976 struct ubifs_znode *znode, *zn; in lookup_znode() local
2989 znode = c->zroot.znode; in lookup_znode()
2990 if (!znode) { in lookup_znode()
2991 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_znode()
2992 if (IS_ERR(znode)) in lookup_znode()
2993 return znode; in lookup_znode()
2997 return znode; in lookup_znode()
2999 if (level >= znode->level) in lookup_znode()
3002 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3012 znode = left_znode(c, znode); in lookup_znode()
3013 if (!znode) in lookup_znode()
3015 if (IS_ERR(znode)) in lookup_znode()
3016 return znode; in lookup_znode()
3017 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3020 if (znode->level == level + 1) in lookup_znode()
3022 znode = get_znode(c, znode, n); in lookup_znode()
3023 if (IS_ERR(znode)) in lookup_znode()
3024 return znode; in lookup_znode()
3027 if (znode->zbranch[n].lnum == lnum && znode->zbranch[n].offs == offs) in lookup_znode()
3028 return get_znode(c, znode, n); in lookup_znode()
3036 zn = znode; in lookup_znode()
3044 znode = left_znode(c, znode); in lookup_znode()
3045 if (!znode) in lookup_znode()
3047 if (IS_ERR(znode)) in lookup_znode()
3048 return znode; in lookup_znode()
3049 n = znode->child_cnt - 1; in lookup_znode()
3052 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3053 znode->zbranch[n].offs == offs) in lookup_znode()
3054 return get_znode(c, znode, n); in lookup_znode()
3056 if (keys_cmp(c, &znode->zbranch[n].key, key) < 0) in lookup_znode()
3060 znode = zn; in lookup_znode()
3065 if (++n >= znode->child_cnt) { in lookup_znode()
3066 znode = right_znode(c, znode); in lookup_znode()
3067 if (!znode) in lookup_znode()
3069 if (IS_ERR(znode)) in lookup_znode()
3070 return znode; in lookup_znode()
3074 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3075 znode->zbranch[n].offs == offs) in lookup_znode()
3076 return get_znode(c, znode, n); in lookup_znode()
3078 if (keys_cmp(c, &znode->zbranch[n].key, key) > 0) in lookup_znode()
3104 struct ubifs_znode *znode; in is_idx_node_in_tnc() local
3106 znode = lookup_znode(c, key, level, lnum, offs); in is_idx_node_in_tnc()
3107 if (!znode) in is_idx_node_in_tnc()
3109 if (IS_ERR(znode)) in is_idx_node_in_tnc()
3110 return PTR_ERR(znode); in is_idx_node_in_tnc()
3112 return ubifs_zn_dirty(znode) ? 1 : 2; in is_idx_node_in_tnc()
3132 struct ubifs_znode *znode, *zn; in is_leaf_node_in_tnc() local
3136 found = ubifs_lookup_level0(c, key, &znode, &n); in is_leaf_node_in_tnc()
3141 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3150 zn = znode; in is_leaf_node_in_tnc()
3154 err = tnc_prev(c, &znode, &n); in is_leaf_node_in_tnc()
3159 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3161 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3166 znode = zn; in is_leaf_node_in_tnc()
3169 err = tnc_next(c, &znode, &n); in is_leaf_node_in_tnc()
3175 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3177 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3241 struct ubifs_znode *znode; in ubifs_dirty_idx_node() local
3245 znode = lookup_znode(c, key, level, lnum, offs); in ubifs_dirty_idx_node()
3246 if (!znode) in ubifs_dirty_idx_node()
3248 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3249 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3252 znode = dirty_cow_bottom_up(c, znode); in ubifs_dirty_idx_node()
3253 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3254 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3279 struct ubifs_znode *znode; in dbg_check_inode_size() local
3292 err = ubifs_lookup_level0(c, &from_key, &znode, &n); in dbg_check_inode_size()
3301 err = tnc_next(c, &znode, &n); in dbg_check_inode_size()
3310 key = &znode->zbranch[n].key; in dbg_check_inode_size()