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);
205 struct tree_mod_elem *tm;
207 tm = kzalloc(sizeof(*tm), GFP_NOFS);
208 if (!tm)
211 tm->logical = eb->start;
213 btrfs_node_key(eb, &tm->key, slot);
214 tm->blockptr = btrfs_node_blockptr(eb, slot);
216 tm->op = op;
217 tm->slot = slot;
218 tm->generation = btrfs_node_ptr_generation(eb, slot);
219 RB_CLEAR_NODE(&tm->node);
221 return tm;
227 struct tree_mod_elem *tm;
233 tm = alloc_tree_mod_elem(eb, slot, op);
234 if (!tm)
238 kfree(tm);
252 ret = tree_mod_log_insert(eb->fs_info, tm);
256 kfree(tm);
265 struct tree_mod_elem *tm;
267 tm = kzalloc(sizeof(*tm), GFP_NOFS);
268 if (!tm)
271 tm->logical = eb->start;
272 tm->slot = src_slot;
273 tm->move.dst_slot = dst_slot;
274 tm->move.nr_items = nr_items;
275 tm->op = BTRFS_MOD_LOG_MOVE_KEYS;
276 RB_CLEAR_NODE(&tm->node);
278 return tm;
285 struct tree_mod_elem *tm = NULL;
300 tm = tree_mod_log_alloc_move(eb, dst_slot, src_slot, nr_items);
301 if (IS_ERR(tm)) {
302 ret = PTR_ERR(tm);
303 tm = NULL;
345 ret = tree_mod_log_insert(eb->fs_info, tm);
364 kfree(tm);
394 struct tree_mod_elem *tm = NULL;
421 tm = kzalloc(sizeof(*tm), GFP_NOFS);
422 if (!tm) {
427 tm->logical = new_root->start;
428 tm->old_root.logical = old_root->start;
429 tm->old_root.level = btrfs_header_level(old_root);
430 tm->generation = btrfs_header_generation(old_root);
431 tm->op = BTRFS_MOD_LOG_ROOT_REPLACE;
452 ret = tree_mod_log_insert(fs_info, tm);
468 kfree(tm);
737 struct tree_mod_elem *tm;
752 tm = tree_mod_log_search_oldest(eb_root->fs_info, root_logical,
754 if (!looped && !tm)
761 if (!tm)
769 if (tm->op != BTRFS_MOD_LOG_ROOT_REPLACE)
772 found = tm;
773 root_logical = tm->old_root.logical;
779 found = tm;
786 * tm is a pointer to the first operation to rewind within eb. Then, all
797 struct tree_mod_elem *tm = first_tm;
820 while (tm && tm->seq >= time_seq) {
827 switch (tm->op) {
829 BUG_ON(tm->slot < n);
833 btrfs_set_node_key(eb, &tm->key, tm->slot);
834 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr);
835 btrfs_set_node_ptr_generation(eb, tm->slot,
836 tm->generation);
838 if (tm->slot > max_slot)
839 max_slot = tm->slot;
842 BUG_ON(tm->slot >= n);
843 btrfs_set_node_key(eb, &tm->key, tm->slot);
844 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr);
845 btrfs_set_node_ptr_generation(eb, tm->slot,
846 tm->generation);
858 if (tm->slot == max_slot)
864 ASSERT(tm->move.nr_items > 0);
865 move_src_end_slot = tm->move.dst_slot + tm->move.nr_items - 1;
866 move_dst_end_slot = tm->slot + tm->move.nr_items - 1;
867 o_dst = btrfs_node_key_ptr_offset(eb, tm->slot);
868 o_src = btrfs_node_key_ptr_offset(eb, tm->move.dst_slot);
870 tm->move.nr_items <= 0)) {
873 eb->start, tm->slot,
874 tm->move.dst_slot, tm->move.nr_items,
875 tm->seq, n, max_slot);
878 tm->move.nr_items * p_size);
893 next = rb_next(&tm->node);
896 tm = rb_entry(next, struct tree_mod_elem, node);
897 if (tm->logical != first_tm->logical)
917 struct tree_mod_elem *tm;
925 tm = tree_mod_log_search(fs_info, eb->start, time_seq);
926 if (!tm)
929 if (tm->op == BTRFS_MOD_LOG_KEY_REMOVE_WHILE_FREEING) {
930 BUG_ON(tm->slot != 0);
957 tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm);
974 struct tree_mod_elem *tm;
985 tm = tree_mod_log_oldest_root(eb_root, time_seq);
986 if (!tm)
989 if (tm->op == BTRFS_MOD_LOG_ROOT_REPLACE) {
990 old_root = &tm->old_root;
991 old_generation = tm->generation;
999 tm = tree_mod_log_search(fs_info, logical, time_seq);
1000 if (old_root && tm && tm->op != BTRFS_MOD_LOG_KEY_REMOVE_WHILE_FREEING) {
1035 ASSERT(tm2 == tm || tm2->seq > tm->seq);
1036 if (!tm2 || tm2->seq < tm->seq) {
1040 tm = tm2;
1065 if (tm)
1066 tree_mod_log_rewind(fs_info, eb, time_seq, tm);
1076 struct tree_mod_elem *tm;
1080 tm = tree_mod_log_oldest_root(eb_root, time_seq);
1081 if (tm && tm->op == BTRFS_MOD_LOG_ROOT_REPLACE)
1082 level = tm->old_root.level;