Lines Matching refs:znode
111 int insert_old_idx_znode(struct ubifs_info *c, struct ubifs_znode *znode) in insert_old_idx_znode() argument
113 if (znode->parent) { in insert_old_idx_znode()
116 zbr = &znode->parent->zbranch[znode->iip]; in insert_old_idx_znode()
134 struct ubifs_znode *znode) in ins_clr_old_idx_znode() argument
138 if (znode->parent) { in ins_clr_old_idx_znode()
141 zbr = &znode->parent->zbranch[znode->iip]; in ins_clr_old_idx_znode()
190 struct ubifs_znode *znode) in copy_znode() argument
194 zn = kmemdup(znode, c->max_znode_sz, GFP_NOFS); in copy_znode()
202 ubifs_assert(c, !ubifs_zn_obsolete(znode)); in copy_znode()
203 __set_bit(OBSOLETE_ZNODE, &znode->flags); in copy_znode()
205 if (znode->level != 0) { in copy_znode()
213 if (zbr->znode) in copy_znode()
214 zbr->znode->parent = zn; in copy_znode()
246 struct ubifs_znode *znode = zbr->znode; in dirty_cow_znode() local
250 if (!ubifs_zn_cow(znode)) { in dirty_cow_znode()
252 if (!test_and_set_bit(DIRTY_ZNODE, &znode->flags)) { in dirty_cow_znode()
260 return znode; in dirty_cow_znode()
263 zn = copy_znode(c, znode); in dirty_cow_znode()
275 zbr->znode = zn; in dirty_cow_znode()
582 struct ubifs_znode *znode, int n) in get_znode() argument
586 zbr = &znode->zbranch[n]; in get_znode()
587 if (zbr->znode) in get_znode()
588 znode = zbr->znode; in get_znode()
590 znode = ubifs_load_znode(c, zbr, znode, n); in get_znode()
591 return znode; in get_znode()
605 struct ubifs_znode *znode = *zn; in tnc_next() local
609 if (nn < znode->child_cnt) { in tnc_next()
616 zp = znode->parent; in tnc_next()
619 nn = znode->iip + 1; in tnc_next()
620 znode = zp; in tnc_next()
621 if (nn < znode->child_cnt) { in tnc_next()
622 znode = get_znode(c, znode, nn); in tnc_next()
623 if (IS_ERR(znode)) in tnc_next()
624 return PTR_ERR(znode); in tnc_next()
625 while (znode->level != 0) { in tnc_next()
626 znode = get_znode(c, znode, 0); in tnc_next()
627 if (IS_ERR(znode)) in tnc_next()
628 return PTR_ERR(znode); in tnc_next()
634 *zn = znode; in tnc_next()
650 struct ubifs_znode *znode = *zn; in tnc_prev() local
660 zp = znode->parent; in tnc_prev()
663 nn = znode->iip - 1; in tnc_prev()
664 znode = zp; in tnc_prev()
666 znode = get_znode(c, znode, nn); in tnc_prev()
667 if (IS_ERR(znode)) in tnc_prev()
668 return PTR_ERR(znode); in tnc_prev()
669 while (znode->level != 0) { in tnc_prev()
670 nn = znode->child_cnt - 1; in tnc_prev()
671 znode = get_znode(c, znode, nn); in tnc_prev()
672 if (IS_ERR(znode)) in tnc_prev()
673 return PTR_ERR(znode); in tnc_prev()
675 nn = znode->child_cnt - 1; in tnc_prev()
679 *zn = znode; in tnc_prev()
778 struct ubifs_znode *znode = *zn; in resolve_collision() local
782 err = tnc_next(c, &znode, &nn); in resolve_collision()
787 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision()
789 err = matches_name(c, &znode->zbranch[nn], nm); in resolve_collision()
794 *zn = znode; in resolve_collision()
894 struct ubifs_znode *o_znode = NULL, *znode = *zn; in fallible_resolve_collision() local
897 cmp = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
903 o_znode = znode; in fallible_resolve_collision()
962 *zn = znode; in fallible_resolve_collision()
965 err = tnc_next(c, &znode, &nn); in fallible_resolve_collision()
970 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in fallible_resolve_collision()
972 err = fallible_matches_name(c, &znode->zbranch[nn], nm); in fallible_resolve_collision()
977 *zn = znode; in fallible_resolve_collision()
982 o_znode = znode; in fallible_resolve_collision()
1038 struct ubifs_znode *znode; in resolve_collision_directly() local
1041 znode = *zn; in resolve_collision_directly()
1043 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1048 err = tnc_prev(c, &znode, &nn); in resolve_collision_directly()
1053 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1055 if (matches_position(&znode->zbranch[nn], lnum, offs)) { in resolve_collision_directly()
1056 *zn = znode; in resolve_collision_directly()
1063 znode = *zn; in resolve_collision_directly()
1066 err = tnc_next(c, &znode, &nn); in resolve_collision_directly()
1071 if (keys_cmp(c, &znode->zbranch[nn].key, key)) in resolve_collision_directly()
1073 *zn = znode; in resolve_collision_directly()
1075 if (matches_position(&znode->zbranch[nn], lnum, offs)) in resolve_collision_directly()
1091 struct ubifs_znode *znode) in dirty_cow_bottom_up() argument
1096 ubifs_assert(c, c->zroot.znode); in dirty_cow_bottom_up()
1097 ubifs_assert(c, znode); in dirty_cow_bottom_up()
1098 if (c->zroot.znode->level > BOTTOM_UP_HEIGHT) { in dirty_cow_bottom_up()
1100 c->bottom_up_buf = kmalloc_array(c->zroot.znode->level, in dirty_cow_bottom_up()
1107 if (c->zroot.znode->level) { in dirty_cow_bottom_up()
1112 zp = znode->parent; in dirty_cow_bottom_up()
1115 n = znode->iip; in dirty_cow_bottom_up()
1116 ubifs_assert(c, p < c->zroot.znode->level); in dirty_cow_bottom_up()
1118 if (!zp->cnext && ubifs_zn_dirty(znode)) in dirty_cow_bottom_up()
1120 znode = zp; in dirty_cow_bottom_up()
1128 zp = znode->parent; in dirty_cow_bottom_up()
1133 znode = dirty_cow_znode(c, zbr); in dirty_cow_bottom_up()
1135 ubifs_assert(c, znode == c->zroot.znode); in dirty_cow_bottom_up()
1136 znode = dirty_cow_znode(c, &c->zroot); in dirty_cow_bottom_up()
1138 if (IS_ERR(znode) || !p) in dirty_cow_bottom_up()
1141 ubifs_assert(c, path[p - 1] < znode->child_cnt); in dirty_cow_bottom_up()
1142 znode = znode->zbranch[path[p - 1]].znode; in dirty_cow_bottom_up()
1145 return znode; in dirty_cow_bottom_up()
1174 struct ubifs_znode *znode; in ubifs_lookup_level0() local
1180 znode = c->zroot.znode; in ubifs_lookup_level0()
1181 if (unlikely(!znode)) { in ubifs_lookup_level0()
1182 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in ubifs_lookup_level0()
1183 if (IS_ERR(znode)) in ubifs_lookup_level0()
1184 return PTR_ERR(znode); in ubifs_lookup_level0()
1187 znode->time = time; in ubifs_lookup_level0()
1192 exact = ubifs_search_zbranch(c, znode, key, n); in ubifs_lookup_level0()
1194 if (znode->level == 0) in ubifs_lookup_level0()
1199 zbr = &znode->zbranch[*n]; in ubifs_lookup_level0()
1201 if (zbr->znode) { in ubifs_lookup_level0()
1202 znode->time = time; in ubifs_lookup_level0()
1203 znode = zbr->znode; in ubifs_lookup_level0()
1208 znode = ubifs_load_znode(c, zbr, znode, *n); in ubifs_lookup_level0()
1209 if (IS_ERR(znode)) in ubifs_lookup_level0()
1210 return PTR_ERR(znode); in ubifs_lookup_level0()
1213 *zn = znode; in ubifs_lookup_level0()
1215 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in ubifs_lookup_level0()
1262 err = tnc_prev(c, &znode, n); in ubifs_lookup_level0()
1264 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1270 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in ubifs_lookup_level0()
1271 dbg_tnc("found 0, lvl %d, n -1", znode->level); in ubifs_lookup_level0()
1276 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in ubifs_lookup_level0()
1277 *zn = znode; in ubifs_lookup_level0()
1310 struct ubifs_znode *znode; in lookup_level0_dirty() local
1315 znode = c->zroot.znode; in lookup_level0_dirty()
1316 if (unlikely(!znode)) { in lookup_level0_dirty()
1317 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_level0_dirty()
1318 if (IS_ERR(znode)) in lookup_level0_dirty()
1319 return PTR_ERR(znode); in lookup_level0_dirty()
1322 znode = dirty_cow_znode(c, &c->zroot); in lookup_level0_dirty()
1323 if (IS_ERR(znode)) in lookup_level0_dirty()
1324 return PTR_ERR(znode); in lookup_level0_dirty()
1326 znode->time = time; in lookup_level0_dirty()
1331 exact = ubifs_search_zbranch(c, znode, key, n); in lookup_level0_dirty()
1333 if (znode->level == 0) in lookup_level0_dirty()
1338 zbr = &znode->zbranch[*n]; in lookup_level0_dirty()
1340 if (zbr->znode) { in lookup_level0_dirty()
1341 znode->time = time; in lookup_level0_dirty()
1342 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1343 if (IS_ERR(znode)) in lookup_level0_dirty()
1344 return PTR_ERR(znode); in lookup_level0_dirty()
1349 znode = ubifs_load_znode(c, zbr, znode, *n); in lookup_level0_dirty()
1350 if (IS_ERR(znode)) in lookup_level0_dirty()
1351 return PTR_ERR(znode); in lookup_level0_dirty()
1352 znode = dirty_cow_znode(c, zbr); in lookup_level0_dirty()
1353 if (IS_ERR(znode)) in lookup_level0_dirty()
1354 return PTR_ERR(znode); in lookup_level0_dirty()
1357 *zn = znode; in lookup_level0_dirty()
1359 dbg_tnc("found %d, lvl %d, n %d", exact, znode->level, *n); in lookup_level0_dirty()
1367 err = tnc_prev(c, &znode, n); in lookup_level0_dirty()
1370 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1375 if (keys_cmp(c, key, &znode->zbranch[*n].key)) { in lookup_level0_dirty()
1377 dbg_tnc("found 0, lvl %d, n -1", znode->level); in lookup_level0_dirty()
1381 if (znode->cnext || !ubifs_zn_dirty(znode)) { in lookup_level0_dirty()
1382 znode = dirty_cow_bottom_up(c, znode); in lookup_level0_dirty()
1383 if (IS_ERR(znode)) in lookup_level0_dirty()
1384 return PTR_ERR(znode); in lookup_level0_dirty()
1387 dbg_tnc("found 1, lvl %d, n %d", znode->level, *n); in lookup_level0_dirty()
1388 *zn = znode; in lookup_level0_dirty()
1445 struct ubifs_znode *znode; in ubifs_tnc_locate() local
1450 found = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_locate()
1458 zt = &znode->zbranch[n]; in ubifs_tnc_locate()
1476 zbr = znode->zbranch[n]; in ubifs_tnc_locate()
1520 struct ubifs_znode *znode; in ubifs_tnc_get_bu_keys() local
1528 err = ubifs_lookup_level0(c, &bu->key, &znode, &n); in ubifs_tnc_get_bu_keys()
1533 len = znode->zbranch[n].len; in ubifs_tnc_get_bu_keys()
1540 bu->zbranch[bu->cnt++] = znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1542 lnum = znode->zbranch[n].lnum; in ubifs_tnc_get_bu_keys()
1543 offs = ALIGN(znode->zbranch[n].offs + len, 8); in ubifs_tnc_get_bu_keys()
1551 err = tnc_next(c, &znode, &n); in ubifs_tnc_get_bu_keys()
1554 zbr = &znode->zbranch[n]; in ubifs_tnc_get_bu_keys()
1813 struct ubifs_znode *znode; in do_lookup_nm() local
1817 found = ubifs_lookup_level0(c, key, &znode, &n); in do_lookup_nm()
1828 err = resolve_collision(c, key, &znode, &n, nm); in do_lookup_nm()
1829 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in do_lookup_nm()
1837 err = tnc_read_hashed_node(c, &znode->zbranch[n], node); in do_lookup_nm()
1888 struct ubifs_znode *znode = *zn; in search_dh_cookie() local
1893 err = tnc_next(c, &znode, n); in search_dh_cookie()
1899 zbr = &znode->zbranch[*n]; in search_dh_cookie()
1913 *zn = znode; in search_dh_cookie()
1917 err = tnc_next(c, &znode, n); in search_dh_cookie()
1927 struct ubifs_znode *znode; in do_lookup_dh() local
1935 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in do_lookup_dh()
1939 err = search_dh_cookie(c, key, dent, cookie, &znode, &n, err); in do_lookup_dh()
1997 struct ubifs_znode *znode) in correct_parent_keys() argument
2001 ubifs_assert(c, znode->parent); in correct_parent_keys()
2002 ubifs_assert(c, znode->iip == 0); in correct_parent_keys()
2004 key = &znode->zbranch[0].key; in correct_parent_keys()
2005 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2009 znode = znode->parent; in correct_parent_keys()
2010 znode->alt = 1; in correct_parent_keys()
2011 if (!znode->parent || znode->iip) in correct_parent_keys()
2013 key1 = &znode->parent->zbranch[0].key; in correct_parent_keys()
2029 static void insert_zbranch(struct ubifs_info *c, struct ubifs_znode *znode, in insert_zbranch() argument
2034 ubifs_assert(c, ubifs_zn_dirty(znode)); in insert_zbranch()
2036 if (znode->level) { in insert_zbranch()
2037 for (i = znode->child_cnt; i > n; i--) { in insert_zbranch()
2038 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2039 if (znode->zbranch[i].znode) in insert_zbranch()
2040 znode->zbranch[i].znode->iip = i; in insert_zbranch()
2042 if (zbr->znode) in insert_zbranch()
2043 zbr->znode->iip = n; in insert_zbranch()
2045 for (i = znode->child_cnt; i > n; i--) in insert_zbranch()
2046 znode->zbranch[i] = znode->zbranch[i - 1]; in insert_zbranch()
2048 znode->zbranch[n] = *zbr; in insert_zbranch()
2049 znode->child_cnt += 1; in insert_zbranch()
2066 znode->alt = 1; in insert_zbranch()
2081 static int tnc_insert(struct ubifs_info *c, struct ubifs_znode *znode, in tnc_insert() argument
2092 zp = znode->parent; in tnc_insert()
2093 if (znode->child_cnt < c->fanout) { in tnc_insert()
2095 dbg_tnck(key, "inserted at %d level %d, key ", n, znode->level); in tnc_insert()
2097 insert_zbranch(c, znode, zbr, n); in tnc_insert()
2100 if (n == 0 && zp && znode->iip == 0) in tnc_insert()
2101 correct_parent_keys(c, znode); in tnc_insert()
2110 dbg_tnck(key, "splitting level %d, key ", znode->level); in tnc_insert()
2112 if (znode->alt) in tnc_insert()
2117 ins_clr_old_idx_znode(c, znode); in tnc_insert()
2123 zn->level = znode->level; in tnc_insert()
2126 if (znode->level == 0 && key_type(c, key) == UBIFS_DATA_KEY) { in tnc_insert()
2129 key1 = &znode->zbranch[n - 1].key; in tnc_insert()
2140 key1 = &znode->zbranch[0].key; in tnc_insert()
2143 key1 = &znode->zbranch[n].key; in tnc_insert()
2148 zi = znode; in tnc_insert()
2170 zi = znode; in tnc_insert()
2179 zbr->znode->parent = zn; in tnc_insert()
2188 znode->child_cnt = keep; in tnc_insert()
2194 zn->zbranch[i] = znode->zbranch[keep + i]; in tnc_insert()
2197 if (zn->zbranch[i].znode) { in tnc_insert()
2198 zn->zbranch[i].znode->parent = zn; in tnc_insert()
2199 zn->zbranch[i].znode->iip = i; in tnc_insert()
2210 if (n == 0 && zi == znode && znode->iip == 0) in tnc_insert()
2211 correct_parent_keys(c, znode); in tnc_insert()
2214 n = znode->iip + 1; in tnc_insert()
2218 zbr->znode = zn; in tnc_insert()
2222 znode = zp; in tnc_insert()
2228 dbg_tnc("creating new zroot at level %d", znode->level + 1); in tnc_insert()
2235 zi->level = znode->level + 1; in tnc_insert()
2240 zi->zbranch[0].key = znode->zbranch[0].key; in tnc_insert()
2241 zi->zbranch[0].znode = znode; in tnc_insert()
2246 zi->zbranch[1].znode = zn; in tnc_insert()
2251 c->zroot.znode = zi; in tnc_insert()
2255 znode->parent = zi; in tnc_insert()
2256 znode->iip = 0; in tnc_insert()
2278 struct ubifs_znode *znode; in ubifs_tnc_add() local
2282 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add()
2286 zbr.znode = NULL; in ubifs_tnc_add()
2292 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add()
2294 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add()
2329 struct ubifs_znode *znode; in ubifs_tnc_replace() local
2334 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_replace()
2341 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2354 found = resolve_collision_directly(c, key, &znode, &n, in ubifs_tnc_replace()
2357 found, znode, n, old_lnum, old_offs); in ubifs_tnc_replace()
2365 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_replace()
2366 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_replace()
2367 if (IS_ERR(znode)) { in ubifs_tnc_replace()
2368 err = PTR_ERR(znode); in ubifs_tnc_replace()
2372 zbr = &znode->zbranch[n]; in ubifs_tnc_replace()
2414 struct ubifs_znode *znode; in ubifs_tnc_add_nm() local
2418 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_add_nm()
2426 found = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_add_nm()
2429 found = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_add_nm()
2430 dbg_tnc("rc returned %d, znode %p, n %d", found, znode, n); in ubifs_tnc_add_nm()
2437 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_add_nm()
2438 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_add_nm()
2439 if (IS_ERR(znode)) { in ubifs_tnc_add_nm()
2440 err = PTR_ERR(znode); in ubifs_tnc_add_nm()
2446 struct ubifs_zbranch *zbr = &znode->zbranch[n]; in ubifs_tnc_add_nm()
2461 zbr.znode = NULL; in ubifs_tnc_add_nm()
2467 err = tnc_insert(c, znode, &zbr, n + 1); in ubifs_tnc_add_nm()
2503 static int tnc_delete(struct ubifs_info *c, struct ubifs_znode *znode, int n) in tnc_delete() argument
2510 ubifs_assert(c, znode->level == 0); in tnc_delete()
2512 dbg_tnck(&znode->zbranch[n].key, "deleting key "); in tnc_delete()
2514 zbr = &znode->zbranch[n]; in tnc_delete()
2519 ubifs_dump_znode(c, znode); in tnc_delete()
2524 for (i = n; i < znode->child_cnt - 1; i++) in tnc_delete()
2525 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2526 znode->child_cnt -= 1; in tnc_delete()
2528 if (znode->child_cnt > 0) in tnc_delete()
2537 ubifs_assert(c, !ubifs_zn_obsolete(znode)); in tnc_delete()
2538 ubifs_assert(c, ubifs_zn_dirty(znode)); in tnc_delete()
2540 zp = znode->parent; in tnc_delete()
2541 n = znode->iip; in tnc_delete()
2545 err = insert_old_idx_znode(c, znode); in tnc_delete()
2549 if (znode->cnext) { in tnc_delete()
2550 __set_bit(OBSOLETE_ZNODE, &znode->flags); in tnc_delete()
2554 kfree(znode); in tnc_delete()
2555 znode = zp; in tnc_delete()
2556 } while (znode->child_cnt == 1); /* while removing last child */ in tnc_delete()
2559 znode->child_cnt -= 1; in tnc_delete()
2560 ubifs_assert(c, znode->level != 0); in tnc_delete()
2561 for (i = n; i < znode->child_cnt; i++) { in tnc_delete()
2562 znode->zbranch[i] = znode->zbranch[i + 1]; in tnc_delete()
2563 if (znode->zbranch[i].znode) in tnc_delete()
2564 znode->zbranch[i].znode->iip = i; in tnc_delete()
2571 if (!znode->parent) { in tnc_delete()
2572 while (znode->child_cnt == 1 && znode->level != 0) { in tnc_delete()
2573 zp = znode; in tnc_delete()
2574 zbr = &znode->zbranch[0]; in tnc_delete()
2575 znode = get_znode(c, znode, 0); in tnc_delete()
2576 if (IS_ERR(znode)) in tnc_delete()
2577 return PTR_ERR(znode); in tnc_delete()
2578 znode = dirty_cow_znode(c, zbr); in tnc_delete()
2579 if (IS_ERR(znode)) in tnc_delete()
2580 return PTR_ERR(znode); in tnc_delete()
2581 znode->parent = NULL; in tnc_delete()
2582 znode->iip = 0; in tnc_delete()
2592 c->zroot.znode = znode; in tnc_delete()
2619 struct ubifs_znode *znode; in ubifs_tnc_remove() local
2623 found = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove()
2629 err = tnc_delete(c, znode, n); in ubifs_tnc_remove()
2650 struct ubifs_znode *znode; in ubifs_tnc_remove_nm() local
2654 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_nm()
2660 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_remove_nm()
2663 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_remove_nm()
2664 dbg_tnc("rc returned %d, znode %p, n %d", err, znode, n); in ubifs_tnc_remove_nm()
2669 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_nm()
2670 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_nm()
2671 if (IS_ERR(znode)) { in ubifs_tnc_remove_nm()
2672 err = PTR_ERR(znode); in ubifs_tnc_remove_nm()
2676 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_nm()
2699 struct ubifs_znode *znode; in ubifs_tnc_remove_dh() local
2707 err = lookup_level0_dirty(c, key, &znode, &n); in ubifs_tnc_remove_dh()
2711 zbr = &znode->zbranch[n]; in ubifs_tnc_remove_dh()
2728 err = ubifs_lookup_level0(c, &start_key, &znode, &n); in ubifs_tnc_remove_dh()
2732 err = search_dh_cookie(c, key, dent, cookie, &znode, &n, err); in ubifs_tnc_remove_dh()
2737 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_dh()
2738 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_dh()
2739 if (IS_ERR(znode)) { in ubifs_tnc_remove_dh()
2740 err = PTR_ERR(znode); in ubifs_tnc_remove_dh()
2744 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_dh()
2788 struct ubifs_znode *znode; in ubifs_tnc_remove_range() local
2794 err = ubifs_lookup_level0(c, from_key, &znode, &n); in ubifs_tnc_remove_range()
2801 err = tnc_next(c, &znode, &n); in ubifs_tnc_remove_range()
2808 key = &znode->zbranch[n].key; in ubifs_tnc_remove_range()
2816 if (znode->cnext || !ubifs_zn_dirty(znode)) { in ubifs_tnc_remove_range()
2817 znode = dirty_cow_bottom_up(c, znode); in ubifs_tnc_remove_range()
2818 if (IS_ERR(znode)) { in ubifs_tnc_remove_range()
2819 err = PTR_ERR(znode); in ubifs_tnc_remove_range()
2825 for (i = n + 1, k = 0; i < znode->child_cnt; i++, k++) { in ubifs_tnc_remove_range()
2826 key = &znode->zbranch[i].key; in ubifs_tnc_remove_range()
2829 lnc_free(&znode->zbranch[i]); in ubifs_tnc_remove_range()
2830 err = ubifs_add_dirt(c, znode->zbranch[i].lnum, in ubifs_tnc_remove_range()
2831 znode->zbranch[i].len); in ubifs_tnc_remove_range()
2833 ubifs_dump_znode(c, znode); in ubifs_tnc_remove_range()
2839 for (i = n + 1 + k; i < znode->child_cnt; i++) in ubifs_tnc_remove_range()
2840 znode->zbranch[i - k] = znode->zbranch[i]; in ubifs_tnc_remove_range()
2841 znode->child_cnt -= k; in ubifs_tnc_remove_range()
2845 err = tnc_delete(c, znode, n); in ubifs_tnc_remove_range()
2953 struct ubifs_znode *znode; in ubifs_tnc_next_ent() local
2962 err = ubifs_lookup_level0(c, key, &znode, &n); in ubifs_tnc_next_ent()
2970 err = fallible_resolve_collision(c, key, &znode, &n, in ubifs_tnc_next_ent()
2973 err = resolve_collision(c, key, &znode, &n, nm); in ubifs_tnc_next_ent()
2975 err, znode, n); in ubifs_tnc_next_ent()
2981 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
2996 err = tnc_next(c, &znode, &n); in ubifs_tnc_next_ent()
3002 zbr = &znode->zbranch[n]; in ubifs_tnc_next_ent()
3049 struct ubifs_znode *znode = cnext; in tnc_destroy_cnext() local
3052 if (ubifs_zn_obsolete(znode)) in tnc_destroy_cnext()
3053 kfree(znode); in tnc_destroy_cnext()
3064 if (c->zroot.znode) { in ubifs_tnc_close()
3068 freed = ubifs_destroy_tnc_subtree(c, c->zroot.znode); in ubifs_tnc_close()
3086 struct ubifs_znode *znode) in left_znode() argument
3088 int level = znode->level; in left_znode()
3091 int n = znode->iip - 1; in left_znode()
3094 znode = znode->parent; in left_znode()
3095 if (!znode) in left_znode()
3099 znode = get_znode(c, znode, n); in left_znode()
3100 if (IS_ERR(znode)) in left_znode()
3101 return znode; in left_znode()
3102 while (znode->level != level) { in left_znode()
3103 n = znode->child_cnt - 1; in left_znode()
3104 znode = get_znode(c, znode, n); in left_znode()
3105 if (IS_ERR(znode)) in left_znode()
3106 return znode; in left_znode()
3111 return znode; in left_znode()
3123 struct ubifs_znode *znode) in right_znode() argument
3125 int level = znode->level; in right_znode()
3128 int n = znode->iip + 1; in right_znode()
3131 znode = znode->parent; in right_znode()
3132 if (!znode) in right_znode()
3134 if (n < znode->child_cnt) { in right_znode()
3136 znode = get_znode(c, znode, n); in right_znode()
3137 if (IS_ERR(znode)) in right_znode()
3138 return znode; in right_znode()
3139 while (znode->level != level) { in right_znode()
3140 znode = get_znode(c, znode, 0); in right_znode()
3141 if (IS_ERR(znode)) in right_znode()
3142 return znode; in right_znode()
3147 return znode; in right_znode()
3179 struct ubifs_znode *znode, *zn; in lookup_znode() local
3192 znode = c->zroot.znode; in lookup_znode()
3193 if (!znode) { in lookup_znode()
3194 znode = ubifs_load_znode(c, &c->zroot, NULL, 0); in lookup_znode()
3195 if (IS_ERR(znode)) in lookup_znode()
3196 return znode; in lookup_znode()
3200 return znode; in lookup_znode()
3202 if (level >= znode->level) in lookup_znode()
3205 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3215 znode = left_znode(c, znode); in lookup_znode()
3216 if (!znode) in lookup_znode()
3218 if (IS_ERR(znode)) in lookup_znode()
3219 return znode; in lookup_znode()
3220 ubifs_search_zbranch(c, znode, key, &n); in lookup_znode()
3223 if (znode->level == level + 1) in lookup_znode()
3225 znode = get_znode(c, znode, n); in lookup_znode()
3226 if (IS_ERR(znode)) in lookup_znode()
3227 return znode; in lookup_znode()
3230 if (znode->zbranch[n].lnum == lnum && znode->zbranch[n].offs == offs) in lookup_znode()
3231 return get_znode(c, znode, n); in lookup_znode()
3239 zn = znode; in lookup_znode()
3247 znode = left_znode(c, znode); in lookup_znode()
3248 if (!znode) in lookup_znode()
3250 if (IS_ERR(znode)) in lookup_znode()
3251 return znode; in lookup_znode()
3252 n = znode->child_cnt - 1; in lookup_znode()
3255 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3256 znode->zbranch[n].offs == offs) in lookup_znode()
3257 return get_znode(c, znode, n); in lookup_znode()
3259 if (keys_cmp(c, &znode->zbranch[n].key, key) < 0) in lookup_znode()
3263 znode = zn; in lookup_znode()
3268 if (++n >= znode->child_cnt) { in lookup_znode()
3269 znode = right_znode(c, znode); in lookup_znode()
3270 if (!znode) in lookup_znode()
3272 if (IS_ERR(znode)) in lookup_znode()
3273 return znode; in lookup_znode()
3277 if (znode->zbranch[n].lnum == lnum && in lookup_znode()
3278 znode->zbranch[n].offs == offs) in lookup_znode()
3279 return get_znode(c, znode, n); in lookup_znode()
3281 if (keys_cmp(c, &znode->zbranch[n].key, key) > 0) in lookup_znode()
3307 struct ubifs_znode *znode; in is_idx_node_in_tnc() local
3309 znode = lookup_znode(c, key, level, lnum, offs); in is_idx_node_in_tnc()
3310 if (!znode) in is_idx_node_in_tnc()
3312 if (IS_ERR(znode)) in is_idx_node_in_tnc()
3313 return PTR_ERR(znode); in is_idx_node_in_tnc()
3315 return ubifs_zn_dirty(znode) ? 1 : 2; in is_idx_node_in_tnc()
3335 struct ubifs_znode *znode, *zn; in is_leaf_node_in_tnc() local
3339 found = ubifs_lookup_level0(c, key, &znode, &n); in is_leaf_node_in_tnc()
3344 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3353 zn = znode; in is_leaf_node_in_tnc()
3357 err = tnc_prev(c, &znode, &n); in is_leaf_node_in_tnc()
3362 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3364 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3369 znode = zn; in is_leaf_node_in_tnc()
3372 err = tnc_next(c, &znode, &n); in is_leaf_node_in_tnc()
3378 if (keys_cmp(c, key, &znode->zbranch[n].key)) in is_leaf_node_in_tnc()
3380 zbr = &znode->zbranch[n]; in is_leaf_node_in_tnc()
3444 struct ubifs_znode *znode; in ubifs_dirty_idx_node() local
3448 znode = lookup_znode(c, key, level, lnum, offs); in ubifs_dirty_idx_node()
3449 if (!znode) in ubifs_dirty_idx_node()
3451 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3452 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3455 znode = dirty_cow_bottom_up(c, znode); in ubifs_dirty_idx_node()
3456 if (IS_ERR(znode)) { in ubifs_dirty_idx_node()
3457 err = PTR_ERR(znode); in ubifs_dirty_idx_node()
3482 struct ubifs_znode *znode; in dbg_check_inode_size() local
3495 err = ubifs_lookup_level0(c, &from_key, &znode, &n); in dbg_check_inode_size()
3504 err = tnc_next(c, &znode, &n); in dbg_check_inode_size()
3513 key = &znode->zbranch[n].key; in dbg_check_inode_size()