Lines Matching refs:tm
80 struct tree_mod_elem *tm;
116 tm = rb_entry(node, struct tree_mod_elem, node);
117 if (tm->seq >= min_seq)
120 kfree(tm);
134 struct tree_mod_elem *tm)
143 tm->seq = btrfs_inc_tree_mod_seq(fs_info);
150 if (cur->logical < tm->logical)
152 else if (cur->logical > tm->logical)
154 else if (cur->seq < tm->seq)
156 else if (cur->seq > tm->seq)
162 rb_link_node(&tm->node, parent, new);
163 rb_insert_color(&tm->node, tm_root);
206 struct tree_mod_elem *tm;
208 tm = kzalloc(sizeof(*tm), GFP_NOFS);
209 if (!tm)
212 tm->logical = eb->start;
214 btrfs_node_key(eb, &tm->key, slot);
215 tm->blockptr = btrfs_node_blockptr(eb, slot);
217 tm->op = op;
218 tm->slot = slot;
219 tm->generation = btrfs_node_ptr_generation(eb, slot);
220 RB_CLEAR_NODE(&tm->node);
222 return tm;
228 struct tree_mod_elem *tm;
234 tm = alloc_tree_mod_elem(eb, slot, op);
235 if (!tm)
239 kfree(tm);
253 ret = tree_mod_log_insert(eb->fs_info, tm);
257 kfree(tm);
266 struct tree_mod_elem *tm;
268 tm = kzalloc(sizeof(*tm), GFP_NOFS);
269 if (!tm)
272 tm->logical = eb->start;
273 tm->slot = src_slot;
274 tm->move.dst_slot = dst_slot;
275 tm->move.nr_items = nr_items;
276 tm->op = BTRFS_MOD_LOG_MOVE_KEYS;
277 RB_CLEAR_NODE(&tm->node);
279 return tm;
286 struct tree_mod_elem *tm = NULL;
301 tm = tree_mod_log_alloc_move(eb, dst_slot, src_slot, nr_items);
302 if (IS_ERR(tm)) {
303 ret = PTR_ERR(tm);
304 tm = NULL;
346 ret = tree_mod_log_insert(eb->fs_info, tm);
365 kfree(tm);
395 struct tree_mod_elem *tm = NULL;
422 tm = kzalloc(sizeof(*tm), GFP_NOFS);
423 if (!tm) {
428 tm->logical = new_root->start;
429 tm->old_root.logical = old_root->start;
430 tm->old_root.level = btrfs_header_level(old_root);
431 tm->generation = btrfs_header_generation(old_root);
432 tm->op = BTRFS_MOD_LOG_ROOT_REPLACE;
453 ret = tree_mod_log_insert(fs_info, tm);
469 kfree(tm);
738 struct tree_mod_elem *tm;
753 tm = tree_mod_log_search_oldest(eb_root->fs_info, root_logical,
755 if (!looped && !tm)
762 if (!tm)
770 if (tm->op != BTRFS_MOD_LOG_ROOT_REPLACE)
773 found = tm;
774 root_logical = tm->old_root.logical;
780 found = tm;
787 * tm is a pointer to the first operation to rewind within eb. Then, all
798 struct tree_mod_elem *tm = first_tm;
821 while (tm && tm->seq >= time_seq) {
828 switch (tm->op) {
830 BUG_ON(tm->slot < n);
834 btrfs_set_node_key(eb, &tm->key, tm->slot);
835 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr);
836 btrfs_set_node_ptr_generation(eb, tm->slot,
837 tm->generation);
839 if (tm->slot > max_slot)
840 max_slot = tm->slot;
843 BUG_ON(tm->slot >= n);
844 btrfs_set_node_key(eb, &tm->key, tm->slot);
845 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr);
846 btrfs_set_node_ptr_generation(eb, tm->slot,
847 tm->generation);
859 if (tm->slot == max_slot)
865 ASSERT(tm->move.nr_items > 0);
866 move_src_end_slot = tm->move.dst_slot + tm->move.nr_items - 1;
867 move_dst_end_slot = tm->slot + tm->move.nr_items - 1;
868 o_dst = btrfs_node_key_ptr_offset(eb, tm->slot);
869 o_src = btrfs_node_key_ptr_offset(eb, tm->move.dst_slot);
871 tm->move.nr_items <= 0)) {
874 eb->start, tm->slot,
875 tm->move.dst_slot, tm->move.nr_items,
876 tm->seq, n, max_slot);
879 tm->move.nr_items * p_size);
894 next = rb_next(&tm->node);
897 tm = rb_entry(next, struct tree_mod_elem, node);
898 if (tm->logical != first_tm->logical)
918 struct tree_mod_elem *tm;
926 tm = tree_mod_log_search(fs_info, eb->start, time_seq);
927 if (!tm)
930 if (tm->op == BTRFS_MOD_LOG_KEY_REMOVE_WHILE_FREEING) {
931 BUG_ON(tm->slot != 0);
958 tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm);
975 struct tree_mod_elem *tm;
986 tm = tree_mod_log_oldest_root(eb_root, time_seq);
987 if (!tm)
990 if (tm->op == BTRFS_MOD_LOG_ROOT_REPLACE) {
991 old_root = &tm->old_root;
992 old_generation = tm->generation;
1000 tm = tree_mod_log_search(fs_info, logical, time_seq);
1001 if (old_root && tm && tm->op != BTRFS_MOD_LOG_KEY_REMOVE_WHILE_FREEING) {
1036 ASSERT(tm2 == tm || tm2->seq > tm->seq);
1037 if (!tm2 || tm2->seq < tm->seq) {
1041 tm = tm2;
1066 if (tm)
1067 tree_mod_log_rewind(fs_info, eb, time_seq, tm);
1077 struct tree_mod_elem *tm;
1081 tm = tree_mod_log_oldest_root(eb_root, time_seq);
1082 if (tm && tm->op == BTRFS_MOD_LOG_ROOT_REPLACE)
1083 level = tm->old_root.level;