Lines Matching refs:pnode

351 		      struct ubifs_pnode *pnode)  in ubifs_pack_pnode()  argument
359 pack_bits(&addr, &pos, pnode->num, c->pcnt_bits); in ubifs_pack_pnode()
361 pack_bits(&addr, &pos, pnode->lprops[i].free >> 3, in ubifs_pack_pnode()
363 pack_bits(&addr, &pos, pnode->lprops[i].dirty >> 3, in ubifs_pack_pnode()
365 if (pnode->lprops[i].flags & LPROPS_INDEX) in ubifs_pack_pnode()
515 static void add_pnode_dirt(struct ubifs_info *c, struct ubifs_pnode *pnode) in add_pnode_dirt() argument
517 ubifs_add_lpt_dirt(c, pnode->parent->nbranch[pnode->iip].lnum, in add_pnode_dirt()
613 struct ubifs_pnode *pnode = NULL; in ubifs_create_dflt_lpt() local
632 pnode = kzalloc(sizeof(struct ubifs_pnode), GFP_KERNEL); in ubifs_create_dflt_lpt()
636 if (!pnode || !nnode || !buf || !ltab || !lsave) { in ubifs_create_dflt_lpt()
663 pnode->lprops[0].free = c->leb_size - iopos; in ubifs_create_dflt_lpt()
664 pnode->lprops[0].dirty = iopos - node_sz; in ubifs_create_dflt_lpt()
665 pnode->lprops[0].flags = LPROPS_INDEX; in ubifs_create_dflt_lpt()
669 pnode->lprops[1].free = c->leb_size - iopos; in ubifs_create_dflt_lpt()
670 pnode->lprops[1].dirty = iopos - node_sz; in ubifs_create_dflt_lpt()
673 pnode->lprops[i].free = c->leb_size; in ubifs_create_dflt_lpt()
676 ubifs_pack_pnode(c, p, pnode); in ubifs_create_dflt_lpt()
679 pnode->num += 1; in ubifs_create_dflt_lpt()
682 pnode->lprops[0].free = c->leb_size; in ubifs_create_dflt_lpt()
683 pnode->lprops[0].dirty = 0; in ubifs_create_dflt_lpt()
684 pnode->lprops[0].flags = 0; in ubifs_create_dflt_lpt()
686 pnode->lprops[1].free = c->leb_size; in ubifs_create_dflt_lpt()
687 pnode->lprops[1].dirty = 0; in ubifs_create_dflt_lpt()
710 ubifs_pack_pnode(c, p, pnode); in ubifs_create_dflt_lpt()
718 pnode->num += 1; in ubifs_create_dflt_lpt()
857 kfree(pnode); in ubifs_create_dflt_lpt()
869 static void update_cats(struct ubifs_info *c, struct ubifs_pnode *pnode) in update_cats() argument
874 int cat = pnode->lprops[i].flags & LPROPS_CAT_MASK; in update_cats()
875 int lnum = pnode->lprops[i].lnum; in update_cats()
879 ubifs_add_to_cat(c, &pnode->lprops[i], cat); in update_cats()
965 struct ubifs_pnode *pnode) in unpack_pnode() argument
974 pnode->num = ubifs_unpack_bits(&addr, &pos, c->pcnt_bits); in unpack_pnode()
976 struct ubifs_lprops * const lprops = &pnode->lprops[i]; in unpack_pnode()
1138 static int validate_pnode(const struct ubifs_info *c, struct ubifs_pnode *pnode, in validate_pnode() argument
1146 if (pnode->num != num) in validate_pnode()
1150 int free = pnode->lprops[i].free; in validate_pnode()
1151 int dirty = pnode->lprops[i].dirty; in validate_pnode()
1173 struct ubifs_pnode *pnode) in set_pnode_lnum() argument
1177 lnum = (pnode->num << UBIFS_LPT_FANOUT_SHIFT) + c->main_first; in set_pnode_lnum()
1181 pnode->lprops[i].lnum = lnum++; in set_pnode_lnum()
1264 struct ubifs_pnode *pnode = NULL; in read_pnode() local
1271 pnode = kzalloc(sizeof(struct ubifs_pnode), GFP_NOFS); in read_pnode()
1272 if (!pnode) in read_pnode()
1284 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in read_pnode()
1286 struct ubifs_lprops * const lprops = &pnode->lprops[i]; in read_pnode()
1295 err = unpack_pnode(c, buf, pnode); in read_pnode()
1299 err = validate_pnode(c, pnode, parent, iip); in read_pnode()
1303 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in read_pnode()
1304 branch->pnode = pnode; in read_pnode()
1305 pnode->parent = parent; in read_pnode()
1306 pnode->iip = iip; in read_pnode()
1307 set_pnode_lnum(c, pnode); in read_pnode()
1313 ubifs_dump_pnode(c, pnode, parent, iip); in read_pnode()
1316 kfree(pnode); in read_pnode()
1424 struct ubifs_pnode *pnode; in ubifs_get_pnode() local
1428 pnode = branch->pnode; in ubifs_get_pnode()
1429 if (pnode) in ubifs_get_pnode()
1430 return pnode; in ubifs_get_pnode()
1434 update_cats(c, branch->pnode); in ubifs_get_pnode()
1435 return branch->pnode; in ubifs_get_pnode()
1450 struct ubifs_pnode *pnode; in ubifs_lpt_lookup() local
1468 pnode = ubifs_get_pnode(c, nnode, iip); in ubifs_lpt_lookup()
1469 if (IS_ERR(pnode)) in ubifs_lpt_lookup()
1470 return ERR_CAST(pnode); in ubifs_lpt_lookup()
1473 pnode->lprops[iip].free, pnode->lprops[iip].dirty, in ubifs_lpt_lookup()
1474 pnode->lprops[iip].flags); in ubifs_lpt_lookup()
1475 return &pnode->lprops[iip]; in ubifs_lpt_lookup()
1537 struct ubifs_pnode *pnode) in dirty_cow_pnode() argument
1541 if (!test_bit(COW_CNODE, &pnode->flags)) { in dirty_cow_pnode()
1543 if (!test_and_set_bit(DIRTY_CNODE, &pnode->flags)) { in dirty_cow_pnode()
1545 add_pnode_dirt(c, pnode); in dirty_cow_pnode()
1547 return pnode; in dirty_cow_pnode()
1551 p = kmemdup(pnode, sizeof(struct ubifs_pnode), GFP_NOFS); in dirty_cow_pnode()
1558 replace_cats(c, pnode, p); in dirty_cow_pnode()
1560 ubifs_assert(!test_bit(OBSOLETE_CNODE, &pnode->flags)); in dirty_cow_pnode()
1561 __set_bit(OBSOLETE_CNODE, &pnode->flags); in dirty_cow_pnode()
1564 add_pnode_dirt(c, pnode); in dirty_cow_pnode()
1565 pnode->parent->nbranch[p->iip].pnode = p; in dirty_cow_pnode()
1581 struct ubifs_pnode *pnode; in ubifs_lpt_lookup_dirty() local
1605 pnode = ubifs_get_pnode(c, nnode, iip); in ubifs_lpt_lookup_dirty()
1606 if (IS_ERR(pnode)) in ubifs_lpt_lookup_dirty()
1607 return ERR_CAST(pnode); in ubifs_lpt_lookup_dirty()
1608 pnode = dirty_cow_pnode(c, pnode); 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()
1613 pnode->lprops[iip].free, pnode->lprops[iip].dirty, in ubifs_lpt_lookup_dirty()
1614 pnode->lprops[iip].flags); in ubifs_lpt_lookup_dirty()
1615 ubifs_assert(test_bit(DIRTY_CNODE, &pnode->flags)); in ubifs_lpt_lookup_dirty()
1616 return &pnode->lprops[iip]; in ubifs_lpt_lookup_dirty()
1770 struct ubifs_pnode pnode; member
1776 struct ubifs_pnode *pnode; member
1855 struct ubifs_pnode *pnode; in scan_get_pnode() local
1860 pnode = branch->pnode; in scan_get_pnode()
1861 if (pnode) { in scan_get_pnode()
1863 path->ptr.pnode = pnode; in scan_get_pnode()
1864 return pnode; in scan_get_pnode()
1866 pnode = &path->pnode; in scan_get_pnode()
1868 path->ptr.pnode = pnode; in scan_get_pnode()
1869 memset(pnode, 0, sizeof(struct ubifs_pnode)); in scan_get_pnode()
1879 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in scan_get_pnode()
1881 struct ubifs_lprops * const lprops = &pnode->lprops[i]; in scan_get_pnode()
1894 err = unpack_pnode(c, buf, pnode); in scan_get_pnode()
1898 err = validate_pnode(c, pnode, parent, iip); in scan_get_pnode()
1902 pnode->num = calc_pnode_num_from_parent(c, parent, iip); in scan_get_pnode()
1903 pnode->parent = parent; in scan_get_pnode()
1904 pnode->iip = iip; in scan_get_pnode()
1905 set_pnode_lnum(c, pnode); in scan_get_pnode()
1906 return pnode; in scan_get_pnode()
1924 struct ubifs_pnode *pnode; in ubifs_lpt_scan_nolock() local
1964 pnode = scan_get_pnode(c, path + h, nnode, iip); in ubifs_lpt_scan_nolock()
1965 if (IS_ERR(pnode)) { in ubifs_lpt_scan_nolock()
1966 err = PTR_ERR(pnode); in ubifs_lpt_scan_nolock()
1973 struct ubifs_lprops *lprops = &pnode->lprops[iip]; in ubifs_lpt_scan_nolock()
2006 pnode = kmemdup(&path[h].pnode, sz, GFP_NOFS); in ubifs_lpt_scan_nolock()
2007 if (!pnode) { in ubifs_lpt_scan_nolock()
2011 parent = pnode->parent; in ubifs_lpt_scan_nolock()
2012 parent->nbranch[pnode->iip].pnode = pnode; in ubifs_lpt_scan_nolock()
2013 path[h].ptr.pnode = pnode; in ubifs_lpt_scan_nolock()
2015 update_cats(c, pnode); in ubifs_lpt_scan_nolock()
2050 iip = pnode->iip; in ubifs_lpt_scan_nolock()
2071 pnode = scan_get_pnode(c, path + h, nnode, iip); in ubifs_lpt_scan_nolock()
2072 if (IS_ERR(pnode)) { in ubifs_lpt_scan_nolock()
2073 err = PTR_ERR(pnode); in ubifs_lpt_scan_nolock()
2091 static int dbg_chk_pnode(struct ubifs_info *c, struct ubifs_pnode *pnode, in dbg_chk_pnode() argument
2096 if (pnode->num != col) { in dbg_chk_pnode()
2098 pnode->num, col, pnode->parent->num, pnode->iip); in dbg_chk_pnode()
2102 struct ubifs_lprops *lp, *lprops = &pnode->lprops[i]; in dbg_chk_pnode()
2103 int lnum = (pnode->num << UBIFS_LPT_FANOUT_SHIFT) + i + in dbg_chk_pnode()
2261 struct ubifs_pnode *pnode; in dbg_check_lpt_nodes() local
2264 pnode = (struct ubifs_pnode *)cnode; in dbg_check_lpt_nodes()
2265 err = dbg_chk_pnode(c, pnode, col); in dbg_check_lpt_nodes()