Lines Matching full:split
96 uint split; member
109 struct xtsplit * split, struct btstack * btstack);
111 static int xtSplitPage(tid_t tid, struct inode *ip, struct xtsplit * split,
115 struct xtsplit * split, struct metapage ** rmpp);
238 int nsplit = 0; /* number of pages to split */ in xtSearch()
335 /* compute number of pages to split */ in xtSearch()
382 /* compute number of pages to split */ in xtSearch()
440 /* compute number of pages to split */ in xtSearch()
482 /* update number of pages to split */ in xtSearch()
535 struct xtsplit split; /* split information */ in xtInsert() local
590 * if the leaf page is full, split the page and in xtInsert()
591 * propagate up the router entry for the new page from split in xtInsert()
597 split.mp = mp; in xtInsert()
598 split.index = index; in xtInsert()
599 split.flag = xflag; in xtInsert()
600 split.off = xoff; in xtInsert()
601 split.len = xlen; in xtInsert()
602 split.addr = xaddr; in xtInsert()
603 split.pxdlist = NULL; in xtInsert()
604 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtInsert()
664 * split full pages as propagating insertion up the tree
669 * split - entry parameter descriptor;
676 struct inode *ip, struct xtsplit * split, struct btstack * btstack) in xtSplitUp() argument
680 xtpage_t *sp; /* split page */ in xtSplitUp()
692 int nsplit; /* number of pages split */ in xtSplitUp()
698 smp = split->mp; in xtSplitUp()
716 skip = split->index; in xtSplitUp()
724 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitUp()
725 split->addr); in xtSplitUp()
745 * allocate new index blocks to cover index page split(s) in xtSplitUp()
749 if (split->pxdlist == NULL) { in xtSplitUp()
751 split->pxdlist = &pxdlist; in xtSplitUp()
774 * Split leaf page <sp> into <sp> and a new right page <rp>. in xtSplitUp()
776 * The split routines insert the new entry into the leaf page, in xtSplitUp()
781 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
782 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
789 * propagate up the router entry for the leaf page just split in xtSplitUp()
792 * propagate the insert/split up the tree by walking back the stack in xtSplitUp()
794 * that were traversed during the search for the page that split. in xtSplitUp()
796 * the propagation of insert/split up the tree stops if the root in xtSplitUp()
797 * splits or the page inserted into doesn't have to split to hold in xtSplitUp()
800 * the parent entry for the split page remains the same, and in xtSplitUp()
829 * because the split was to the right. in xtSplitUp()
834 * split or shift right remaining entries of the parent page in xtSplitUp()
838 * parent page is full - split the parent page in xtSplitUp()
841 /* init for parent page split */ in xtSplitUp()
842 split->mp = smp; in xtSplitUp()
843 split->index = skip; /* index at insert */ in xtSplitUp()
844 split->flag = XAD_NEW; in xtSplitUp()
845 split->off = offsetXAD(&rcp->xad[XTENTRYSTART]); in xtSplitUp()
846 split->len = JFS_SBI(ip->i_sb)->nbperpage; in xtSplitUp()
847 split->addr = rcbn; in xtSplitUp()
852 /* The split routines insert the new entry, in xtSplitUp()
857 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
858 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
930 * split a full non-root page into
931 * original/split/left page and new right page
932 * i.e., the original/split page remains as left page.
937 * struct xtsplit *split,
946 struct xtsplit * split, struct metapage ** rmpp, s64 * rbnp) in xtSplitPage() argument
965 smp = split->mp; in xtSplitPage()
968 INCREMENT(xtStat.split); in xtSplitPage()
970 pxdlist = split->pxdlist; in xtSplitPage()
983 * allocate the new right page for the split in xtSplitPage()
1014 * acquire a transaction lock on the split page in xtSplitPage()
1028 skip = split->index; in xtSplitPage()
1037 * if we're wrong it's no big deal - we will do the split the right in xtSplitPage()
1040 * reverse sorted data, that is, split the tree left, but it's not. in xtSplitPage()
1051 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1052 split->addr); in xtSplitPage()
1101 * split the data between the split and new/right pages in xtSplitPage()
1108 * skip index in old split/left page - insert into left page: in xtSplitPage()
1111 /* move right half of split page to the new right page */ in xtSplitPage()
1122 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1123 split->addr); in xtSplitPage()
1147 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1148 split->addr); in xtSplitPage()
1195 * split the full root page into original/root/split page and new
1199 * non-root page, and the split root page contains a single entry
1205 * struct xtsplit *split,
1213 struct inode *ip, struct xtsplit * split, struct metapage ** rmpp) in xtSplitRoot() argument
1229 INCREMENT(xtStat.split); in xtSplitRoot()
1234 pxdlist = split->pxdlist; in xtSplitRoot()
1280 skip = split->index; in xtSplitRoot()
1287 XT_PUTENTRY(xad, split->flag, split->off, split->len, split->addr); in xtSplitRoot()
1310 * action: root split; in xtSplitRoot()
1312 BT_MARK_DIRTY(split->mp, ip); in xtSplitRoot()
1324 tlck = txLock(tid, ip, split->mp, tlckXTREE | tlckGROW); in xtSplitRoot()
1359 struct xtsplit split; /* split information */ in xtExtend() local
1414 * propagate up the router entry for the new page from split in xtExtend()
1420 split.mp = mp; in xtExtend()
1421 split.index = index + 1; in xtExtend()
1422 split.flag = XAD_NEW; in xtExtend()
1423 split.off = xoff; /* split offset */ in xtExtend()
1424 split.len = len; in xtExtend()
1425 split.addr = xaddr; in xtExtend()
1426 split.pxdlist = NULL; in xtExtend()
1427 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtExtend()
1435 * if leaf root has been split, original root has been in xtExtend()
1500 * function: split existing 'tail' extent
1501 * (split offset >= start offset of tail extent), and
1502 * relocate and extend the split tail half;
1507 * update pmap: free old split tail extent, alloc new extent;
1510 struct inode *ip, s64 xoff, /* split/new extent offset */ in xtTailgate()
1522 struct xtsplit split; /* split information */ in xtTailgate() local
1579 * propagate up the router entry for the new page from split in xtTailgate()
1585 split.mp = mp; in xtTailgate()
1586 split.index = index + 1; in xtTailgate()
1587 split.flag = XAD_NEW; in xtTailgate()
1588 split.off = xoff; /* split offset */ in xtTailgate()
1589 split.len = xlen; in xtTailgate()
1590 split.addr = xaddr; in xtTailgate()
1591 split.pxdlist = NULL; in xtTailgate()
1592 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtTailgate()
1600 * if leaf root has been split, original root has been in xtTailgate()
1639 * truncate/relocate old extent at split offset in xtTailgate()
1701 struct xtsplit split; /* split information */ in xtUpdate() local
1903 * split XAD into (lXAD, nXAD): in xtUpdate()
1918 split.mp = mp; in xtUpdate()
1919 split.index = newindex; in xtUpdate()
1920 split.flag = xflag & ~XAD_NOTRECORDED; in xtUpdate()
1921 split.off = nxoff; in xtUpdate()
1922 split.len = nxlen; in xtUpdate()
1923 split.addr = nxaddr; in xtUpdate()
1924 split.pxdlist = NULL; in xtUpdate()
1925 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
1933 * if leaf root has been split, original root has been in xtUpdate()
1982 * does nXAD force 3-way split ? in xtUpdate()
1991 /* reorient nXAD as XAD for further split XAD into (nXAD, rXAD) */ in xtUpdate()
2026 /* recompute split pages */ in xtUpdate()
2050 * split XAD into (nXAD, rXAD) in xtUpdate()
2068 printf("xtUpdate.updateLeft.split p:0x%p\n", p); in xtUpdate()
2071 split.mp = mp; in xtUpdate()
2072 split.index = newindex; in xtUpdate()
2073 split.flag = xflag; in xtUpdate()
2074 split.off = xoff; in xtUpdate()
2075 split.len = xlen; in xtUpdate()
2076 split.addr = xaddr; in xtUpdate()
2077 split.pxdlist = NULL; in xtUpdate()
2078 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
2087 * if leaf root has been split, original root has been in xtUpdate()
2168 struct xtsplit split; /* split information */ in xtAppend() local
2211 * if the leaf page is full, split the page and in xtAppend()
2212 * propagate up the router entry for the new page from split in xtAppend()
2221 * allocate new index blocks to cover index page split(s) in xtAppend()
2224 split.pxdlist = &pxdlist; in xtAppend()
2251 split.mp = mp; in xtAppend()
2252 split.index = index; in xtAppend()
2253 split.flag = xflag; in xtAppend()
2254 split.off = xoff; in xtAppend()
2255 split.len = xlen; in xtAppend()
2256 split.addr = xaddr; in xtAppend()
2257 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtAppend()
3874 xtStat.split); in jfs_xtstat_proc_show()