Lines Matching refs:zbr
26 struct ubifs_zbranch *zbr);
28 struct ubifs_zbranch *zbr, void *node);
122 struct ubifs_zbranch *zbr;
124 zbr = &znode->parent->zbranch[znode->iip];
125 if (zbr->len)
126 return insert_old_idx(c, zbr->lnum, zbr->offs);
147 struct ubifs_zbranch *zbr;
149 zbr = &znode->parent->zbranch[znode->iip];
150 if (zbr->len) {
151 err = insert_old_idx(c, zbr->lnum, zbr->offs);
154 zbr->lnum = 0;
155 zbr->offs = 0;
156 zbr->len = 0;
232 * @zbr: the branch of parent znode
237 struct ubifs_znode *old_zn, struct ubifs_zbranch *zbr)
255 zbr->znode = new_zn;
256 zbr->lnum = 0;
257 zbr->offs = 0;
258 zbr->len = 0;
266 * @zbr: branch of znode to check
271 struct ubifs_zbranch *zbr)
273 struct ubifs_znode *znode = zbr->znode;
283 err = add_idx_dirt(c, zbr->lnum, zbr->len);
294 if (zbr->len) {
302 old_idx->lnum = zbr->lnum;
303 old_idx->offs = zbr->offs;
305 err = add_idx_dirt(c, zbr->lnum, zbr->len);
314 replace_znode(c, zn, znode, zbr);
326 * @zbr: zbranch of leaf node
343 static int lnc_add(struct ubifs_info *c, struct ubifs_zbranch *zbr,
350 ubifs_assert(c, !zbr->leaf);
351 ubifs_assert(c, zbr->len != 0);
352 ubifs_assert(c, is_hash_key(c, &zbr->key));
357 ubifs_dump_node(c, dent, zbr->len);
361 lnc_node = kmemdup(node, zbr->len, GFP_NOFS);
366 zbr->leaf = lnc_node;
373 * @zbr: zbranch of leaf node
379 static int lnc_add_directly(struct ubifs_info *c, struct ubifs_zbranch *zbr,
384 ubifs_assert(c, !zbr->leaf);
385 ubifs_assert(c, zbr->len != 0);
390 ubifs_dump_node(c, node, zbr->len);
394 zbr->leaf = node;
400 * @zbr: zbranch of leaf node
402 static void lnc_free(struct ubifs_zbranch *zbr)
404 if (!zbr->leaf)
406 kfree(zbr->leaf);
407 zbr->leaf = NULL;
413 * @zbr: key and position of the node
416 * This function reads a "hashed" node defined by @zbr from the leaf node cache
421 static int tnc_read_hashed_node(struct ubifs_info *c, struct ubifs_zbranch *zbr,
426 ubifs_assert(c, is_hash_key(c, &zbr->key));
428 if (zbr->leaf) {
430 ubifs_assert(c, zbr->len != 0);
431 memcpy(node, zbr->leaf, zbr->len);
436 err = fallible_read_node(c, &zbr->key, zbr, node);
446 err = ubifs_tnc_read_node(c, zbr, node);
452 err = lnc_add(c, zbr, node);
461 * @zbr: the zbranch describing the node to read
479 struct ubifs_zbranch *zbr)
481 int len = zbr->len;
482 int lnum = zbr->lnum;
483 int offs = zbr->offs;
515 err = ubifs_node_check_hash(c, buf, zbr->hash);
517 ubifs_bad_hash(c, buf, zbr->hash, lnum, offs);
528 * @zbr: position of node
535 struct ubifs_zbranch *zbr, void *node)
539 dbg_tnck(key, "LEB %d:%d, key ", zbr->lnum, zbr->offs);
541 ret = try_read_node(c, node, key_type(c, key), zbr);
553 zbr->lnum, zbr->offs, zbr->len);
560 * @zbr: zbranch of dent
563 * This function checks if xentry/direntry referred by zbranch @zbr matches name
565 * @zbr is less than @nm, and %NAME_GREATER if it is greater than @nm. In case
568 static int matches_name(struct ubifs_info *c, struct ubifs_zbranch *zbr,
575 if (!zbr->leaf) {
576 dent = kmalloc(zbr->len, GFP_NOFS);
580 err = ubifs_tnc_read_node(c, zbr, dent);
585 err = lnc_add_directly(c, zbr, dent);
589 dent = zbr->leaf;
621 struct ubifs_zbranch *zbr;
623 zbr = &znode->zbranch[n];
624 if (zbr->znode)
625 znode = zbr->znode;
627 znode = ubifs_load_znode(c, zbr, znode, n);
843 * @zbr: zbranch of dent
847 * panic if the direntry/xentry referred by @zbr does not exist on the media.
849 * This function checks if xentry/direntry referred by zbranch @zbr matches name
850 * @nm. Returns %NAME_MATCHES it does, %NAME_LESS if the name referred by @zbr
852 * if xentry/direntry referred by @zbr does not exist on the media. A negative
856 struct ubifs_zbranch *zbr,
863 if (!zbr->leaf) {
864 dent = kmalloc(zbr->len, GFP_NOFS);
868 err = fallible_read_node(c, &zbr->key, zbr, dent);
878 err = lnc_add_directly(c, zbr, dent);
882 dent = zbr->leaf;
1039 * @zbr: zbranch of dent
1045 static int matches_position(struct ubifs_zbranch *zbr, int lnum, int offs)
1047 if (zbr->lnum == lnum && zbr->offs == offs)
1163 struct ubifs_zbranch *zbr;
1169 zbr = &zp->zbranch[path[--p]];
1170 znode = dirty_cow_znode(c, zbr);
1227 struct ubifs_zbranch *zbr;
1236 zbr = &znode->zbranch[*n];
1238 if (zbr->znode) {
1240 znode = zbr->znode;
1245 znode = ubifs_load_znode(c, zbr, znode, *n);
1366 struct ubifs_zbranch *zbr;
1375 zbr = &znode->zbranch[*n];
1377 if (zbr->znode) {
1379 znode = dirty_cow_znode(c, zbr);
1386 znode = ubifs_load_znode(c, zbr, znode, *n);
1389 znode = dirty_cow_znode(c, zbr);
1483 struct ubifs_zbranch zbr, *zt;
1513 zbr = znode->zbranch[n];
1517 if (ubifs_get_wbuf(c, zbr.lnum)) {
1519 err = ubifs_tnc_read_node(c, &zbr, node);
1523 err = fallible_read_node(c, key, &zbr, node);
1524 if (err <= 0 || maybe_leb_gced(c, zbr.lnum, gc_seq1)) {
1583 struct ubifs_zbranch *zbr;
1591 zbr = &znode->zbranch[n];
1592 key = &zbr->key;
1601 lnum = zbr->lnum;
1602 offs = ALIGN(zbr->offs + zbr->len, 8);
1603 len = zbr->len;
1613 if (zbr->lnum != lnum || zbr->offs != offs)
1615 offs += ALIGN(zbr->len, 8);
1616 len = ALIGN(len, 8) + zbr->len;
1628 bu->zbranch[bu->cnt++] = *zbr;
1723 * @zbr: zbranch of data node to validate
1728 struct ubifs_zbranch *zbr)
1740 err = ubifs_check_node(c, buf, zbr->len, zbr->lnum, zbr->offs, 0, 0);
1746 err = ubifs_node_check_hash(c, buf, zbr->hash);
1748 ubifs_bad_hash(c, buf, zbr->hash, zbr->lnum, zbr->offs);
1753 if (len != zbr->len) {
1754 ubifs_err(c, "bad node length %d, expected %d", len, zbr->len);
1760 if (!keys_eq(c, &zbr->key, &key1)) {
1762 zbr->lnum, zbr->offs);
1763 dbg_tnck(&zbr->key, "looked for key ");
1773 ubifs_err(c, "bad node at LEB %d:%d", zbr->lnum, zbr->offs);
1774 ubifs_dump_node(c, buf, zbr->len);
1926 struct ubifs_zbranch *zbr;
1936 zbr = &znode->zbranch[*n];
1937 dkey = &zbr->key;
1944 err = tnc_read_hashed_node(c, zbr, dent);
2058 * @zbr: zbranch to insert
2067 const struct ubifs_zbranch *zbr, int n)
2079 if (zbr->znode)
2080 zbr->znode->iip = n;
2085 znode->zbranch[n] = *zbr;
2110 * @zbr: branch to insert
2113 * This function inserts a new node described by @zbr into znode @znode. If
2119 struct ubifs_zbranch *zbr, int n)
2123 union ubifs_key *key = &zbr->key, *key1;
2134 insert_zbranch(c, znode, zbr, n);
2216 zbr->znode->parent = zn;
2243 insert_zbranch(c, zi, zbr, n);
2254 zbr->key = zn->zbranch[0].key;
2255 zbr->znode = zn;
2256 zbr->lnum = 0;
2257 zbr->offs = 0;
2258 zbr->len = 0;
2321 struct ubifs_zbranch zbr;
2323 zbr.znode = NULL;
2324 zbr.lnum = lnum;
2325 zbr.offs = offs;
2326 zbr.len = len;
2327 ubifs_copy_hash(c, hash, zbr.hash);
2328 key_copy(c, key, &zbr.key);
2329 err = tnc_insert(c, znode, &zbr, n + 1);
2331 struct ubifs_zbranch *zbr = &znode->zbranch[n];
2333 lnc_free(zbr);
2334 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2335 zbr->lnum = lnum;
2336 zbr->offs = offs;
2337 zbr->len = len;
2338 ubifs_copy_hash(c, hash, zbr->hash);
2378 struct ubifs_zbranch *zbr = &znode->zbranch[n];
2381 if (zbr->lnum == old_lnum && zbr->offs == old_offs) {
2382 lnc_free(zbr);
2383 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2386 zbr->lnum = lnum;
2387 zbr->offs = offs;
2388 zbr->len = len;
2409 zbr = &znode->zbranch[n];
2410 lnc_free(zbr);
2411 err = ubifs_add_dirt(c, zbr->lnum,
2412 zbr->len);
2415 zbr->lnum = lnum;
2416 zbr->offs = offs;
2417 zbr->len = len;
2483 struct ubifs_zbranch *zbr = &znode->zbranch[n];
2485 lnc_free(zbr);
2486 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2487 zbr->lnum = lnum;
2488 zbr->offs = offs;
2489 zbr->len = len;
2490 ubifs_copy_hash(c, hash, zbr->hash);
2496 struct ubifs_zbranch zbr;
2498 zbr.znode = NULL;
2499 zbr.lnum = lnum;
2500 zbr.offs = offs;
2501 zbr.len = len;
2502 ubifs_copy_hash(c, hash, zbr.hash);
2503 key_copy(c, key, &zbr.key);
2504 err = tnc_insert(c, znode, &zbr, n + 1);
2542 struct ubifs_zbranch *zbr;
2551 zbr = &znode->zbranch[n];
2552 lnc_free(zbr);
2554 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2611 zbr = &znode->zbranch[0];
2615 znode = dirty_cow_znode(c, zbr);
2626 c->zroot.lnum = zbr->lnum;
2627 c->zroot.offs = zbr->offs;
2628 c->zroot.len = zbr->len;
2738 struct ubifs_zbranch *zbr;
2748 zbr = &znode->zbranch[n];
2755 err = tnc_read_hashed_node(c, zbr, dent);
2995 struct ubifs_zbranch *zbr;
3042 zbr = &znode->zbranch[n];
3043 dent = kmalloc(zbr->len, GFP_NOFS);
3053 dkey = &zbr->key;
3060 err = tnc_read_hashed_node(c, zbr, dent);
3389 struct ubifs_zbranch *zbr;
3399 zbr = &znode->zbranch[n];
3400 if (lnum == zbr->lnum && offs == zbr->offs)
3419 zbr = &znode->zbranch[n];
3420 if (lnum == zbr->lnum && offs == zbr->offs)
3435 zbr = &znode->zbranch[n];
3436 if (lnum == zbr->lnum && offs == zbr->offs)