Lines Matching refs:tp

352 static NTSTATUS next_item2(device_extension* Vcb, tree* t, tree_data* td, traverse_ptr* tp) {  in next_item2()  argument
357 tp->tree = t; in next_item2()
358 tp->item = td2; in next_item2()
374 return find_item_to_level(Vcb, t2->root, tp, &td2->key, false, t->header.level, NULL); in next_item2()
378 NTSTATUS skip_to_difference(device_extension* Vcb, traverse_ptr* tp, traverse_ptr* tp2, bool* ended… in skip_to_difference() argument
383 t1 = tp->tree; in skip_to_difference()
414 Status = find_item(Vcb, t1->root, tp, &tp3.item->key, false, NULL); in skip_to_difference()
431 Status = find_item(Vcb, t1->root, tp, &tp3.item->key, false, NULL); in skip_to_difference()
454 static NTSTATUS find_item_in_tree(device_extension* Vcb, tree* t, traverse_ptr* tp, const KEY* sear… in find_item_in_tree() argument
503 while (find_prev_item(Vcb, &oldtp, tp, Irp)) { in find_item_in_tree()
504 if (!tp->item->ignore) in find_item_in_tree()
507 oldtp = *tp; in find_item_in_tree()
515 while (find_next_item(Vcb, &oldtp, tp, true, Irp)) { in find_item_in_tree()
516 if (!tp->item->ignore) in find_item_in_tree()
519 oldtp = *tp; in find_item_in_tree()
524 tp->tree = t; in find_item_in_tree()
525 tp->item = td; in find_item_in_tree()
540 tp->tree = t; in find_item_in_tree()
541 tp->item = td; in find_item_in_tree()
553 Status = find_item_in_tree(Vcb, td->treeholder.tree, tp, searchkey, ignore, level, Irp); in find_item_in_tree()
560 …Requires_lock_held_(_Curr_->tree_lock) device_extension* Vcb, _In_ root* r, _Out_ traverse_ptr* tp,
572 Status = find_item_in_tree(Vcb, r->treeholder.tree, tp, searchkey, ignore, 0, Irp);
581 NTSTATUS find_item_to_level(device_extension* Vcb, root* r, traverse_ptr* tp, const KEY* searchkey,… in find_item_to_level() argument
592 Status = find_item_in_tree(Vcb, r->treeholder.tree, tp, searchkey, ignore, level, Irp); in find_item_to_level()
598 tp->tree = r->treeholder.tree; in find_item_to_level()
599 tp->item = NULL; in find_item_to_level()
606 …s_lock_held_(_Curr_->tree_lock) device_extension* Vcb, const traverse_ptr* tp, traverse_ptr* next_…
611 next = next_item(tp->tree, tp->item);
615 next = next_item(tp->tree, next);
619 next_tp->tree = tp->tree;
632 if (!tp->tree->parent)
635 t = tp->tree;
720 …s_lock_held_(_Curr_->tree_lock) device_extension* Vcb, const traverse_ptr* tp, traverse_ptr* prev_…
726 if (prev_item(tp->tree, tp->item)) {
727 prev_tp->tree = tp->tree;
728 prev_tp->item = prev_item(tp->tree, tp->item);
733 if (!tp->tree->parent)
736 t = tp->tree;
886 traverse_ptr tp; variable
903 Status = find_item(Vcb, r, &tp, &searchkey, true, Irp);
914 tp.tree = r->treeholder.tree;
915 tp.item = NULL;
925 TRACE("tp.item = %p\n", tp.item);
927 if (tp.item) {
928 TRACE("tp.item->key = %p\n", &tp.item->key);
929 cmp = keycmp(searchkey, tp.item->key);
931 if (cmp == 0 && !tp.item->ignore) {
954 le = tp.tree->itemlist.Flink;
955 while (le != &tp.tree->itemlist) {
961 … obj_type, offset, firstitem.obj_id, firstitem.obj_type, firstitem.offset, tp.tree->header.num_ite…
965 InsertHeadList(&tp.tree->itemlist, &td->list_entry);
967 paritem = tp.tree->paritem;
969 if (!keycmp(paritem->key, tp.item->key)) {
977 …InsertHeadList(tp.item->list_entry.Blink, &td->list_entry); // make sure non-deleted item is befor…
979 InsertHeadList(&tp.item->list_entry, &td->list_entry);
981 tp.tree->header.num_items++;
982 tp.tree->size += size + sizeof(leaf_node);
984 if (!tp.tree->write) {
985 tp.tree->write = true;
990 *ptp = tp;
992 t = tp.tree;
1011 …Requires_exclusive_lock_held_(_Curr_->tree_lock) device_extension* Vcb, _Inout_ traverse_ptr* tp) {
1015 …ng item %I64x,%x,%I64x (ignore = %s)\n", tp->item->key.obj_id, tp->item->key.obj_type, tp->item->k…
1018 if (tp->item->ignore) {
1019 …g to delete already-deleted item %I64x,%x,%I64x\n", tp->item->key.obj_id, tp->item->key.obj_type,
1025 tp->item->ignore = true;
1027 if (!tp->tree->write) {
1028 tp->tree->write = true;
1032 tp->tree->header.num_items--;
1034 if (tp->tree->header.level == 0)
1035 tp->tree->size -= sizeof(leaf_node) + tp->item->size;
1037 tp->tree->size -= sizeof(internal_node);
1039 gen = tp->tree->Vcb->superblock.generation;
1041 t = tp->tree;
1934 traverse_ptr tp; variable
1944 Status = find_item(Vcb, br->r, &tp, &bi->key, true, Irp);
1950 Status = find_tree_end(tp.tree, &tree_end, &no_end);
1957 if (tp.item->key.obj_id == bi->key.obj_id) {
1960 td = tp.item;
1962 if (!tp.item->ignore) {
1963 tp.item->ignore = true;
1964 tp.tree->header.num_items--;
1965 tp.tree->size -= tp.item->size + sizeof(leaf_node);
1966 tp.tree->write = true;
1969 le2 = tp.item->list_entry.Flink;
1970 while (le2 != &tp.tree->itemlist) {
1976 tp.tree->header.num_items--;
1977 tp.tree->size -= td->size + sizeof(leaf_node);
1978 tp.tree->write = true;
1991 tp.item = td;
1993 if (!find_next_item(Vcb, &tp, &next_tp, false, Irp))
1996 tp = next_tp;
1998 le2 = &tp.item->list_entry;
1999 while (le2 != &tp.tree->itemlist) {
2005 tp.tree->header.num_items--;
2006 tp.tree->size -= td->size + sizeof(leaf_node);
2007 tp.tree->write = true;
2019 …if (tp.item->key.obj_id < bi->key.obj_id || (tp.item->key.obj_id == bi->key.obj_id && tp.item->key…
2022 if (find_next_item(Vcb, &tp, &tp2, false, Irp)) {
2024 tp = tp2;
2025 Status = find_tree_end(tp.tree, &tree_end, &no_end);
2034 … if (tp.item->key.obj_id == bi->key.obj_id && tp.item->key.obj_type == bi->key.obj_type) {
2037 td = tp.item;
2039 if (!tp.item->ignore) {
2040 tp.item->ignore = true;
2041 tp.tree->header.num_items--;
2042 tp.tree->size -= tp.item->size + sizeof(leaf_node);
2043 tp.tree->write = true;
2046 le2 = tp.item->list_entry.Flink;
2047 while (le2 != &tp.tree->itemlist) {
2053 tp.tree->header.num_items--;
2054 tp.tree->size -= td->size + sizeof(leaf_node);
2055 tp.tree->write = true;
2068 tp.item = td;
2070 if (!find_next_item(Vcb, &tp, &next_tp, false, Irp))
2073 tp = next_tp;
2075 le2 = &tp.item->list_entry;
2076 while (le2 != &tp.tree->itemlist) {
2082 tp.tree->header.num_items--;
2083 tp.tree->size -= td->size + sizeof(leaf_node);
2084 tp.tree->write = true;
2096 …if (tp.item->key.obj_id >= bi->key.obj_id && tp.item->key.obj_id < bi->key.obj_id + bi->key.offset…
2099 td = tp.item;
2101 if (!tp.item->ignore) {
2102 tp.item->ignore = true;
2103 tp.tree->header.num_items--;
2104 tp.tree->size -= tp.item->size + sizeof(leaf_node);
2105 tp.tree->write = true;
2108 le2 = tp.item->list_entry.Flink;
2109 while (le2 != &tp.tree->itemlist) {
2115 tp.tree->header.num_items--;
2116 tp.tree->size -= td->size + sizeof(leaf_node);
2117 tp.tree->write = true;
2130 tp.item = td;
2132 if (!find_next_item(Vcb, &tp, &next_tp, false, Irp))
2135 tp = next_tp;
2137 le2 = &tp.item->list_entry;
2138 while (le2 != &tp.tree->itemlist) {
2144 tp.tree->header.num_items--;
2145 tp.tree->size -= td->size + sizeof(leaf_node);
2146 tp.tree->write = true;
2175 cmp = keycmp(bi->key, tp.item->key);
2181 InsertHeadList(&tp.tree->itemlist, &td->list_entry);
2183 paritem = tp.tree->paritem;
2185 if (!keycmp(paritem->key, tp.item->key)) {
2194 if (tp.item->ignore) {
2196 InsertHeadList(tp.item->list_entry.Blink, &td->list_entry);
2198 Status = handle_batch_collision(Vcb, bi, tp.tree, tp.item, td, &items, &ignore);
2212 InsertHeadList(&tp.item->list_entry, &td->list_entry);
2220 tp.tree->header.num_items++;
2221 tp.tree->size += bi->datalen + sizeof(leaf_node);
2222 tp.tree->write = true;
2226 listhead = tp.item;
2228 while (listhead->list_entry.Blink != &tp.tree->itemlist) {
2268 while (le3 != &tp.tree->itemlist) {
2282 … Status = handle_batch_collision(Vcb, bi2, tp.tree, td2, td, &items, &ignore);
2309 InsertTailList(&tp.tree->itemlist, &td->list_entry);
2312 tp.tree->header.num_items++;
2313 tp.tree->size += bi2->datalen + sizeof(leaf_node);
2321 while (listhead->list_entry.Blink != &tp.tree->itemlist) {
2337 t = tp.tree;