• Home
  • Raw
  • Download

Lines Matching full:split

45  * it is extended rather than split (its size is doubled),
46 * until its length becoms 4 KBytes, from then the extent is split
76 * (e.g., if split occurs <abc> and <aBd>, <ABD> trather than <aB>
77 * should be made the router key for the split)
114 /* dtree split parameter */
153 struct dtsplit * split, struct btstack * btstack);
155 static int dtSplitPage(tid_t tid, struct inode *ip, struct dtsplit * split,
159 struct dtsplit * split, struct btstack * btstack);
162 struct dtsplit * split, struct metapage ** rmpp);
615 /* init level count for max pages to split */ in dtSearch()
775 /* update max. number of pages to split */ in dtSearch()
830 struct dtsplit split; /* split information */ in dtInsert() local
866 * extend/split the leaf page; in dtInsert()
871 split.mp = mp; in dtInsert()
872 split.index = index; in dtInsert()
873 split.nslot = n; in dtInsert()
874 split.key = name; in dtInsert()
875 split.data = &data; in dtInsert()
876 rc = dtSplitUp(tid, ip, &split, btstack); in dtInsert()
932 struct inode *ip, struct dtsplit * split, struct btstack * btstack) in dtSplitUp() argument
937 dtpage_t *sp; /* split page */ in dtSplitUp()
939 dtpage_t *rp; /* new right page split from sp */ in dtSplitUp()
950 ddata_t *data = split->data; in dtSplitUp()
957 /* get split page */ in dtSplitUp()
958 smp = split->mp; in dtSplitUp()
969 * split leaf page in dtSplitUp()
971 * The split routines insert the new entry, and in dtSplitUp()
975 * split root leaf page: in dtSplitUp()
985 if (n <= split->nslot) in dtSplitUp()
997 split->pxdlist = &pxdlist; in dtSplitUp()
998 rc = dtSplitRoot(tid, ip, split, &rmp); in dtSplitUp()
1026 if ((n + sp->header.freecnt) <= split->nslot) in dtSplitUp()
1046 split->pxdlist = &pxdlist; in dtSplitUp()
1047 if ((rc = dtExtendPage(tid, ip, split, btstack))) { in dtSplitUp()
1069 * split leaf page <sp> into <sp> and a new right page <rp>. in dtSplitUp()
1075 * new index page(s) to cover page split(s) in dtSplitUp()
1096 split->pxdlist = &pxdlist; in dtSplitUp()
1097 if ((rc = dtSplitPage(tid, ip, split, &rmp, &rp, &rpxd))) { in dtSplitUp()
1108 * propagate up the router entry for the leaf page just split in dtSplitUp()
1111 * propagate the insert/split up the tree by walking back the stack in dtSplitUp()
1113 * that were traversed during the search for the page that split. in dtSplitUp()
1115 * the propagation of insert/split up the tree stops if the root in dtSplitUp()
1116 * splits or the page inserted into doesn't have to split to hold in dtSplitUp()
1119 * the parent entry for the split page remains the same, and in dtSplitUp()
1148 * because the split was to the right. in dtSplitUp()
1168 * if split occurs between these two entries, and in dtSplitUp()
1231 * parent page is full - split the parent page in dtSplitUp()
1234 /* init for parent page split */ in dtSplitUp()
1235 split->mp = smp; in dtSplitUp()
1236 split->index = skip; /* index at insert */ in dtSplitUp()
1237 split->nslot = n; in dtSplitUp()
1238 split->key = &key; in dtSplitUp()
1239 /* split->data = data; */ in dtSplitUp()
1244 /* The split routines insert the new entry, in dtSplitUp()
1249 dtSplitRoot(tid, ip, split, &rmp) : in dtSplitUp()
1250 dtSplitPage(tid, ip, split, &rmp, &rp, &rpxd); in dtSplitUp()
1294 /* unpin current split and its right page */ in dtSplitUp()
1299 * free remaining extents allocated for split in dtSplitUp()
1323 * function: Split a non-root page of a btree.
1329 * return split and new page pinned;
1331 static int dtSplitPage(tid_t tid, struct inode *ip, struct dtsplit * split, in dtSplitPage() argument
1357 /* get split page */ in dtSplitPage()
1358 smp = split->mp; in dtSplitPage()
1362 * allocate the new right page for the split in dtSplitPage()
1364 pxdlist = split->pxdlist; in dtSplitPage()
1394 * acquire a transaction lock on the split page in dtSplitPage()
1401 /* linelock header of split page */ in dtSplitPage()
1435 * sequential append at tail: append without split in dtSplitPage()
1441 * If we're wrong it's no big deal, we'll just do the split the right in dtSplitPage()
1444 * reverse sorted data, that is, split the tree left, in dtSplitPage()
1447 if (nextbn == 0 && split->index == sp->header.nextindex) { in dtSplitPage()
1463 dtInsertEntry(rp, 0, split->key, split->data, &rdtlck); in dtSplitPage()
1503 * split the data between the split and right pages. in dtSplitPage()
1505 skip = split->index; in dtSplitPage()
1510 * compute fill factor for split pages in dtSplitPage()
1520 n = split->nslot; in dtSplitPage()
1557 * split page moved out entries are linelocked; in dtSplitPage()
1600 /* insert the new entry in the split page */ in dtSplitPage()
1601 dtInsertEntry(sp, skip, split->key, split->data, &sdtlck); in dtSplitPage()
1603 /* linelock stbl of split page */ in dtSplitPage()
1621 dtInsertEntry(rp, skip, split->key, split->data, &rdtlck); in dtSplitPage()
1644 struct inode *ip, struct dtsplit * split, struct btstack * btstack) in dtExtendPage() argument
1669 smp = split->mp; in dtExtendPage()
1681 pxdlist = split->pxdlist; in dtExtendPage()
1822 dtInsertEntry(sp, split->index, split->key, split->data, &dtlck); in dtExtendPage()
1862 * split the full root page into
1863 * original/root/split page and new right page
1867 * the split root page contains a single entry for the
1877 struct inode *ip, struct dtsplit * split, struct metapage ** rmpp) in dtSplitRoot() argument
1899 /* get split root page */ in dtSplitRoot()
1900 smp = split->mp; in dtSplitRoot()
1906 * N.B. at first split, a one (or two) block to fit new entry in dtSplitRoot()
1907 * is allocated; at subsequent split, a full page is allocated; in dtSplitRoot()
1909 pxdlist = split->pxdlist; in dtSplitRoot()
2014 dtInsertEntry(rp, split->index, split->key, split->data, &dtlck); in dtSplitRoot()
4059 * function: move entries from split/left page to new/right page