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
201 zn = kmemdup(znode, c->max_znode_sz, GFP_NOFS); in copy_znode()
209 ubifs_assert(!ubifs_zn_obsolete(znode)); in copy_znode()
210 __set_bit(OBSOLETE_ZNODE, &znode->flags); in copy_znode()
212 if (znode->level != 0) { in copy_znode()
220 if (zbr->znode) in copy_znode()
221 zbr->znode->parent = zn; in copy_znode()
253 struct ubifs_znode *znode = zbr->znode; in dirty_cow_znode() local
257 if (!ubifs_zn_cow(znode)) { in dirty_cow_znode()
259 if (!test_and_set_bit(DIRTY_ZNODE, &znode->flags)) { in dirty_cow_znode()
267 return znode; in dirty_cow_znode()
270 zn = copy_znode(c, znode); in dirty_cow_znode()
282 zbr->znode = zn; in dirty_cow_znode()
572 struct ubifs_znode *znode, int n) in get_znode() argument
576 zbr = &znode->zbranch[n]; in get_znode()
577 if (zbr->znode) in get_znode()
578 znode = zbr->znode; in get_znode()
580 znode = ubifs_load_znode(c, zbr, znode, n); in get_znode()
581 return znode; in get_znode()
595 struct ubifs_znode *znode = *zn; in tnc_next() local
599 if (nn < znode->child_cnt) { in tnc_next()
606 zp = znode->parent; in tnc_next()
609 nn = znode->iip + 1; in tnc_next()
610 znode = zp; in tnc_next()
611 if (nn < znode->child_cnt) { in tnc_next()
612 znode = get_znode(c, znode, nn); in tnc_next()
613 if (IS_ERR(znode)) in tnc_next()
614 return PTR_ERR(znode); in tnc_next()
615 while (znode->level != 0) { in tnc_next()
616 znode = get_znode(c, znode, 0); in tnc_next()
617 if (IS_ERR(znode)) in tnc_next()
618 return PTR_ERR(znode); in tnc_next()
624 *zn = znode; in tnc_next()
640 struct ubifs_znode *znode = *zn; in tnc_prev() local
650 zp = znode->parent; in tnc_prev()
653 nn = znode->iip - 1; in tnc_prev()
654 znode = zp; in tnc_prev()
656 znode = get_znode(c, znode, nn); in tnc_prev()
657 if (IS_ERR(znode)) in tnc_prev()
658 return PTR_ERR(znode); in tnc_prev()
659 while (znode->level != 0) { in tnc_prev()
660 nn = znode->child_cnt - 1; in tnc_prev()
661 znode = get_znode(c, znode, nn); in tnc_prev()
662 if (IS_ERR(znode)) in tnc_prev()
663 return PTR_ERR(znode); in tnc_prev()
665 nn = znode->child_cnt - 1; in tnc_prev()
669 *zn = znode; in tnc_prev()
768 struct ubifs_znode *znode = *zn; in resolve_collision() local
772 err = tnc_next(c, &znode, &nn); in resolve_collision()
777 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision()
779 err = matches_name(c, &znode->zbranch[nn], nm); in resolve_collision()
784 *zn = znode; in resolve_collision()
883 struct ubifs_znode *o_znode = NULL, *znode = *zn; in fallible_resolve_collision() local
886 cmp = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
892 o_znode = znode; in fallible_resolve_collision()
951 *zn = znode; in fallible_resolve_collision()
954 err = tnc_next(c, &znode, &nn); in fallible_resolve_collision()
959 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in fallible_resolve_collision()
961 err = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
966 *zn = znode; in fallible_resolve_collision()
971 o_znode = znode; in fallible_resolve_collision()
1027 struct ubifs_znode *znode; in resolve_collision_directly() local
1030 znode = *zn; in resolve_collision_directly()
1032 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1037 err = tnc_prev(c, &znode, &nn); in resolve_collision_directly()
1042 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1044 if (matches_position(&znode->zbranch[nn], lnum, offs)) { in resolve_collision_directly()
1045 *zn = znode; in resolve_collision_directly()
1052 znode = *zn; in resolve_collision_directly()
1055 err = tnc_next(c, &znode, &nn); in resolve_collision_directly()
1060 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1062 *zn = znode; in resolve_collision_directly()
1064 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1080 struct ubifs_znode *znode) in dirty_cow_bottom_up() argument
1085 ubifs_assert(c->zroot.znode); in dirty_cow_bottom_up()
1086 ubifs_assert(znode); in dirty_cow_bottom_up()
1087 if (c->zroot.znode->level > BOTTOM_UP_HEIGHT) { in dirty_cow_bottom_up()
1089 c->bottom_up_buf = kmalloc(c->zroot.znode->level * sizeof(int), in dirty_cow_bottom_up()
1095 if (c->zroot.znode->level) { in dirty_cow_bottom_up()
1100 zp = znode->parent; in dirty_cow_bottom_up()
1103 n = znode->iip; in dirty_cow_bottom_up()
1104 ubifs_assert(p < c->zroot.znode->level); in dirty_cow_bottom_up()
1106 if (!zp->cnext && ubifs_zn_dirty(znode)) in dirty_cow_bottom_up()
1108 znode = zp; in dirty_cow_bottom_up()
1116 zp = znode->parent; in dirty_cow_bottom_up()
1121 znode = dirty_cow_znode(c, zbr); in dirty_cow_bottom_up()
1123 ubifs_assert(znode == c->zroot.znode); in dirty_cow_bottom_up()
1124 znode = dirty_cow_znode(c, &c->zroot); in dirty_cow_bottom_up()
1126 if (IS_ERR(znode) || !p) in dirty_cow_bottom_up()
1129 ubifs_assert(path[p - 1] < znode->child_cnt); in dirty_cow_bottom_up()
1130 znode = znode->zbranch[path[p - 1]].znode; in dirty_cow_bottom_up()
1133 return znode; in dirty_cow_bottom_up()
1162 struct ubifs_znode *znode; in ubifs_lookup_level0() local
1168 znode = c->zroot.znode; in ubifs_lookup_level0()
1169 if (unlikely(!znode)) { in ubifs_lookup_level0()
1170 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in ubifs_lookup_level0()
1171 if (IS_ERR(znode)) in ubifs_lookup_level0()
1172 return PTR_ERR(znode); in ubifs_lookup_level0()
1175 znode->time = time; in ubifs_lookup_level0()
1180 exact = ubifs_search_zbranch(c, znode, key, n); in ubifs_lookup_level0()
1182 if (znode->level == 0) in ubifs_lookup_level0()
1187 zbr = &znode->zbranch[*n]; in ubifs_lookup_level0()
1189 if (zbr->znode) { in ubifs_lookup_level0()
1190 znode->time = time; in ubifs_lookup_level0()
1191 znode = zbr->znode; in ubifs_lookup_level0()
1196 znode = ubifs_load_znode(c, zbr, znode, *n); in ubifs_lookup_level0()
1197 if (IS_ERR(znode)) in ubifs_lookup_level0()
1198 return PTR_ERR(znode); in ubifs_lookup_level0()
1201 *zn = znode; in ubifs_lookup_level0()
1203 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in ubifs_lookup_level0()
1250 err = tnc_prev(c, &znode, n); in ubifs_lookup_level0()
1252 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1258 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in ubifs_lookup_level0()
1259 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1264 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in ubifs_lookup_level0()
1265 *zn = znode; in ubifs_lookup_level0()
1298 struct ubifs_znode *znode; in lookup_level0_dirty() local
1303 znode = c->zroot.znode; in lookup_level0_dirty()
1304 if (unlikely(!znode)) { in lookup_level0_dirty()
1305 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_level0_dirty()
1306 if (IS_ERR(znode)) in lookup_level0_dirty()
1307 return PTR_ERR(znode); in lookup_level0_dirty()
1310 znode = dirty_cow_znode(c, &c->zroot); in lookup_level0_dirty()
1311 if (IS_ERR(znode)) in lookup_level0_dirty()
1312 return PTR_ERR(znode); in lookup_level0_dirty()
1314 znode->time = time; in lookup_level0_dirty()
1319 exact = ubifs_search_zbranch(c, znode, key, n); in lookup_level0_dirty()
1321 if (znode->level == 0) in lookup_level0_dirty()
1326 zbr = &znode->zbranch[*n]; in lookup_level0_dirty()
1328 if (zbr->znode) { in lookup_level0_dirty()
1329 znode->time = time; in lookup_level0_dirty()
1330 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1331 if (IS_ERR(znode)) in lookup_level0_dirty()
1332 return PTR_ERR(znode); in lookup_level0_dirty()
1337 znode = ubifs_load_znode(c, zbr, znode, *n); in lookup_level0_dirty()
1338 if (IS_ERR(znode)) in lookup_level0_dirty()
1339 return PTR_ERR(znode); in lookup_level0_dirty()
1340 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1341 if (IS_ERR(znode)) in lookup_level0_dirty()
1342 return PTR_ERR(znode); in lookup_level0_dirty()
1345 *zn = znode; in lookup_level0_dirty()
1347 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in lookup_level0_dirty()
1355 err = tnc_prev(c, &znode, n); in lookup_level0_dirty()
1358 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1363 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in lookup_level0_dirty()
1365 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1369 if (znode->cnext || !ubifs_zn_dirty(znode)) { in lookup_level0_dirty()
1370 znode = dirty_cow_bottom_up(c, znode); in lookup_level0_dirty()
1371 if (IS_ERR(znode)) in lookup_level0_dirty()
1372 return PTR_ERR(znode); in lookup_level0_dirty()
1375 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in lookup_level0_dirty()
1376 *zn = znode; in lookup_level0_dirty()
1433 struct ubifs_znode *znode; in ubifs_tnc_locate() local
1438 found = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_locate()
1446 zt = &znode->zbranch[n]; in ubifs_tnc_locate()
1464 zbr = znode->zbranch[n]; in ubifs_tnc_locate()
1508 struct ubifs_znode *znode; in ubifs_tnc_get_bu_keys() local
1516 err = ubifs_lookup_level0(c, &bu->key, &znode, &n); in ubifs_tnc_get_bu_keys()
1521 len = znode->zbranch[n].len; in ubifs_tnc_get_bu_keys()
1528 bu->zbranch[bu->cnt++] = znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1530 lnum = znode->zbranch[n].lnum; in ubifs_tnc_get_bu_keys()
1531 offs = ALIGN(znode->zbranch[n].offs + len, 8); in ubifs_tnc_get_bu_keys()
1539 err = tnc_next(c, &znode, &n); in ubifs_tnc_get_bu_keys()
1542 zbr = &znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1795 struct ubifs_znode *znode; in do_lookup_nm() local
1799 found = ubifs_lookup_level0(c, key, &znode, &n); in do_lookup_nm()
1810 err = resolve_collision(c, key, &znode, &n, nm); in do_lookup_nm()
1811 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in do_lookup_nm()
1819 err = tnc_read_node_nm(c, &znode->zbranch[n], node); in do_lookup_nm()
1874 struct ubifs_znode *znode) in correct_parent_keys() argument
1878 ubifs_assert(znode->parent); in correct_parent_keys()
1879 ubifs_assert(znode->iip == 0); in correct_parent_keys()
1881 key = &znode->zbranch[0].key; in correct_parent_keys()
1882 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
1886 znode = znode->parent; in correct_parent_keys()
1887 znode->alt = 1; in correct_parent_keys()
1888 if (!znode->parent || znode->iip) in correct_parent_keys()
1890 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
1905 static void insert_zbranch(struct ubifs_znode *znode, in insert_zbranch() argument
1910 ubifs_assert(ubifs_zn_dirty(znode)); in insert_zbranch()
1912 if (znode->level) { in insert_zbranch()
1913 for (i = znode->child_cnt; i > n; i--) { in insert_zbranch()
1914 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
1915 if (znode->zbranch[i].znode) in insert_zbranch()
1916 znode->zbranch[i].znode->iip = i; in insert_zbranch()
1918 if (zbr->znode) in insert_zbranch()
1919 zbr->znode->iip = n; in insert_zbranch()
1921 for (i = znode->child_cnt; i > n; i--) in insert_zbranch()
1922 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
1924 znode->zbranch[n] = *zbr; in insert_zbranch()
1925 znode->child_cnt += 1; in insert_zbranch()
1942 znode->alt = 1; in insert_zbranch()
1957 static int tnc_insert(struct ubifs_info *c, struct ubifs_znode *znode, in tnc_insert() argument
1968 zp = znode->parent; in tnc_insert()
1969 if (znode->child_cnt < c->fanout) { in tnc_insert()
1971 dbg_tnck(key, "inserted at %d level %d, key ", n, znode->level); in tnc_insert()
1973 insert_zbranch(znode, zbr, n); in tnc_insert()
1976 if (n == 0 && zp && znode->iip == 0) in tnc_insert()
1977 correct_parent_keys(c, znode); in tnc_insert()
1986 dbg_tnck(key, "splitting level %d, key ", znode->level); in tnc_insert()
1988 if (znode->alt) in tnc_insert()
1993 ins_clr_old_idx_znode(c, znode); in tnc_insert()
1999 zn->level = znode->level; in tnc_insert()
2002 if (znode->level == 0 && key_type(c, key) == UBIFS_DATA_KEY) { in tnc_insert()
2005 key1 = &znode->zbranch[n - 1].key; in tnc_insert()
2016 key1 = &znode->zbranch[0].key; in tnc_insert()
2019 key1 = &znode->zbranch[n].key; in tnc_insert()
2024 zi = znode; in tnc_insert()
2046 zi = znode; in tnc_insert()
2055 zbr->znode->parent = zn; in tnc_insert()
2064 znode->child_cnt = keep; in tnc_insert()
2070 zn->zbranch[i] = znode->zbranch[keep + i]; in tnc_insert()
2073 if (zn->zbranch[i].znode) { in tnc_insert()
2074 zn->zbranch[i].znode->parent = zn; in tnc_insert()
2075 zn->zbranch[i].znode->iip = i; in tnc_insert()
2086 if (n == 0 && zi == znode && znode->iip == 0) in tnc_insert()
2087 correct_parent_keys(c, znode); in tnc_insert()
2090 n = znode->iip + 1; in tnc_insert()
2094 zbr->znode = zn; in tnc_insert()
2098 znode = zp; in tnc_insert()
2104 dbg_tnc("creating new zroot at level %d", znode->level + 1); in tnc_insert()
2111 zi->level = znode->level + 1; in tnc_insert()
2116 zi->zbranch[0].key = znode->zbranch[0].key; in tnc_insert()
2117 zi->zbranch[0].znode = znode; in tnc_insert()
2122 zi->zbranch[1].znode = zn; in tnc_insert()
2127 c->zroot.znode = zi; in tnc_insert()
2131 znode->parent = zi; in tnc_insert()
2132 znode->iip = 0; in tnc_insert()
2153 struct ubifs_znode *znode; in ubifs_tnc_add() local
2157 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add()
2161 zbr.znode = NULL; in ubifs_tnc_add()
2166 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add()
2168 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add()
2202 struct ubifs_znode *znode; in ubifs_tnc_replace() local
2207 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_replace()
2214 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2227 found = resolve_collision_directly(c, key, &znode, &n, in ubifs_tnc_replace()
2230 found, znode, n, old_lnum, old_offs); in ubifs_tnc_replace()
2238 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_replace()
2239 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_replace()
2240 if (IS_ERR(znode)) { in ubifs_tnc_replace()
2241 err = PTR_ERR(znode); in ubifs_tnc_replace()
2245 zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2285 struct ubifs_znode *znode; in ubifs_tnc_add_nm() local
2290 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add_nm()
2298 found = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_add_nm()
2301 found = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_add_nm()
2302 dbg_tnc("rc returned %d, znode %p, n %d", found, znode, n); in ubifs_tnc_add_nm()
2309 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_add_nm()
2310 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_add_nm()
2311 if (IS_ERR(znode)) { in ubifs_tnc_add_nm()
2312 err = PTR_ERR(znode); in ubifs_tnc_add_nm()
2318 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add_nm()
2332 zbr.znode = NULL; in ubifs_tnc_add_nm()
2337 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add_nm()
2373 static int tnc_delete(struct ubifs_info *c, struct ubifs_znode *znode, int n) in tnc_delete() argument
2380 ubifs_assert(znode->level == 0); in tnc_delete()
2382 dbg_tnck(&znode->zbranch[n].key, "deleting key "); in tnc_delete()
2384 zbr = &znode->zbranch[n]; in tnc_delete()
2389 ubifs_dump_znode(c, znode); in tnc_delete()
2394 for (i = n; i < znode->child_cnt - 1; i++) in tnc_delete()
2395 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2396 znode->child_cnt -= 1; in tnc_delete()
2398 if (znode->child_cnt > 0) in tnc_delete()
2407 ubifs_assert(!ubifs_zn_obsolete(znode)); in tnc_delete()
2408 ubifs_assert(ubifs_zn_dirty(znode)); in tnc_delete()
2410 zp = znode->parent; in tnc_delete()
2411 n = znode->iip; in tnc_delete()
2415 err = insert_old_idx_znode(c, znode); in tnc_delete()
2419 if (znode->cnext) { in tnc_delete()
2420 __set_bit(OBSOLETE_ZNODE, &znode->flags); in tnc_delete()
2424 kfree(znode); in tnc_delete()
2425 znode = zp; in tnc_delete()
2426 } while (znode->child_cnt == 1); /* while removing last child */ in tnc_delete()
2429 znode->child_cnt -= 1; in tnc_delete()
2430 ubifs_assert(znode->level != 0); in tnc_delete()
2431 for (i = n; i < znode->child_cnt; i++) { in tnc_delete()
2432 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2433 if (znode->zbranch[i].znode) in tnc_delete()
2434 znode->zbranch[i].znode->iip = i; in tnc_delete()
2441 if (!znode->parent) { in tnc_delete()
2442 while (znode->child_cnt == 1 && znode->level != 0) { in tnc_delete()
2443 zp = znode; in tnc_delete()
2444 zbr = &znode->zbranch[0]; in tnc_delete()
2445 znode = get_znode(c, znode, 0); in tnc_delete()
2446 if (IS_ERR(znode)) in tnc_delete()
2447 return PTR_ERR(znode); in tnc_delete()
2448 znode = dirty_cow_znode(c, zbr); in tnc_delete()
2449 if (IS_ERR(znode)) in tnc_delete()
2450 return PTR_ERR(znode); in tnc_delete()
2451 znode->parent = NULL; in tnc_delete()
2452 znode->iip = 0; in tnc_delete()
2462 c->zroot.znode = znode; in tnc_delete()
2489 struct ubifs_znode *znode; in ubifs_tnc_remove() local
2493 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove()
2499 err = tnc_delete(c, znode, n); in ubifs_tnc_remove()
2520 struct ubifs_znode *znode; in ubifs_tnc_remove_nm() local
2524 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_nm()
2530 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_remove_nm()
2533 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_remove_nm()
2534 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in ubifs_tnc_remove_nm()
2539 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_nm()
2540 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_nm()
2541 if (IS_ERR(znode)) { in ubifs_tnc_remove_nm()
2542 err = PTR_ERR(znode); in ubifs_tnc_remove_nm()
2546 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_nm()
2590 struct ubifs_znode *znode; in ubifs_tnc_remove_range() local
2596 err = ubifs_lookup_level0(c, from_key, &znode, &n); in ubifs_tnc_remove_range()
2603 err = tnc_next(c, &znode, &n); in ubifs_tnc_remove_range()
2610 key = &znode->zbranch[n].key; in ubifs_tnc_remove_range()
2618 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_range()
2619 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_range()
2620 if (IS_ERR(znode)) { in ubifs_tnc_remove_range()
2621 err = PTR_ERR(znode); in ubifs_tnc_remove_range()
2627 for (i = n + 1, k = 0; i < znode->child_cnt; i++, k++) { in ubifs_tnc_remove_range()
2628 key = &znode->zbranch[i].key; in ubifs_tnc_remove_range()
2631 lnc_free(&znode->zbranch[i]); in ubifs_tnc_remove_range()
2632 err = ubifs_add_dirt(c, znode->zbranch[i].lnum, in ubifs_tnc_remove_range()
2633 znode->zbranch[i].len); in ubifs_tnc_remove_range()
2635 ubifs_dump_znode(c, znode); in ubifs_tnc_remove_range()
2641 for (i = n + 1 + k; i < znode->child_cnt; i++) in ubifs_tnc_remove_range()
2642 znode->zbranch[i - k] = znode->zbranch[i]; in ubifs_tnc_remove_range()
2643 znode->child_cnt -= k; in ubifs_tnc_remove_range()
2647 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_range()
2753 struct ubifs_znode *znode; in ubifs_tnc_next_ent() local
2762 err = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_next_ent()
2769 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_next_ent()
2771 err, znode, n); in ubifs_tnc_next_ent()
2777 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2792 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2798 zbr = &znode->zbranch[n]; in ubifs_tnc_next_ent()
2845 struct ubifs_znode *znode = cnext; in tnc_destroy_cnext() local
2848 if (ubifs_zn_obsolete(znode)) in tnc_destroy_cnext()
2849 kfree(znode); in tnc_destroy_cnext()
2860 if (c->zroot.znode) { in ubifs_tnc_close()
2864 freed = ubifs_destroy_tnc_subtree(c->zroot.znode); in ubifs_tnc_close()
2882 struct ubifs_znode *znode) in left_znode() argument
2884 int level = znode->level; in left_znode()
2887 int n = znode->iip - 1; in left_znode()
2890 znode = znode->parent; in left_znode()
2891 if (!znode) in left_znode()
2895 znode = get_znode(c, znode, n); in left_znode()
2896 if (IS_ERR(znode)) in left_znode()
2897 return znode; in left_znode()
2898 while (znode->level != level) { in left_znode()
2899 n = znode->child_cnt - 1; in left_znode()
2900 znode = get_znode(c, znode, n); in left_znode()
2901 if (IS_ERR(znode)) in left_znode()
2902 return znode; in left_znode()
2907 return znode; in left_znode()
2919 struct ubifs_znode *znode) in right_znode() argument
2921 int level = znode->level; in right_znode()
2924 int n = znode->iip + 1; in right_znode()
2927 znode = znode->parent; in right_znode()
2928 if (!znode) in right_znode()
2930 if (n < znode->child_cnt) { in right_znode()
2932 znode = get_znode(c, znode, n); in right_znode()
2933 if (IS_ERR(znode)) in right_znode()
2934 return znode; in right_znode()
2935 while (znode->level != level) { in right_znode()
2936 znode = get_znode(c, znode, 0); in right_znode()
2937 if (IS_ERR(znode)) in right_znode()
2938 return znode; in right_znode()
2943 return znode; in right_znode()
2975 struct ubifs_znode *znode, *zn; in lookup_znode() local
2988 znode = c->zroot.znode; in lookup_znode()
2989 if (!znode) { in lookup_znode()
2990 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_znode()
2991 if (IS_ERR(znode)) in lookup_znode()
2992 return znode; in lookup_znode()
2996 return znode; in lookup_znode()
2998 if (level >= znode->level) in lookup_znode()
3001 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3011 znode = left_znode(c, znode); in lookup_znode()
3012 if (!znode) in lookup_znode()
3014 if (IS_ERR(znode)) in lookup_znode()
3015 return znode; in lookup_znode()
3016 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3019 if (znode->level == level + 1) in lookup_znode()
3021 znode = get_znode(c, znode, n); in lookup_znode()
3022 if (IS_ERR(znode)) in lookup_znode()
3023 return znode; in lookup_znode()
3026 if (znode->zbranch[n].lnum == lnum && znode->zbranch[n].offs == offs) in lookup_znode()
3027 return get_znode(c, znode, n); in lookup_znode()
3035 zn = znode; in lookup_znode()
3043 znode = left_znode(c, znode); in lookup_znode()
3044 if (!znode) in lookup_znode()
3046 if (IS_ERR(znode)) in lookup_znode()
3047 return znode; in lookup_znode()
3048 n = znode->child_cnt - 1; in lookup_znode()
3051 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3052 znode->zbranch[n].offs == offs) in lookup_znode()
3053 return get_znode(c, znode, n); in lookup_znode()
3055 if (keys_cmp(c, &znode->zbranch[n].key, key) < 0) in lookup_znode()
3059 znode = zn; in lookup_znode()
3064 if (++n >= znode->child_cnt) { in lookup_znode()
3065 znode = right_znode(c, znode); in lookup_znode()
3066 if (!znode) in lookup_znode()
3068 if (IS_ERR(znode)) in lookup_znode()
3069 return znode; in lookup_znode()
3073 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3074 znode->zbranch[n].offs == offs) in lookup_znode()
3075 return get_znode(c, znode, n); in lookup_znode()
3077 if (keys_cmp(c, &znode->zbranch[n].key, key) > 0) in lookup_znode()
3103 struct ubifs_znode *znode; in is_idx_node_in_tnc() local
3105 znode = lookup_znode(c, key, level, lnum, offs); in is_idx_node_in_tnc()
3106 if (!znode) in is_idx_node_in_tnc()
3108 if (IS_ERR(znode)) in is_idx_node_in_tnc()
3109 return PTR_ERR(znode); in is_idx_node_in_tnc()
3111 return ubifs_zn_dirty(znode) ? 1 : 2; in is_idx_node_in_tnc()
3131 struct ubifs_znode *znode, *zn; in is_leaf_node_in_tnc() local
3135 found = ubifs_lookup_level0(c, key, &znode, &n); in is_leaf_node_in_tnc()
3140 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3149 zn = znode; in is_leaf_node_in_tnc()
3153 err = tnc_prev(c, &znode, &n); in is_leaf_node_in_tnc()
3158 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3160 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3165 znode = zn; in is_leaf_node_in_tnc()
3168 err = tnc_next(c, &znode, &n); in is_leaf_node_in_tnc()
3174 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3176 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3240 struct ubifs_znode *znode; in ubifs_dirty_idx_node() local
3244 znode = lookup_znode(c, key, level, lnum, offs); in ubifs_dirty_idx_node()
3245 if (!znode) in ubifs_dirty_idx_node()
3247 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3248 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3251 znode = dirty_cow_bottom_up(c, znode); in ubifs_dirty_idx_node()
3252 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3253 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3278 struct ubifs_znode *znode; in dbg_check_inode_size() local
3291 err = ubifs_lookup_level0(c, &from_key, &znode, &n); in dbg_check_inode_size()
3300 err = tnc_next(c, &znode, &n); in dbg_check_inode_size()
3309 key = &znode->zbranch[n].key; in dbg_check_inode_size()