Lines Matching refs:fnd

656 void fnd_clear(struct ntfs_fnd *fnd)
660 for (i = fnd->level - 1; i >= 0; i--) {
661 struct indx_node *n = fnd->nodes[i];
667 fnd->nodes[i] = NULL;
669 fnd->level = 0;
670 fnd->root_de = NULL;
673 static int fnd_push(struct ntfs_fnd *fnd, struct indx_node *n,
676 int i = fnd->level;
678 if (i < 0 || i >= ARRAY_SIZE(fnd->nodes))
680 fnd->nodes[i] = n;
681 fnd->de[i] = e;
682 fnd->level += 1;
686 static struct indx_node *fnd_pop(struct ntfs_fnd *fnd)
689 int i = fnd->level;
692 n = fnd->nodes[i];
693 fnd->nodes[i] = NULL;
694 fnd->level = i;
699 static bool fnd_is_empty(struct ntfs_fnd *fnd)
701 if (!fnd->level)
702 return !fnd->root_de;
704 return !fnd->de[fnd->level - 1];
1142 struct ntfs_fnd *fnd)
1157 e = fnd->level ? fnd->de[fnd->level - 1] : fnd->root_de;
1166 fnd_clear(fnd);
1173 fnd->root_de = e;
1195 fnd_push(fnd, node, e);
1204 struct ntfs_fnd *fnd)
1210 int level = fnd->level;
1217 fnd_clear(fnd);
1218 fnd->root_de = e;
1220 if (de_is_last(fnd->root_de)) {
1225 e = hdr_next_de(&root->ihdr, fnd->root_de);
1228 fnd->root_de = e;
1230 n = fnd->nodes[level - 1];
1231 e = fnd->de[level - 1];
1240 fnd->de[level - 1] = e;
1252 fnd_pop(fnd);
1270 fnd_push(fnd, n, e);
1285 fnd_pop(fnd);
1289 level = fnd->level;
1292 n = fnd->nodes[level - 1];
1293 e = fnd->de[level - 1];
1294 } else if (fnd->root_de) {
1296 e = fnd->root_de;
1297 fnd->root_de = NULL;
1305 if (!fnd->root_de)
1306 fnd->root_de = e;
1314 size_t *off, struct ntfs_fnd *fnd)
1331 fnd_clear(fnd);
1332 fnd->root_de = e;
1344 } else if (!fnd->root_de)
1352 if (!fnd->level) {
1354 if (!de_is_last(fnd->root_de)) {
1355 e = hdr_next_de(&root->ihdr, fnd->root_de);
1358 fnd->root_de = e;
1366 e2 = fnd->de[fnd->level - 1];
1368 n = fnd->nodes[fnd->level - 1];
1374 fnd->de[fnd->level - 1] = e;
1386 fnd_pop(fnd);
1408 fnd_push(fnd, n, e);
1572 struct ntfs_fnd *fnd, bool undo)
1615 fnd_clear(fnd);
1616 fnd->root_de = e;
1684 fnd->root_de = hdr_first_de(hdr);
1745 fnd_clear(fnd);
1746 err = indx_insert_entry(indx, ni, new_de, ctx, fnd, undo);
1759 fnd_push(fnd, n, e);
1784 const void *ctx, int level, struct ntfs_fnd *fnd)
1790 struct indx_node *n1 = fnd->nodes[level];
1800 e = fnd->level - 1 == level ? fnd->de[level] : NULL;
1802 fnd->de[level] = e;
1898 err = indx_insert_into_root(indx, ni, up_e, NULL, ctx, fnd, 0);
1905 level - 1, fnd);
1931 struct ntfs_fnd *fnd, bool undo)
1939 if (!fnd) {
1945 fnd = fnd_a;
1954 if (fnd_is_empty(fnd)) {
1961 fnd);
1971 if (!fnd->level) {
1976 err = indx_insert_into_root(indx, ni, new_de, fnd->root_de, ctx,
1977 fnd, undo);
1983 fnd->level - 1, fnd);
2160 struct ntfs_fnd *fnd)
2180 fnd_push(fnd, n, e);
2187 level = fnd->level - 1;
2200 n = fnd->nodes[level];
2235 fnd->de[level] = e;
2244 fnd_clear(fnd);
2257 struct ntfs_fnd *fnd, *fnd2;
2269 fnd = fnd_get();
2270 if (!fnd) {
2288 err = indx_find(indx, ni, root, key, key_len, ctx, &diff, &e, fnd);
2297 level = fnd->level;
2300 n = fnd->nodes[level - 1];
2301 e = fnd->de[level - 1];
2306 e = fnd->root_de;
2331 fnd_pop(fnd);
2351 fnd->level - 1,
2352 fnd) :
2354 ctx, fnd, 0);
2396 level = fnd->level;
2398 hdr = level ? &fnd->nodes[level - 1]->index->ihdr : &root->ihdr;
2420 fnd_clear(fnd);
2429 fnd_push(fnd, in, NULL);
2432 /* Merge fnd2 -> fnd. */
2434 fnd_push(fnd, fnd2->nodes[level], fnd2->de[level]);
2440 for (level = fnd->level; level; level--) {
2441 struct indx_node *in = fnd->nodes[level - 1];
2540 for (; level < fnd->level; level++) {
2541 ib = fnd->nodes[level]->index;
2552 fnd_clear(fnd);
2553 /*fnd->root_de = NULL;*/
2559 err = indx_insert_entry(indx, ni, me, ctx, fnd, 0);
2572 fnd_clear(fnd);
2628 fnd_put(fnd);
2644 struct ntfs_fnd *fnd;
2649 fnd = fnd_get();
2650 if (!fnd)
2661 &diff, &e, fnd);
2686 if (fnd->level) {
2688 err = indx_write(indx, ni, fnd->nodes[fnd->level - 1], sync);
2699 fnd_put(fnd);