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);
227 int nsplit = 0; /* number of pages to split */ in xtSearch()
324 /* compute number of pages to split */ in xtSearch()
371 /* compute number of pages to split */ in xtSearch()
429 /* compute number of pages to split */ in xtSearch()
471 /* update number of pages to split */ in xtSearch()
524 struct xtsplit split; /* split information */ in xtInsert() local
579 * if the leaf page is full, split the page and in xtInsert()
580 * propagate up the router entry for the new page from split in xtInsert()
586 split.mp = mp; in xtInsert()
587 split.index = index; in xtInsert()
588 split.flag = xflag; in xtInsert()
589 split.off = xoff; in xtInsert()
590 split.len = xlen; in xtInsert()
591 split.addr = xaddr; in xtInsert()
592 split.pxdlist = NULL; in xtInsert()
593 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtInsert()
653 * split full pages as propagating insertion up the tree
658 * split - entry parameter descriptor;
665 struct inode *ip, struct xtsplit * split, struct btstack * btstack) in xtSplitUp() argument
669 xtpage_t *sp; /* split page */ in xtSplitUp()
681 int nsplit; /* number of pages split */ in xtSplitUp()
687 smp = split->mp; in xtSplitUp()
705 skip = split->index; in xtSplitUp()
713 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitUp()
714 split->addr); in xtSplitUp()
734 * allocate new index blocks to cover index page split(s) in xtSplitUp()
738 if (split->pxdlist == NULL) { in xtSplitUp()
740 split->pxdlist = &pxdlist; in xtSplitUp()
763 * Split leaf page <sp> into <sp> and a new right page <rp>. in xtSplitUp()
765 * The split routines insert the new entry into the leaf page, in xtSplitUp()
770 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
771 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
778 * propagate up the router entry for the leaf page just split in xtSplitUp()
781 * propagate the insert/split up the tree by walking back the stack in xtSplitUp()
783 * that were traversed during the search for the page that split. in xtSplitUp()
785 * the propagation of insert/split up the tree stops if the root in xtSplitUp()
786 * splits or the page inserted into doesn't have to split to hold in xtSplitUp()
789 * the parent entry for the split page remains the same, and in xtSplitUp()
818 * because the split was to the right. in xtSplitUp()
823 * split or shift right remaining entries of the parent page in xtSplitUp()
827 * parent page is full - split the parent page in xtSplitUp()
830 /* init for parent page split */ in xtSplitUp()
831 split->mp = smp; in xtSplitUp()
832 split->index = skip; /* index at insert */ in xtSplitUp()
833 split->flag = XAD_NEW; in xtSplitUp()
834 split->off = offsetXAD(&rcp->xad[XTENTRYSTART]); in xtSplitUp()
835 split->len = JFS_SBI(ip->i_sb)->nbperpage; in xtSplitUp()
836 split->addr = rcbn; in xtSplitUp()
841 /* The split routines insert the new entry, in xtSplitUp()
846 xtSplitRoot(tid, ip, split, &rmp) : in xtSplitUp()
847 xtSplitPage(tid, ip, split, &rmp, &rbn); in xtSplitUp()
919 * split a full non-root page into
920 * original/split/left page and new right page
921 * i.e., the original/split page remains as left page.
926 * struct xtsplit *split,
935 struct xtsplit * split, struct metapage ** rmpp, s64 * rbnp) in xtSplitPage() argument
954 smp = split->mp; in xtSplitPage()
957 INCREMENT(xtStat.split); in xtSplitPage()
959 pxdlist = split->pxdlist; in xtSplitPage()
972 * allocate the new right page for the split in xtSplitPage()
1003 * acquire a transaction lock on the split page in xtSplitPage()
1017 skip = split->index; in xtSplitPage()
1026 * if we're wrong it's no big deal - we will do the split the right in xtSplitPage()
1029 * reverse sorted data, that is, split the tree left, but it's not. in xtSplitPage()
1040 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1041 split->addr); in xtSplitPage()
1090 * split the data between the split and new/right pages in xtSplitPage()
1097 * skip index in old split/left page - insert into left page: in xtSplitPage()
1100 /* move right half of split page to the new right page */ in xtSplitPage()
1111 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1112 split->addr); in xtSplitPage()
1136 XT_PUTENTRY(xad, split->flag, split->off, split->len, in xtSplitPage()
1137 split->addr); in xtSplitPage()
1184 * split the full root page into original/root/split page and new
1188 * non-root page, and the split root page contains a single entry
1194 * struct xtsplit *split,
1202 struct inode *ip, struct xtsplit * split, struct metapage ** rmpp) in xtSplitRoot() argument
1218 INCREMENT(xtStat.split); in xtSplitRoot()
1223 pxdlist = split->pxdlist; in xtSplitRoot()
1269 skip = split->index; in xtSplitRoot()
1276 XT_PUTENTRY(xad, split->flag, split->off, split->len, split->addr); in xtSplitRoot()
1299 * action: root split; in xtSplitRoot()
1301 BT_MARK_DIRTY(split->mp, ip); in xtSplitRoot()
1313 tlck = txLock(tid, ip, split->mp, tlckXTREE | tlckGROW); in xtSplitRoot()
1348 struct xtsplit split; /* split information */ in xtExtend() local
1403 * propagate up the router entry for the new page from split in xtExtend()
1409 split.mp = mp; in xtExtend()
1410 split.index = index + 1; in xtExtend()
1411 split.flag = XAD_NEW; in xtExtend()
1412 split.off = xoff; /* split offset */ in xtExtend()
1413 split.len = len; in xtExtend()
1414 split.addr = xaddr; in xtExtend()
1415 split.pxdlist = NULL; in xtExtend()
1416 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtExtend()
1424 * if leaf root has been split, original root has been in xtExtend()
1507 struct xtsplit split; /* split information */ in xtUpdate() local
1688 * split XAD into (lXAD, nXAD): in xtUpdate()
1703 split.mp = mp; in xtUpdate()
1704 split.index = newindex; in xtUpdate()
1705 split.flag = xflag & ~XAD_NOTRECORDED; in xtUpdate()
1706 split.off = nxoff; in xtUpdate()
1707 split.len = nxlen; in xtUpdate()
1708 split.addr = nxaddr; in xtUpdate()
1709 split.pxdlist = NULL; in xtUpdate()
1710 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
1718 * if leaf root has been split, original root has been in xtUpdate()
1767 * does nXAD force 3-way split ? in xtUpdate()
1776 /* reorient nXAD as XAD for further split XAD into (nXAD, rXAD) */ in xtUpdate()
1811 /* recompute split pages */ in xtUpdate()
1835 * split XAD into (nXAD, rXAD) in xtUpdate()
1853 printf("xtUpdate.updateLeft.split p:0x%p\n", p); in xtUpdate()
1856 split.mp = mp; in xtUpdate()
1857 split.index = newindex; in xtUpdate()
1858 split.flag = xflag; in xtUpdate()
1859 split.off = xoff; in xtUpdate()
1860 split.len = xlen; in xtUpdate()
1861 split.addr = xaddr; in xtUpdate()
1862 split.pxdlist = NULL; in xtUpdate()
1863 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) in xtUpdate()
1872 * if leaf root has been split, original root has been in xtUpdate()
1953 struct xtsplit split; /* split information */ in xtAppend() local
1996 * if the leaf page is full, split the page and in xtAppend()
1997 * propagate up the router entry for the new page from split in xtAppend()
2006 * allocate new index blocks to cover index page split(s) in xtAppend()
2009 split.pxdlist = &pxdlist; in xtAppend()
2036 split.mp = mp; in xtAppend()
2037 split.index = index; in xtAppend()
2038 split.flag = xflag; in xtAppend()
2039 split.off = xoff; in xtAppend()
2040 split.len = xlen; in xtAppend()
2041 split.addr = xaddr; in xtAppend()
2042 if ((rc = xtSplitUp(tid, ip, &split, &btstack))) { in xtAppend()
2913 xtStat.split); in jfs_xtstat_proc_show()