Lines Matching refs:fnd

655 void fnd_clear(struct ntfs_fnd *fnd)  in fnd_clear()  argument
659 for (i = fnd->level - 1; i >= 0; i--) { in fnd_clear()
660 struct indx_node *n = fnd->nodes[i]; in fnd_clear()
666 fnd->nodes[i] = NULL; in fnd_clear()
668 fnd->level = 0; in fnd_clear()
669 fnd->root_de = NULL; in fnd_clear()
672 static int fnd_push(struct ntfs_fnd *fnd, struct indx_node *n, in fnd_push() argument
675 int i = fnd->level; in fnd_push()
677 if (i < 0 || i >= ARRAY_SIZE(fnd->nodes)) in fnd_push()
679 fnd->nodes[i] = n; in fnd_push()
680 fnd->de[i] = e; in fnd_push()
681 fnd->level += 1; in fnd_push()
685 static struct indx_node *fnd_pop(struct ntfs_fnd *fnd) in fnd_pop() argument
688 int i = fnd->level; in fnd_pop()
691 n = fnd->nodes[i]; in fnd_pop()
692 fnd->nodes[i] = NULL; in fnd_pop()
693 fnd->level = i; in fnd_pop()
698 static bool fnd_is_empty(struct ntfs_fnd *fnd) in fnd_is_empty() argument
700 if (!fnd->level) in fnd_is_empty()
701 return !fnd->root_de; in fnd_is_empty()
703 return !fnd->de[fnd->level - 1]; in fnd_is_empty()
1114 struct ntfs_fnd *fnd) in indx_find() argument
1129 e = fnd->level ? fnd->de[fnd->level - 1] : fnd->root_de; in indx_find()
1138 fnd_clear(fnd); in indx_find()
1145 fnd->root_de = e; in indx_find()
1165 fnd_push(fnd, node, e); in indx_find()
1174 struct ntfs_fnd *fnd) in indx_find_sort() argument
1180 int level = fnd->level; in indx_find_sort()
1187 fnd_clear(fnd); in indx_find_sort()
1188 fnd->root_de = e; in indx_find_sort()
1190 if (de_is_last(fnd->root_de)) { in indx_find_sort()
1195 e = hdr_next_de(&root->ihdr, fnd->root_de); in indx_find_sort()
1198 fnd->root_de = e; in indx_find_sort()
1200 n = fnd->nodes[level - 1]; in indx_find_sort()
1201 e = fnd->de[level - 1]; in indx_find_sort()
1210 fnd->de[level - 1] = e; in indx_find_sort()
1222 fnd_pop(fnd); in indx_find_sort()
1240 fnd_push(fnd, n, e); in indx_find_sort()
1255 fnd_pop(fnd); in indx_find_sort()
1259 level = fnd->level; in indx_find_sort()
1262 n = fnd->nodes[level - 1]; in indx_find_sort()
1263 e = fnd->de[level - 1]; in indx_find_sort()
1264 } else if (fnd->root_de) { in indx_find_sort()
1266 e = fnd->root_de; in indx_find_sort()
1267 fnd->root_de = NULL; in indx_find_sort()
1275 if (!fnd->root_de) in indx_find_sort()
1276 fnd->root_de = e; in indx_find_sort()
1284 size_t *off, struct ntfs_fnd *fnd) in indx_find_raw() argument
1301 fnd_clear(fnd); in indx_find_raw()
1302 fnd->root_de = e; in indx_find_raw()
1314 } else if (!fnd->root_de) in indx_find_raw()
1322 if (!fnd->level) { in indx_find_raw()
1324 if (!de_is_last(fnd->root_de)) { in indx_find_raw()
1325 e = hdr_next_de(&root->ihdr, fnd->root_de); in indx_find_raw()
1328 fnd->root_de = e; in indx_find_raw()
1336 e2 = fnd->de[fnd->level - 1]; in indx_find_raw()
1338 n = fnd->nodes[fnd->level - 1]; in indx_find_raw()
1344 fnd->de[fnd->level - 1] = e; in indx_find_raw()
1356 fnd_pop(fnd); in indx_find_raw()
1378 fnd_push(fnd, n, e); in indx_find_raw()
1541 struct ntfs_fnd *fnd, bool undo) in indx_insert_into_root() argument
1584 fnd_clear(fnd); in indx_insert_into_root()
1585 fnd->root_de = e; in indx_insert_into_root()
1653 fnd->root_de = hdr_first_de(hdr); in indx_insert_into_root()
1714 fnd_clear(fnd); in indx_insert_into_root()
1715 err = indx_insert_entry(indx, ni, new_de, ctx, fnd, undo); in indx_insert_into_root()
1728 fnd_push(fnd, n, e); in indx_insert_into_root()
1753 const void *ctx, int level, struct ntfs_fnd *fnd) in indx_insert_into_buffer() argument
1759 struct indx_node *n1 = fnd->nodes[level]; in indx_insert_into_buffer()
1768 e = fnd->level - 1 == level ? fnd->de[level] : NULL; in indx_insert_into_buffer()
1770 fnd->de[level] = e; in indx_insert_into_buffer()
1859 err = indx_insert_into_root(indx, ni, up_e, NULL, ctx, fnd, 0); in indx_insert_into_buffer()
1868 level - 1, fnd); in indx_insert_into_buffer()
1886 struct ntfs_fnd *fnd, bool undo) in indx_insert_entry() argument
1894 if (!fnd) { in indx_insert_entry()
1900 fnd = fnd_a; in indx_insert_entry()
1909 if (fnd_is_empty(fnd)) { in indx_insert_entry()
1916 fnd); in indx_insert_entry()
1926 if (!fnd->level) { in indx_insert_entry()
1931 err = indx_insert_into_root(indx, ni, new_de, fnd->root_de, ctx, in indx_insert_entry()
1932 fnd, undo); in indx_insert_entry()
1940 fnd->level - 1, fnd); in indx_insert_entry()
2119 struct ntfs_fnd *fnd) in indx_get_entry_to_replace() argument
2139 fnd_push(fnd, n, e); in indx_get_entry_to_replace()
2146 level = fnd->level - 1; in indx_get_entry_to_replace()
2159 n = fnd->nodes[level]; in indx_get_entry_to_replace()
2194 fnd->de[level] = e; in indx_get_entry_to_replace()
2203 fnd_clear(fnd); in indx_get_entry_to_replace()
2216 struct ntfs_fnd *fnd, *fnd2; in indx_delete_entry() local
2228 fnd = fnd_get(); in indx_delete_entry()
2229 if (!fnd) { in indx_delete_entry()
2247 err = indx_find(indx, ni, root, key, key_len, ctx, &diff, &e, fnd); in indx_delete_entry()
2256 level = fnd->level; in indx_delete_entry()
2259 n = fnd->nodes[level - 1]; in indx_delete_entry()
2260 e = fnd->de[level - 1]; in indx_delete_entry()
2265 e = fnd->root_de; in indx_delete_entry()
2290 fnd_pop(fnd); in indx_delete_entry()
2310 fnd->level - 1, in indx_delete_entry()
2311 fnd) in indx_delete_entry()
2313 ctx, fnd, 0); in indx_delete_entry()
2355 level = fnd->level; in indx_delete_entry()
2357 hdr = level ? &fnd->nodes[level - 1]->index->ihdr : &root->ihdr; in indx_delete_entry()
2379 fnd_clear(fnd); in indx_delete_entry()
2388 fnd_push(fnd, in, NULL); in indx_delete_entry()
2393 fnd_push(fnd, fnd2->nodes[level], fnd2->de[level]); in indx_delete_entry()
2399 for (level = fnd->level; level; level--) { in indx_delete_entry()
2400 struct indx_node *in = fnd->nodes[level - 1]; in indx_delete_entry()
2499 for (; level < fnd->level; level++) { in indx_delete_entry()
2500 ib = fnd->nodes[level]->index; in indx_delete_entry()
2511 fnd_clear(fnd); in indx_delete_entry()
2518 err = indx_insert_entry(indx, ni, me, ctx, fnd, 0); in indx_delete_entry()
2531 fnd_clear(fnd); in indx_delete_entry()
2587 fnd_put(fnd); in indx_delete_entry()
2603 struct ntfs_fnd *fnd; in indx_update_dup() local
2608 fnd = fnd_get(); in indx_update_dup()
2609 if (!fnd) in indx_update_dup()
2620 &diff, &e, fnd); in indx_update_dup()
2645 if (fnd->level) { in indx_update_dup()
2647 err = indx_write(indx, ni, fnd->nodes[fnd->level - 1], sync); in indx_update_dup()
2658 fnd_put(fnd); in indx_update_dup()