Lines Matching full:split
109 uint split; member
122 struct xtsplit * split, struct btstack * btstack);
124 static int xtSplitPage(tid_t tid, struct inode *ip, struct xtsplit * split,
128 struct xtsplit * split, struct metapage ** rmpp);
251 int nsplit = 0; /* number of pages to split */ in xtSearch()
348 /* compute number of pages to split */ in xtSearch()
395 /* compute number of pages to split */ in xtSearch()
453 /* compute number of pages to split */ in xtSearch()
495 /* update number of pages to split */ in xtSearch()
548 struct xtsplit split; /* split information */ in xtInsert() local
603 * if the leaf page is full, split the page and in xtInsert()
604 * propagate up the router entry for the new page from split in xtInsert()
610 split.mp = mp; in xtInsert()
611 split.index = index; in xtInsert()
612 split.flag = xflag; in xtInsert()
613 split.off = xoff; in xtInsert()
614 split.len = xlen; in xtInsert()
615 split.addr = xaddr; in xtInsert()
616 split.pxdlist = NULL; in xtInsert()
617 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtInsert()
677 * split full pages as propagating insertion up the tree
682 * split - entry parameter descriptor;
689 struct inode *ip, struct xtsplit * split, struct btstack * btstack) in xtSplitUp() argument
693 xtpage_t *sp; /* split page */ in xtSplitUp()
705 int nsplit; /* number of pages split */ in xtSplitUp()
711 smp = split->mp; in xtSplitUp()
729 skip = split->index; in xtSplitUp()
737 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitUp()
738 split->addr); in xtSplitUp()
758 * allocate new index blocks to cover index page split(s) in xtSplitUp()
762 if (split->pxdlist == NULL) { in xtSplitUp()
764 split->pxdlist = &pxdlist; in xtSplitUp()
787 * Split leaf page <sp> into <sp> and a new right page <rp>. in xtSplitUp()
789 * The split routines insert the new entry into the leaf page, in xtSplitUp()
794 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
795 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
802 * propagate up the router entry for the leaf page just split in xtSplitUp()
805 * propagate the insert/split up the tree by walking back the stack in xtSplitUp()
807 * that were traversed during the search for the page that split. in xtSplitUp()
809 * the propagation of insert/split up the tree stops if the root in xtSplitUp()
810 * splits or the page inserted into doesn't have to split to hold in xtSplitUp()
813 * the parent entry for the split page remains the same, and in xtSplitUp()
842 * because the split was to the right. in xtSplitUp()
847 * split or shift right remaining entries of the parent page in xtSplitUp()
851 * parent page is full - split the parent page in xtSplitUp()
854 /* init for parent page split */ in xtSplitUp()
855 split->mp = smp; in xtSplitUp()
856 split->index = skip; /* index at insert */ in xtSplitUp()
857 split->flag = XAD_NEW; in xtSplitUp()
858 split->off = offsetXAD(&rcp->xad[XTENTRYSTART]); in xtSplitUp()
859 split->len = JFS_SBI(ip->i_sb)->nbperpage; in xtSplitUp()
860 split->addr = rcbn; in xtSplitUp()
865 /* The split routines insert the new entry, in xtSplitUp()
870 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
871 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
943 * split a full non-root page into
944 * original/split/left page and new right page
945 * i.e., the original/split page remains as left page.
950 * struct xtsplit *split,
959 struct xtsplit * split, struct metapage ** rmpp, s64 * rbnp) in xtSplitPage() argument
978 smp = split->mp; in xtSplitPage()
981 INCREMENT(xtStat.split); in xtSplitPage()
983 pxdlist = split->pxdlist; in xtSplitPage()
996 * allocate the new right page for the split in xtSplitPage()
1027 * acquire a transaction lock on the split page in xtSplitPage()
1041 skip = split->index; in xtSplitPage()
1050 * if we're wrong it's no big deal - we will do the split the right in xtSplitPage()
1053 * reverse sorted data, that is, split the tree left, but it's not. in xtSplitPage()
1064 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1065 split->addr); in xtSplitPage()
1114 * split the data between the split and new/right pages in xtSplitPage()
1121 * skip index in old split/left page - insert into left page: in xtSplitPage()
1124 /* move right half of split page to the new right page */ in xtSplitPage()
1135 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1136 split->addr); in xtSplitPage()
1160 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1161 split->addr); in xtSplitPage()
1208 * split the full root page into original/root/split page and new
1212 * non-root page, and the split root page contains a single entry
1218 * struct xtsplit *split,
1226 struct inode *ip, struct xtsplit * split, struct metapage ** rmpp) in xtSplitRoot() argument
1242 INCREMENT(xtStat.split); in xtSplitRoot()
1247 pxdlist = split->pxdlist; in xtSplitRoot()
1293 skip = split->index; in xtSplitRoot()
1300 XT_PUTENTRY(xad, split->flag, split->off, split->len, split->addr); in xtSplitRoot()
1323 * action: root split; in xtSplitRoot()
1325 BT_MARK_DIRTY(split->mp, ip); in xtSplitRoot()
1337 tlck = txLock(tid, ip, split->mp, tlckXTREE | tlckGROW); in xtSplitRoot()
1372 struct xtsplit split; /* split information */ in xtExtend() local
1427 * propagate up the router entry for the new page from split in xtExtend()
1433 split.mp = mp; in xtExtend()
1434 split.index = index + 1; in xtExtend()
1435 split.flag = XAD_NEW; in xtExtend()
1436 split.off = xoff; /* split offset */ in xtExtend()
1437 split.len = len; in xtExtend()
1438 split.addr = xaddr; in xtExtend()
1439 split.pxdlist = NULL; in xtExtend()
1440 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtExtend()
1448 * if leaf root has been split, original root has been in xtExtend()
1513 * function: split existing 'tail' extent
1514 * (split offset >= start offset of tail extent), and
1515 * relocate and extend the split tail half;
1520 * update pmap: free old split tail extent, alloc new extent;
1523 struct inode *ip, s64 xoff, /* split/new extent offset */ in xtTailgate()
1535 struct xtsplit split; /* split information */ in xtTailgate() local
1592 * propagate up the router entry for the new page from split in xtTailgate()
1598 split.mp = mp; in xtTailgate()
1599 split.index = index + 1; in xtTailgate()
1600 split.flag = XAD_NEW; in xtTailgate()
1601 split.off = xoff; /* split offset */ in xtTailgate()
1602 split.len = xlen; in xtTailgate()
1603 split.addr = xaddr; in xtTailgate()
1604 split.pxdlist = NULL; in xtTailgate()
1605 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtTailgate()
1613 * if leaf root has been split, original root has been in xtTailgate()
1652 * truncate/relocate old extent at split offset in xtTailgate()
1714 struct xtsplit split; /* split information */ in xtUpdate() local
1916 * split XAD into (lXAD, nXAD): in xtUpdate()
1931 split.mp = mp; in xtUpdate()
1932 split.index = newindex; in xtUpdate()
1933 split.flag = xflag & ~XAD_NOTRECORDED; in xtUpdate()
1934 split.off = nxoff; in xtUpdate()
1935 split.len = nxlen; in xtUpdate()
1936 split.addr = nxaddr; in xtUpdate()
1937 split.pxdlist = NULL; in xtUpdate()
1938 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
1946 * if leaf root has been split, original root has been in xtUpdate()
1995 * does nXAD force 3-way split ? in xtUpdate()
2004 /* reorient nXAD as XAD for further split XAD into (nXAD, rXAD) */ in xtUpdate()
2039 /* recompute split pages */ in xtUpdate()
2063 * split XAD into (nXAD, rXAD) in xtUpdate()
2081 printf("xtUpdate.updateLeft.split p:0x%p\n", p); in xtUpdate()
2084 split.mp = mp; in xtUpdate()
2085 split.index = newindex; in xtUpdate()
2086 split.flag = xflag; in xtUpdate()
2087 split.off = xoff; in xtUpdate()
2088 split.len = xlen; in xtUpdate()
2089 split.addr = xaddr; in xtUpdate()
2090 split.pxdlist = NULL; in xtUpdate()
2091 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
2100 * if leaf root has been split, original root has been in xtUpdate()
2181 struct xtsplit split; /* split information */ in xtAppend() local
2224 * if the leaf page is full, split the page and in xtAppend()
2225 * propagate up the router entry for the new page from split in xtAppend()
2234 * allocate new index blocks to cover index page split(s) in xtAppend()
2237 split.pxdlist = &pxdlist; in xtAppend()
2264 split.mp = mp; in xtAppend()
2265 split.index = index; in xtAppend()
2266 split.flag = xflag; in xtAppend()
2267 split.off = xoff; in xtAppend()
2268 split.len = xlen; in xtAppend()
2269 split.addr = xaddr; in xtAppend()
2270 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtAppend()
3887 xtStat.split); in jfs_xtstat_proc_show()