Lines Matching refs:zbr

26 			 struct ubifs_zbranch *zbr);
28 struct ubifs_zbranch *zbr, void *node);
121 struct ubifs_zbranch *zbr;
123 zbr = &znode->parent->zbranch[znode->iip];
124 if (zbr->len)
125 return insert_old_idx(c, zbr->lnum, zbr->offs);
146 struct ubifs_zbranch *zbr;
148 zbr = &znode->parent->zbranch[znode->iip];
149 if (zbr->len) {
150 err = insert_old_idx(c, zbr->lnum, zbr->offs);
153 zbr->lnum = 0;
154 zbr->offs = 0;
155 zbr->len = 0;
231 * @zbr: the branch of parent znode
236 struct ubifs_znode *old_zn, struct ubifs_zbranch *zbr)
254 zbr->znode = new_zn;
255 zbr->lnum = 0;
256 zbr->offs = 0;
257 zbr->len = 0;
265 * @zbr: branch of znode to check
270 struct ubifs_zbranch *zbr)
272 struct ubifs_znode *znode = zbr->znode;
282 err = add_idx_dirt(c, zbr->lnum, zbr->len);
293 if (zbr->len) {
301 old_idx->lnum = zbr->lnum;
302 old_idx->offs = zbr->offs;
304 err = add_idx_dirt(c, zbr->lnum, zbr->len);
313 replace_znode(c, zn, znode, zbr);
325 * @zbr: zbranch of leaf node
342 static int lnc_add(struct ubifs_info *c, struct ubifs_zbranch *zbr,
349 ubifs_assert(c, !zbr->leaf);
350 ubifs_assert(c, zbr->len != 0);
351 ubifs_assert(c, is_hash_key(c, &zbr->key));
356 ubifs_dump_node(c, dent, zbr->len);
360 lnc_node = kmemdup(node, zbr->len, GFP_NOFS);
365 zbr->leaf = lnc_node;
372 * @zbr: zbranch of leaf node
378 static int lnc_add_directly(struct ubifs_info *c, struct ubifs_zbranch *zbr,
383 ubifs_assert(c, !zbr->leaf);
384 ubifs_assert(c, zbr->len != 0);
389 ubifs_dump_node(c, node, zbr->len);
393 zbr->leaf = node;
399 * @zbr: zbranch of leaf node
401 static void lnc_free(struct ubifs_zbranch *zbr)
403 if (!zbr->leaf)
405 kfree(zbr->leaf);
406 zbr->leaf = NULL;
412 * @zbr: key and position of the node
415 * This function reads a "hashed" node defined by @zbr from the leaf node cache
420 static int tnc_read_hashed_node(struct ubifs_info *c, struct ubifs_zbranch *zbr,
425 ubifs_assert(c, is_hash_key(c, &zbr->key));
427 if (zbr->leaf) {
429 ubifs_assert(c, zbr->len != 0);
430 memcpy(node, zbr->leaf, zbr->len);
435 err = fallible_read_node(c, &zbr->key, zbr, node);
445 err = ubifs_tnc_read_node(c, zbr, node);
451 err = lnc_add(c, zbr, node);
460 * @zbr: the zbranch describing the node to read
478 struct ubifs_zbranch *zbr)
480 int len = zbr->len;
481 int lnum = zbr->lnum;
482 int offs = zbr->offs;
514 err = ubifs_node_check_hash(c, buf, zbr->hash);
516 ubifs_bad_hash(c, buf, zbr->hash, lnum, offs);
527 * @zbr: position of node
534 struct ubifs_zbranch *zbr, void *node)
538 dbg_tnck(key, "LEB %d:%d, key ", zbr->lnum, zbr->offs);
540 ret = try_read_node(c, node, key_type(c, key), zbr);
552 zbr->lnum, zbr->offs, zbr->len);
559 * @zbr: zbranch of dent
562 * This function checks if xentry/direntry referred by zbranch @zbr matches name
564 * @zbr is less than @nm, and %NAME_GREATER if it is greater than @nm. In case
567 static int matches_name(struct ubifs_info *c, struct ubifs_zbranch *zbr,
574 if (!zbr->leaf) {
575 dent = kmalloc(zbr->len, GFP_NOFS);
579 err = ubifs_tnc_read_node(c, zbr, dent);
584 err = lnc_add_directly(c, zbr, dent);
588 dent = zbr->leaf;
620 struct ubifs_zbranch *zbr;
622 zbr = &znode->zbranch[n];
623 if (zbr->znode)
624 znode = zbr->znode;
626 znode = ubifs_load_znode(c, zbr, znode, n);
842 * @zbr: zbranch of dent
846 * panic if the direntry/xentry referred by @zbr does not exist on the media.
848 * This function checks if xentry/direntry referred by zbranch @zbr matches name
849 * @nm. Returns %NAME_MATCHES it does, %NAME_LESS if the name referred by @zbr
851 * if xentry/direntry referred by @zbr does not exist on the media. A negative
855 struct ubifs_zbranch *zbr,
862 if (!zbr->leaf) {
863 dent = kmalloc(zbr->len, GFP_NOFS);
867 err = fallible_read_node(c, &zbr->key, zbr, dent);
877 err = lnc_add_directly(c, zbr, dent);
881 dent = zbr->leaf;
1038 * @zbr: zbranch of dent
1044 static int matches_position(struct ubifs_zbranch *zbr, int lnum, int offs)
1046 if (zbr->lnum == lnum && zbr->offs == offs)
1162 struct ubifs_zbranch *zbr;
1168 zbr = &zp->zbranch[path[--p]];
1169 znode = dirty_cow_znode(c, zbr);
1226 struct ubifs_zbranch *zbr;
1235 zbr = &znode->zbranch[*n];
1237 if (zbr->znode) {
1239 znode = zbr->znode;
1244 znode = ubifs_load_znode(c, zbr, znode, *n);
1365 struct ubifs_zbranch *zbr;
1374 zbr = &znode->zbranch[*n];
1376 if (zbr->znode) {
1378 znode = dirty_cow_znode(c, zbr);
1385 znode = ubifs_load_znode(c, zbr, znode, *n);
1388 znode = dirty_cow_znode(c, zbr);
1482 struct ubifs_zbranch zbr, *zt;
1512 zbr = znode->zbranch[n];
1516 if (ubifs_get_wbuf(c, zbr.lnum)) {
1518 err = ubifs_tnc_read_node(c, &zbr, node);
1522 err = fallible_read_node(c, key, &zbr, node);
1523 if (err <= 0 || maybe_leb_gced(c, zbr.lnum, gc_seq1)) {
1582 struct ubifs_zbranch *zbr;
1590 zbr = &znode->zbranch[n];
1591 key = &zbr->key;
1600 lnum = zbr->lnum;
1601 offs = ALIGN(zbr->offs + zbr->len, 8);
1602 len = zbr->len;
1612 if (zbr->lnum != lnum || zbr->offs != offs)
1614 offs += ALIGN(zbr->len, 8);
1615 len = ALIGN(len, 8) + zbr->len;
1627 bu->zbranch[bu->cnt++] = *zbr;
1722 * @zbr: zbranch of data node to validate
1727 struct ubifs_zbranch *zbr)
1739 err = ubifs_check_node(c, buf, zbr->len, zbr->lnum, zbr->offs, 0, 0);
1745 err = ubifs_node_check_hash(c, buf, zbr->hash);
1747 ubifs_bad_hash(c, buf, zbr->hash, zbr->lnum, zbr->offs);
1752 if (len != zbr->len) {
1753 ubifs_err(c, "bad node length %d, expected %d", len, zbr->len);
1759 if (!keys_eq(c, &zbr->key, &key1)) {
1761 zbr->lnum, zbr->offs);
1762 dbg_tnck(&zbr->key, "looked for key ");
1772 ubifs_err(c, "bad node at LEB %d:%d", zbr->lnum, zbr->offs);
1773 ubifs_dump_node(c, buf, zbr->len);
1925 struct ubifs_zbranch *zbr;
1935 zbr = &znode->zbranch[*n];
1936 dkey = &zbr->key;
1943 err = tnc_read_hashed_node(c, zbr, dent);
2057 * @zbr: zbranch to insert
2066 const struct ubifs_zbranch *zbr, int n)
2078 if (zbr->znode)
2079 zbr->znode->iip = n;
2084 znode->zbranch[n] = *zbr;
2109 * @zbr: branch to insert
2112 * This function inserts a new node described by @zbr into znode @znode. If
2118 struct ubifs_zbranch *zbr, int n)
2122 union ubifs_key *key = &zbr->key, *key1;
2133 insert_zbranch(c, znode, zbr, n);
2215 zbr->znode->parent = zn;
2242 insert_zbranch(c, zi, zbr, n);
2253 zbr->key = zn->zbranch[0].key;
2254 zbr->znode = zn;
2255 zbr->lnum = 0;
2256 zbr->offs = 0;
2257 zbr->len = 0;
2320 struct ubifs_zbranch zbr;
2322 zbr.znode = NULL;
2323 zbr.lnum = lnum;
2324 zbr.offs = offs;
2325 zbr.len = len;
2326 ubifs_copy_hash(c, hash, zbr.hash);
2327 key_copy(c, key, &zbr.key);
2328 err = tnc_insert(c, znode, &zbr, n + 1);
2330 struct ubifs_zbranch *zbr = &znode->zbranch[n];
2332 lnc_free(zbr);
2333 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2334 zbr->lnum = lnum;
2335 zbr->offs = offs;
2336 zbr->len = len;
2337 ubifs_copy_hash(c, hash, zbr->hash);
2377 struct ubifs_zbranch *zbr = &znode->zbranch[n];
2380 if (zbr->lnum == old_lnum && zbr->offs == old_offs) {
2381 lnc_free(zbr);
2382 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2385 zbr->lnum = lnum;
2386 zbr->offs = offs;
2387 zbr->len = len;
2408 zbr = &znode->zbranch[n];
2409 lnc_free(zbr);
2410 err = ubifs_add_dirt(c, zbr->lnum,
2411 zbr->len);
2414 zbr->lnum = lnum;
2415 zbr->offs = offs;
2416 zbr->len = len;
2482 struct ubifs_zbranch *zbr = &znode->zbranch[n];
2484 lnc_free(zbr);
2485 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2486 zbr->lnum = lnum;
2487 zbr->offs = offs;
2488 zbr->len = len;
2489 ubifs_copy_hash(c, hash, zbr->hash);
2495 struct ubifs_zbranch zbr;
2497 zbr.znode = NULL;
2498 zbr.lnum = lnum;
2499 zbr.offs = offs;
2500 zbr.len = len;
2501 ubifs_copy_hash(c, hash, zbr.hash);
2502 key_copy(c, key, &zbr.key);
2503 err = tnc_insert(c, znode, &zbr, n + 1);
2541 struct ubifs_zbranch *zbr;
2550 zbr = &znode->zbranch[n];
2551 lnc_free(zbr);
2553 err = ubifs_add_dirt(c, zbr->lnum, zbr->len);
2610 zbr = &znode->zbranch[0];
2614 znode = dirty_cow_znode(c, zbr);
2625 c->zroot.lnum = zbr->lnum;
2626 c->zroot.offs = zbr->offs;
2627 c->zroot.len = zbr->len;
2737 struct ubifs_zbranch *zbr;
2747 zbr = &znode->zbranch[n];
2754 err = tnc_read_hashed_node(c, zbr, dent);
2994 struct ubifs_zbranch *zbr;
3041 zbr = &znode->zbranch[n];
3042 dent = kmalloc(zbr->len, GFP_NOFS);
3052 dkey = &zbr->key;
3059 err = tnc_read_hashed_node(c, zbr, dent);
3388 struct ubifs_zbranch *zbr;
3398 zbr = &znode->zbranch[n];
3399 if (lnum == zbr->lnum && offs == zbr->offs)
3418 zbr = &znode->zbranch[n];
3419 if (lnum == zbr->lnum && offs == zbr->offs)
3434 zbr = &znode->zbranch[n];
3435 if (lnum == zbr->lnum && offs == zbr->offs)