Lines Matching refs:ip
117 static int xtSearch(struct inode *ip, s64 xoff, s64 *next, int *cmpp,
121 struct inode *ip,
124 static int xtSplitPage(tid_t tid, struct inode *ip, struct xtsplit * split,
127 static int xtSplitRoot(tid_t tid, struct inode *ip,
131 static int xtDeleteUp(tid_t tid, struct inode *ip, struct metapage * fmp,
134 static int xtSearchNode(struct inode *ip,
138 static int xtRelink(tid_t tid, struct inode *ip, xtpage_t * fp);
146 int xtLookup(struct inode *ip, s64 lstart, in xtLookup() argument
166 size = ((u64) ip->i_size + (JFS_SBI(ip->i_sb)->bsize - 1)) >> in xtLookup()
167 JFS_SBI(ip->i_sb)->l2bsize; in xtLookup()
176 if ((rc = xtSearch(ip, lstart, &next, &cmp, &btstack, 0))) { in xtLookup()
188 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index); in xtLookup()
239 static int xtSearch(struct inode *ip, s64 xoff, s64 *nextp, in xtSearch() argument
242 struct jfs_inode_info *jfs_ip = JFS_IP(ip); in xtSearch()
279 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtSearch()
503 jfs_error(ip->i_sb, "stack overrun!\n"); in xtSearch()
538 struct inode *ip, int xflag, s64 xoff, s32 xlen, s64 * xaddrp, in xtInsert() argument
565 if ((rc = xtSearch(ip, xoff, &next, &cmp, &btstack, XT_INSERT))) in xtInsert()
569 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index); in xtInsert()
589 if ((rc = dquot_alloc_block(ip, xlen))) in xtInsert()
591 if ((rc = dbAlloc(ip, hint, (s64) xlen, &xaddr))) { in xtInsert()
592 dquot_free_block(ip, xlen); in xtInsert()
617 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtInsert()
620 dbFree(ip, xaddr, (s64) xlen); in xtInsert()
621 dquot_free_block(ip, xlen); in xtInsert()
638 BT_MARK_DIRTY(mp, ip); in xtInsert()
653 if (!test_cflag(COMMIT_Nolink, ip)) { in xtInsert()
654 tlck = txLock(tid, ip, mp, tlckXTREE | tlckGROW); in xtInsert()
689 struct inode *ip, struct xtsplit * split, struct btstack * btstack) in xtSplitUp() argument
712 sp = XT_PAGE(ip, smp); in xtSplitUp()
715 if ((sp->header.flag & BT_ROOT) && (!S_ISDIR(ip->i_mode)) && in xtSplitUp()
717 (JFS_IP(ip)->mode2 & INLINEEA)) { in xtSplitUp()
719 JFS_IP(ip)->mode2 &= ~INLINEEA; in xtSplitUp()
721 BT_MARK_DIRTY(smp, ip); in xtSplitUp()
744 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitUp()
745 tlck = txLock(tid, ip, smp, tlckXTREE | tlckGROW); in xtSplitUp()
767 xlen = JFS_SBI(ip->i_sb)->nbperpage; in xtSplitUp()
769 if ((rc = dbAlloc(ip, (s64) 0, (s64) xlen, &xaddr)) in xtSplitUp()
794 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
795 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
828 rcp = XT_PAGE(ip, rcmp); in xtSplitUp()
834 XT_GETPAGE(ip, parent->bn, smp, PSIZE, sp, rc); in xtSplitUp()
859 split->len = JFS_SBI(ip->i_sb)->nbperpage; in xtSplitUp()
870 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
871 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
893 BT_MARK_DIRTY(smp, ip); in xtSplitUp()
907 JFS_SBI(ip->i_sb)->nbperpage, rcbn); in xtSplitUp()
913 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitUp()
914 tlck = txLock(tid, ip, smp, in xtSplitUp()
958 xtSplitPage(tid_t tid, struct inode *ip, in xtSplitPage() argument
979 sp = XT_PAGE(ip, smp); in xtSplitPage()
989 rc = dquot_alloc_block(ip, lengthPXD(pxd)); in xtSplitPage()
998 rmp = get_metapage(ip, rbn, PSIZE, 1); in xtSplitPage()
1004 jfs_info("xtSplitPage: ip:0x%p smp:0x%p rmp:0x%p", ip, smp, rmp); in xtSplitPage()
1006 BT_MARK_DIRTY(rmp, ip); in xtSplitPage()
1017 BT_MARK_DIRTY(smp, ip); in xtSplitPage()
1019 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitPage()
1023 tlck = txLock(tid, ip, rmp, tlckXTREE | tlckNEW); in xtSplitPage()
1029 tlck = txLock(tid, ip, smp, tlckXTREE | tlckGROW); in xtSplitPage()
1069 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitPage()
1089 XT_GETPAGE(ip, nextbn, mp, PSIZE, p, rc); in xtSplitPage()
1095 BT_MARK_DIRTY(mp, ip); in xtSplitPage()
1101 if (!test_cflag(COMMIT_Nolink, ip)) in xtSplitPage()
1102 tlck = txLock(tid, ip, mp, tlckXTREE | tlckRELINK); in xtSplitPage()
1140 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitPage()
1170 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitPage()
1179 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitPage()
1198 dquot_free_block(ip, quota_allocation); in xtSplitPage()
1226 struct inode *ip, struct xtsplit * split, struct metapage ** rmpp) in xtSplitRoot() argument
1240 sp = &JFS_IP(ip)->i_xtroot; in xtSplitRoot()
1251 rmp = get_metapage(ip, rbn, PSIZE, 1); in xtSplitRoot()
1256 rc = dquot_alloc_block(ip, lengthPXD(pxd)); in xtSplitRoot()
1262 jfs_info("xtSplitRoot: ip:0x%p rmp:0x%p", ip, rmp); in xtSplitRoot()
1269 BT_MARK_DIRTY(rmp, ip); in xtSplitRoot()
1305 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitRoot()
1306 tlck = txLock(tid, ip, rmp, tlckXTREE | tlckNEW); in xtSplitRoot()
1325 BT_MARK_DIRTY(split->mp, ip); in xtSplitRoot()
1328 XT_PUTENTRY(xad, XAD_NEW, 0, JFS_SBI(ip->i_sb)->nbperpage, rbn); in xtSplitRoot()
1336 if (!test_cflag(COMMIT_Nolink, ip)) { in xtSplitRoot()
1337 tlck = txLock(tid, ip, split->mp, tlckXTREE | tlckGROW); in xtSplitRoot()
1361 struct inode *ip, s64 xoff, /* delta extent offset */ in xtExtend() argument
1381 if ((rc = xtSearch(ip, xoff - 1, NULL, &cmp, &btstack, XT_INSERT))) in xtExtend()
1385 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index); in xtExtend()
1389 jfs_error(ip->i_sb, "xtSearch did not find extent\n"); in xtExtend()
1397 jfs_error(ip->i_sb, "extension is not contiguous\n"); in xtExtend()
1406 BT_MARK_DIRTY(mp, ip); in xtExtend()
1407 if (!test_cflag(COMMIT_Nolink, ip)) { in xtExtend()
1408 tlck = txLock(tid, ip, mp, tlckXTREE | tlckGROW); in xtExtend()
1440 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtExtend()
1444 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtExtend()
1460 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtExtend()
1464 BT_MARK_DIRTY(mp, ip); in xtExtend()
1465 if (!test_cflag(COMMIT_Nolink, ip)) { in xtExtend()
1466 tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); in xtExtend()
1495 if (!test_cflag(COMMIT_Nolink, ip)) { in xtExtend()
1523 struct inode *ip, s64 xoff, /* split/new extent offset */ in xtTailgate() argument
1548 if ((rc = xtSearch(ip, xoff, NULL, &cmp, &btstack, XT_INSERT))) in xtTailgate()
1552 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index); in xtTailgate()
1556 jfs_error(ip->i_sb, "couldn't find extent\n"); in xtTailgate()
1564 jfs_error(ip->i_sb, "the entry found is not the last entry\n"); in xtTailgate()
1568 BT_MARK_DIRTY(mp, ip); in xtTailgate()
1572 if (!test_cflag(COMMIT_Nolink, ip)) { in xtTailgate()
1573 tlck = txLock(tid, ip, mp, tlckXTREE | tlckGROW); in xtTailgate()
1605 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtTailgate()
1609 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtTailgate()
1625 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtTailgate()
1629 BT_MARK_DIRTY(mp, ip); in xtTailgate()
1630 if (!test_cflag(COMMIT_Nolink, ip)) { in xtTailgate()
1631 tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); in xtTailgate()
1659 if (!test_cflag(COMMIT_Nolink, ip)) { in xtTailgate()
1660 mtlck = txMaplock(tid, ip, tlckMAP); in xtTailgate()
1669 dbFree(ip, addressXAD(xad) + llen, (s64) rlen); in xtTailgate()
1678 if (!test_cflag(COMMIT_Nolink, ip)) { in xtTailgate()
1705 int xtUpdate(tid_t tid, struct inode *ip, xad_t * nxad) in xtUpdate() argument
1729 if ((rc = xtSearch(ip, nxoff, NULL, &cmp, &btstack, XT_INSERT))) in xtUpdate()
1733 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index0); in xtUpdate()
1737 jfs_error(ip->i_sb, "Could not find extent\n"); in xtUpdate()
1741 BT_MARK_DIRTY(mp, ip); in xtUpdate()
1745 if (!test_cflag(COMMIT_Nolink, ip)) { in xtUpdate()
1746 tlck = txLock(tid, ip, mp, tlckXTREE | tlckGROW); in xtUpdate()
1760 jfs_error(ip->i_sb, in xtUpdate()
1910 jfs_error(ip->i_sb, "xoff >= nxoff\n"); in xtUpdate()
1938 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
1942 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtUpdate()
1958 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtUpdate()
1962 BT_MARK_DIRTY(mp, ip); in xtUpdate()
1963 if (!test_cflag(COMMIT_Nolink, ip)) { in xtUpdate()
1964 tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); in xtUpdate()
2007 if (!test_cflag(COMMIT_Nolink, ip)) { in xtUpdate()
2019 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtUpdate()
2023 BT_MARK_DIRTY(mp, ip); in xtUpdate()
2024 if (!test_cflag(COMMIT_Nolink, ip)) { in xtUpdate()
2025 tlck = txLock(tid, ip, mp, tlckXTREE | tlckGROW); in xtUpdate()
2043 if ((rc = xtSearch(ip, nxoff, NULL, &cmp, &btstack, XT_INSERT))) in xtUpdate()
2047 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index0); in xtUpdate()
2051 jfs_error(ip->i_sb, "xtSearch failed\n"); in xtUpdate()
2057 jfs_error(ip->i_sb, "unexpected value of index\n"); in xtUpdate()
2091 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
2095 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtUpdate()
2112 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtUpdate()
2116 BT_MARK_DIRTY(mp, ip); in xtUpdate()
2117 if (!test_cflag(COMMIT_Nolink, ip)) { in xtUpdate()
2118 tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); in xtUpdate()
2138 if (!test_cflag(COMMIT_Nolink, ip)) { in xtUpdate()
2170 struct inode *ip, int xflag, s64 xoff, s32 maxblocks, in xtAppend() argument
2204 if ((rc = xtSearch(ip, xoff, &next, &cmp, &btstack, XT_INSERT))) in xtAppend()
2208 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index); in xtAppend()
2240 nblocks = JFS_SBI(ip->i_sb)->nbperpage; in xtAppend()
2242 if ((rc = dbAllocBottomUp(ip, xaddr, (s64) nblocks)) == 0) { in xtAppend()
2261 if ((rc = dbAllocBottomUp(ip, xaddr, (s64) xlen))) in xtAppend()
2270 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtAppend()
2272 dbFree(ip, *xaddrp, (s64) * xlenp); in xtAppend()
2288 if ((rc = dbAllocBottomUp(ip, xaddr, (s64) xlen))) in xtAppend()
2291 BT_MARK_DIRTY(mp, ip); in xtAppend()
2297 tlck = txLock(tid, ip, mp, tlckXTREE | tlckGROW); in xtAppend()
2339 int xtDelete(tid_t tid, struct inode *ip, s64 xoff, s32 xlen, int flag) in xtDelete() argument
2354 if ((rc = xtSearch(ip, xoff, NULL, &cmp, &btstack, 0))) in xtDelete()
2357 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index); in xtDelete()
2374 return (xtDeleteUp(tid, ip, mp, p, &btstack)); in xtDelete()
2376 BT_MARK_DIRTY(mp, ip); in xtDelete()
2382 tlck = txLock(tid, ip, mp, tlckXTREE); in xtDelete()
2410 xtDeleteUp(tid_t tid, struct inode *ip, in xtDeleteUp() argument
2440 if ((rc = xtRelink(tid, ip, fp))) { in xtDeleteUp()
2448 dbFree(ip, xaddr, (s64) xlen); in xtDeleteUp()
2463 XT_GETPAGE(ip, parent->bn, mp, PSIZE, p, rc); in xtDeleteUp()
2490 if ((rc = xtRelink(tid, ip, p))) in xtDeleteUp()
2495 dbFree(ip, xaddr, in xtDeleteUp()
2496 (s64) JFS_SBI(ip->i_sb)->nbperpage); in xtDeleteUp()
2510 BT_MARK_DIRTY(mp, ip); in xtDeleteUp()
2516 tlck = txLock(tid, ip, mp, tlckXTREE); in xtDeleteUp()
2559 xtRelocate(tid_t tid, struct inode * ip, xad_t * oxad, /* old XAD */ in xtRelocate() argument
2590 offset = xoff << JFS_SBI(ip->i_sb)->l2bsize; in xtRelocate()
2591 if (offset >= ip->i_size) in xtRelocate()
2603 rc = xtSearch(ip, xoff, NULL, &cmp, &btstack, 0); in xtRelocate()
2608 XT_GETSEARCH(ip, btstack.top, bn, pmp, pp, index); in xtRelocate()
2624 rc = xtSearchNode(ip, oxad, &cmp, &btstack, 0); in xtRelocate()
2629 XT_GETSEARCH(ip, btstack.top, bn, pmp, pp, index); in xtRelocate()
2672 offset = xoff << JFS_SBI(ip->i_sb)->l2bsize; in xtRelocate()
2674 nbytes = xlen << JFS_SBI(ip->i_sb)->l2bsize; in xtRelocate()
2691 if (rc = cmRead(ip, offset, npages, &cp)) in xtRelocate()
2698 nblks = nb >> JFS_IP(ip->i_sb)->l2bsize; in xtRelocate()
2699 cmSetXD(ip, cp, pno, dxaddr, nblks); in xtRelocate()
2709 if ((rc = xtSearch(ip, xoff, NULL, &cmp, &btstack, 0))) in xtRelocate()
2712 XT_GETSEARCH(ip, btstack.top, bn, pmp, pp, index); in xtRelocate()
2719 XT_GETPAGE(ip, oxaddr, mp, PSIZE, p, rc); in xtRelocate()
2731 XT_GETPAGE(ip, nextbn, rmp, PSIZE, rp, rc); in xtRelocate()
2742 XT_GETPAGE(ip, prevbn, lmp, PSIZE, lp, rc); in xtRelocate()
2758 BT_MARK_DIRTY(lmp, ip); in xtRelocate()
2759 tlck = txLock(tid, ip, lmp, tlckXTREE | tlckRELINK); in xtRelocate()
2765 BT_MARK_DIRTY(rmp, ip); in xtRelocate()
2766 tlck = txLock(tid, ip, rmp, tlckXTREE | tlckRELINK); in xtRelocate()
2792 BT_MARK_DIRTY(mp, ip); in xtRelocate()
2794 tlck = txLock(tid, ip, mp, tlckXTREE | tlckNEW); in xtRelocate()
2806 xsize = xlen << JFS_SBI(ip->i_sb)->l2bsize; in xtRelocate()
2827 tlck = txMaplock(tid, ip, tlckMAP); in xtRelocate()
2837 tlck = txMaplock(tid, ip, tlckMAP | tlckRELOCATE); in xtRelocate()
2853 BT_MARK_DIRTY(pmp, ip); in xtRelocate()
2854 tlck = txLock(tid, ip, pmp, tlckXTREE | tlckGROW); in xtRelocate()
2891 static int xtSearchNode(struct inode *ip, xad_t * xad, /* required XAD entry */ in xtSearchNode() argument
2929 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtSearchNode()
3011 static int xtRelink(tid_t tid, struct inode *ip, xtpage_t * p) in xtRelink() argument
3023 XT_GETPAGE(ip, nextbn, mp, PSIZE, p, rc); in xtRelink()
3032 BT_MARK_DIRTY(mp, ip); in xtRelink()
3033 tlck = txLock(tid, ip, mp, tlckXTREE | tlckRELINK); in xtRelink()
3044 XT_GETPAGE(ip, prevbn, mp, PSIZE, p, rc); in xtRelink()
3053 BT_MARK_DIRTY(mp, ip); in xtRelink()
3054 tlck = txLock(tid, ip, mp, tlckXTREE | tlckRELINK); in xtRelink()
3073 void xtInitRoot(tid_t tid, struct inode *ip) in xtInitRoot() argument
3082 txLock(tid, ip, (struct metapage *) &JFS_IP(ip)->bxflag, in xtInitRoot()
3084 p = &JFS_IP(ip)->i_xtroot; in xtInitRoot()
3089 if (S_ISDIR(ip->i_mode)) in xtInitRoot()
3093 ip->i_size = 0; in xtInitRoot()
3162 s64 xtTruncate(tid_t tid, struct inode *ip, s64 newsize, int flag) in xtTruncate() argument
3228 teof = (newsize + (JFS_SBI(ip->i_sb)->bsize - 1)) >> in xtTruncate()
3229 JFS_SBI(ip->i_sb)->l2bsize; in xtTruncate()
3245 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtTruncate()
3264 tlck = txLock(tid, ip, mp, tlckXTREE|tlckGROW); in xtTruncate()
3265 BT_MARK_DIRTY(mp, ip); in xtTruncate()
3294 newsize = (xoff + xlen) << JFS_SBI(ip->i_sb)->l2bsize; in xtTruncate()
3297 tlck = txLock(tid, ip, mp, tlckXTREE); in xtTruncate()
3302 BT_MARK_DIRTY(mp, ip); in xtTruncate()
3318 if (S_ISDIR(ip->i_mode) && (teof == 0)) in xtTruncate()
3319 invalidate_xad_metapages(ip, *xad); in xtTruncate()
3383 txFreeMap(ip, pxdlock, NULL, COMMIT_WMAP); in xtTruncate()
3411 txFreeMap(ip, (struct maplock *) & xadlock, in xtTruncate()
3441 txFreeMap(ip, (struct maplock *) & xadlock, NULL, COMMIT_WMAP); in xtTruncate()
3483 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtTruncate()
3500 tlck = txLock(tid, ip, mp, tlckXTREE); in xtTruncate()
3516 txFreeMap(ip, (struct maplock *) & xadlock, in xtTruncate()
3519 BT_MARK_DIRTY(mp, ip); in xtTruncate()
3576 tlck = txLock(tid, ip, mp, tlckXTREE); in xtTruncate()
3588 txFreeMap(ip, (struct maplock *) & xadlock, NULL, in xtTruncate()
3591 BT_MARK_DIRTY(mp, ip); in xtTruncate()
3604 JFS_IP(ip)->mode2 |= INLINEEA; in xtTruncate()
3652 jfs_error(ip->i_sb, "stack overrun!\n"); in xtTruncate()
3677 if (S_ISDIR(ip->i_mode) && !newsize) in xtTruncate()
3678 ip->i_size = 1; /* fsck hates zero-length directories */ in xtTruncate()
3680 ip->i_size = newsize; in xtTruncate()
3683 dquot_free_block(ip, nfreed); in xtTruncate()
3689 txFreelock(ip); in xtTruncate()
3718 s64 xtTruncate_pmap(tid_t tid, struct inode *ip, s64 committed_size) in xtTruncate_pmap() argument
3744 xoff = (committed_size >> JFS_SBI(ip->i_sb)->l2bsize) - 1; in xtTruncate_pmap()
3745 rc = xtSearch(ip, xoff, NULL, &cmp, &btstack, 0); in xtTruncate_pmap()
3749 XT_GETSEARCH(ip, btstack.top, bn, mp, p, index); in xtTruncate_pmap()
3753 jfs_error(ip->i_sb, "did not find extent\n"); in xtTruncate_pmap()
3768 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtTruncate_pmap()
3792 return (xoff + xlen) << JFS_SBI(ip->i_sb)->l2bsize; in xtTruncate_pmap()
3794 tlck = txLock(tid, ip, mp, tlckXTREE); in xtTruncate_pmap()
3813 XT_GETPAGE(ip, bn, mp, PSIZE, p, rc); in xtTruncate_pmap()
3827 tlck = txLock(tid, ip, mp, tlckXTREE); in xtTruncate_pmap()
3852 jfs_error(ip->i_sb, "stack overrun!\n"); in xtTruncate_pmap()