Lines Matching refs:pnode

348 		      struct ubifs_pnode *pnode)  in ubifs_pack_pnode()  argument
356 pack_bits(&addr, &pos, pnode->num, c->pcnt_bits); in ubifs_pack_pnode()
358 pack_bits(&addr, &pos, pnode->lprops[i].free >> 3, in ubifs_pack_pnode()
360 pack_bits(&addr, &pos, pnode->lprops[i].dirty >> 3, in ubifs_pack_pnode()
362 if (pnode->lprops[i].flags & LPROPS_INDEX) in ubifs_pack_pnode()
512 static void add_pnode_dirt(struct ubifs_info *c, struct ubifs_pnode *pnode) in add_pnode_dirt() argument
514 ubifs_add_lpt_dirt(c, pnode->parent->nbranch[pnode->iip].lnum, in add_pnode_dirt()
610 struct ubifs_pnode *pnode = NULL; in ubifs_create_dflt_lpt() local
629 pnode = kzalloc(sizeof(struct ubifs_pnode), GFP_KERNEL); in ubifs_create_dflt_lpt()
633 if (!pnode || !nnode || !buf || !ltab || !lsave) { in ubifs_create_dflt_lpt()
660 pnode->lprops[0].free = c->leb_size - iopos; in ubifs_create_dflt_lpt()
661 pnode->lprops[0].dirty = iopos - node_sz; in ubifs_create_dflt_lpt()
662 pnode->lprops[0].flags = LPROPS_INDEX; in ubifs_create_dflt_lpt()
666 pnode->lprops[1].free = c->leb_size - iopos; in ubifs_create_dflt_lpt()
667 pnode->lprops[1].dirty = iopos - node_sz; in ubifs_create_dflt_lpt()
670 pnode->lprops[i].free = c->leb_size; in ubifs_create_dflt_lpt()
673 ubifs_pack_pnode(c, p, pnode); in ubifs_create_dflt_lpt()
676 pnode->num += 1; in ubifs_create_dflt_lpt()
679 pnode->lprops[0].free = c->leb_size; in ubifs_create_dflt_lpt()
680 pnode->lprops[0].dirty = 0; in ubifs_create_dflt_lpt()
681 pnode->lprops[0].flags = 0; in ubifs_create_dflt_lpt()
683 pnode->lprops[1].free = c->leb_size; in ubifs_create_dflt_lpt()
684 pnode->lprops[1].dirty = 0; in ubifs_create_dflt_lpt()
707 ubifs_pack_pnode(c, p, pnode); in ubifs_create_dflt_lpt()
715 pnode->num += 1; in ubifs_create_dflt_lpt()
854 kfree(pnode); in ubifs_create_dflt_lpt()
866 static void update_cats(struct ubifs_info *c, struct ubifs_pnode *pnode) in update_cats() argument
871 int cat = pnode->lprops[i].flags & LPROPS_CAT_MASK; in update_cats()
872 int lnum = pnode->lprops[i].lnum; in update_cats()
876 ubifs_add_to_cat(c, &pnode->lprops[i], cat); in update_cats()
962 struct ubifs_pnode *pnode) in unpack_pnode() argument
971 pnode->num = ubifs_unpack_bits(&addr, &pos, c->pcnt_bits); in unpack_pnode()
973 struct ubifs_lprops * const lprops = &pnode->lprops[i]; in unpack_pnode()
1137 static int validate_pnode(const struct ubifs_info *c, struct ubifs_pnode *pnode, in validate_pnode() argument
1145 if (pnode->num != num) in validate_pnode()
1149 int free = pnode->lprops[i].free; in validate_pnode()
1150 int dirty = pnode->lprops[i].dirty; in validate_pnode()
1172 struct ubifs_pnode *pnode) in set_pnode_lnum() argument
1176 lnum = (pnode->num << UBIFS_LPT_FANOUT_SHIFT) + c->main_first; in set_pnode_lnum()
1180 pnode->lprops[i].lnum = lnum++; in set_pnode_lnum()
1263 struct ubifs_pnode *pnode = NULL; in read_pnode() local
1270 pnode = kzalloc(sizeof(struct ubifs_pnode), GFP_NOFS); in read_pnode()
1271 if (!pnode) in read_pnode()
1283 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in read_pnode()
1285 struct ubifs_lprops * const lprops = &pnode->lprops[i]; in read_pnode()
1294 err = unpack_pnode(c, buf, pnode); in read_pnode()
1298 err = validate_pnode(c, pnode, parent, iip); in read_pnode()
1302 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in read_pnode()
1303 branch->pnode = pnode; in read_pnode()
1304 pnode->parent = parent; in read_pnode()
1305 pnode->iip = iip; in read_pnode()
1306 set_pnode_lnum(c, pnode); in read_pnode()
1312 ubifs_dump_pnode(c, pnode, parent, iip); in read_pnode()
1315 kfree(pnode); in read_pnode()
1425 struct ubifs_pnode *pnode; in ubifs_get_pnode() local
1429 pnode = branch->pnode; in ubifs_get_pnode()
1430 if (pnode) in ubifs_get_pnode()
1431 return pnode; in ubifs_get_pnode()
1435 update_cats(c, branch->pnode); in ubifs_get_pnode()
1436 return branch->pnode; in ubifs_get_pnode()
1451 struct ubifs_pnode *pnode; in ubifs_lpt_lookup() local
1469 pnode = ubifs_get_pnode(c, nnode, iip); in ubifs_lpt_lookup()
1470 if (IS_ERR(pnode)) in ubifs_lpt_lookup()
1471 return ERR_CAST(pnode); in ubifs_lpt_lookup()
1474 pnode->lprops[iip].free, pnode->lprops[iip].dirty, in ubifs_lpt_lookup()
1475 pnode->lprops[iip].flags); in ubifs_lpt_lookup()
1476 return &pnode->lprops[iip]; in ubifs_lpt_lookup()
1539 struct ubifs_pnode *pnode) in dirty_cow_pnode() argument
1543 if (!test_bit(COW_CNODE, &pnode->flags)) { in dirty_cow_pnode()
1545 if (!test_and_set_bit(DIRTY_CNODE, &pnode->flags)) { in dirty_cow_pnode()
1547 add_pnode_dirt(c, pnode); in dirty_cow_pnode()
1549 return pnode; in dirty_cow_pnode()
1557 memcpy(p, pnode, sizeof(struct ubifs_pnode)); in dirty_cow_pnode()
1561 replace_cats(c, pnode, p); in dirty_cow_pnode()
1563 ubifs_assert(!test_bit(OBSOLETE_CNODE, &pnode->flags)); in dirty_cow_pnode()
1564 __set_bit(OBSOLETE_CNODE, &pnode->flags); in dirty_cow_pnode()
1567 add_pnode_dirt(c, pnode); in dirty_cow_pnode()
1568 pnode->parent->nbranch[p->iip].pnode = p; in dirty_cow_pnode()
1584 struct ubifs_pnode *pnode; in ubifs_lpt_lookup_dirty() local
1608 pnode = ubifs_get_pnode(c, nnode, iip); in ubifs_lpt_lookup_dirty()
1609 if (IS_ERR(pnode)) in ubifs_lpt_lookup_dirty()
1610 return ERR_CAST(pnode); in ubifs_lpt_lookup_dirty()
1611 pnode = dirty_cow_pnode(c, pnode); in ubifs_lpt_lookup_dirty()
1612 if (IS_ERR(pnode)) in ubifs_lpt_lookup_dirty()
1613 return ERR_CAST(pnode); in ubifs_lpt_lookup_dirty()
1616 pnode->lprops[iip].free, pnode->lprops[iip].dirty, in ubifs_lpt_lookup_dirty()
1617 pnode->lprops[iip].flags); in ubifs_lpt_lookup_dirty()
1618 ubifs_assert(test_bit(DIRTY_CNODE, &pnode->flags)); in ubifs_lpt_lookup_dirty()
1619 return &pnode->lprops[iip]; in ubifs_lpt_lookup_dirty()
1779 struct ubifs_pnode pnode; member
1785 struct ubifs_pnode *pnode; member
1864 struct ubifs_pnode *pnode; in scan_get_pnode() local
1869 pnode = branch->pnode; in scan_get_pnode()
1870 if (pnode) { in scan_get_pnode()
1872 path->ptr.pnode = pnode; in scan_get_pnode()
1873 return pnode; in scan_get_pnode()
1875 pnode = &path->pnode; in scan_get_pnode()
1877 path->ptr.pnode = pnode; in scan_get_pnode()
1878 memset(pnode, 0, sizeof(struct ubifs_pnode)); in scan_get_pnode()
1888 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in scan_get_pnode()
1890 struct ubifs_lprops * const lprops = &pnode->lprops[i]; in scan_get_pnode()
1903 err = unpack_pnode(c, buf, pnode); in scan_get_pnode()
1907 err = validate_pnode(c, pnode, parent, iip); in scan_get_pnode()
1911 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in scan_get_pnode()
1912 pnode->parent = parent; in scan_get_pnode()
1913 pnode->iip = iip; in scan_get_pnode()
1914 set_pnode_lnum(c, pnode); in scan_get_pnode()
1915 return pnode; in scan_get_pnode()
1933 struct ubifs_pnode *pnode; in ubifs_lpt_scan_nolock() local
1973 pnode = scan_get_pnode(c, path + h, nnode, iip); in ubifs_lpt_scan_nolock()
1974 if (IS_ERR(pnode)) { in ubifs_lpt_scan_nolock()
1975 err = PTR_ERR(pnode); in ubifs_lpt_scan_nolock()
1982 struct ubifs_lprops *lprops = &pnode->lprops[iip]; in ubifs_lpt_scan_nolock()
2015 pnode = kmemdup(&path[h].pnode, sz, GFP_NOFS); in ubifs_lpt_scan_nolock()
2016 if (!pnode) { in ubifs_lpt_scan_nolock()
2020 parent = pnode->parent; in ubifs_lpt_scan_nolock()
2021 parent->nbranch[pnode->iip].pnode = pnode; in ubifs_lpt_scan_nolock()
2022 path[h].ptr.pnode = pnode; in ubifs_lpt_scan_nolock()
2024 update_cats(c, pnode); in ubifs_lpt_scan_nolock()
2059 iip = pnode->iip; in ubifs_lpt_scan_nolock()
2080 pnode = scan_get_pnode(c, path + h, nnode, iip); in ubifs_lpt_scan_nolock()
2081 if (IS_ERR(pnode)) { in ubifs_lpt_scan_nolock()
2082 err = PTR_ERR(pnode); in ubifs_lpt_scan_nolock()
2100 static int dbg_chk_pnode(struct ubifs_info *c, struct ubifs_pnode *pnode, in dbg_chk_pnode() argument
2105 if (pnode->num != col) { in dbg_chk_pnode()
2107 pnode->num, col, pnode->parent->num, pnode->iip); in dbg_chk_pnode()
2111 struct ubifs_lprops *lp, *lprops = &pnode->lprops[i]; in dbg_chk_pnode()
2112 int lnum = (pnode->num << UBIFS_LPT_FANOUT_SHIFT) + i + in dbg_chk_pnode()
2270 struct ubifs_pnode *pnode; in dbg_check_lpt_nodes() local
2273 pnode = (struct ubifs_pnode *)cnode; in dbg_check_lpt_nodes()
2274 err = dbg_chk_pnode(c, pnode, col); in dbg_check_lpt_nodes()