Lines Matching refs:tm
393 struct tree_mod_elem *tm; in btrfs_put_tree_mod_seq() local
427 tm = container_of(node, struct tree_mod_elem, node); in btrfs_put_tree_mod_seq()
428 if (tm->seq > min_seq) in btrfs_put_tree_mod_seq()
431 kfree(tm); in btrfs_put_tree_mod_seq()
447 __tree_mod_log_insert(struct btrfs_fs_info *fs_info, struct tree_mod_elem *tm) in __tree_mod_log_insert() argument
454 BUG_ON(!tm); in __tree_mod_log_insert()
456 tm->seq = btrfs_inc_tree_mod_seq(fs_info); in __tree_mod_log_insert()
463 if (cur->index < tm->index) in __tree_mod_log_insert()
465 else if (cur->index > tm->index) in __tree_mod_log_insert()
467 else if (cur->seq < tm->seq) in __tree_mod_log_insert()
469 else if (cur->seq > tm->seq) in __tree_mod_log_insert()
475 rb_link_node(&tm->node, parent, new); in __tree_mod_log_insert()
476 rb_insert_color(&tm->node, tm_root); in __tree_mod_log_insert()
520 struct tree_mod_elem *tm; in alloc_tree_mod_elem() local
522 tm = kzalloc(sizeof(*tm), flags); in alloc_tree_mod_elem()
523 if (!tm) in alloc_tree_mod_elem()
526 tm->index = eb->start >> PAGE_CACHE_SHIFT; in alloc_tree_mod_elem()
528 btrfs_node_key(eb, &tm->key, slot); in alloc_tree_mod_elem()
529 tm->blockptr = btrfs_node_blockptr(eb, slot); in alloc_tree_mod_elem()
531 tm->op = op; in alloc_tree_mod_elem()
532 tm->slot = slot; in alloc_tree_mod_elem()
533 tm->generation = btrfs_node_ptr_generation(eb, slot); in alloc_tree_mod_elem()
534 RB_CLEAR_NODE(&tm->node); in alloc_tree_mod_elem()
536 return tm; in alloc_tree_mod_elem()
544 struct tree_mod_elem *tm; in tree_mod_log_insert_key() local
550 tm = alloc_tree_mod_elem(eb, slot, op, flags); in tree_mod_log_insert_key()
551 if (!tm) in tree_mod_log_insert_key()
555 kfree(tm); in tree_mod_log_insert_key()
559 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_key()
562 kfree(tm); in tree_mod_log_insert_key()
572 struct tree_mod_elem *tm = NULL; in tree_mod_log_insert_move() local
585 tm = kzalloc(sizeof(*tm), flags); in tree_mod_log_insert_move()
586 if (!tm) { in tree_mod_log_insert_move()
591 tm->index = eb->start >> PAGE_CACHE_SHIFT; in tree_mod_log_insert_move()
592 tm->slot = src_slot; in tree_mod_log_insert_move()
593 tm->move.dst_slot = dst_slot; in tree_mod_log_insert_move()
594 tm->move.nr_items = nr_items; in tree_mod_log_insert_move()
595 tm->op = MOD_LOG_MOVE_KEYS; in tree_mod_log_insert_move()
621 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_move()
637 kfree(tm); in tree_mod_log_insert_move()
669 struct tree_mod_elem *tm = NULL; in tree_mod_log_insert_root() local
696 tm = kzalloc(sizeof(*tm), flags); in tree_mod_log_insert_root()
697 if (!tm) { in tree_mod_log_insert_root()
702 tm->index = new_root->start >> PAGE_CACHE_SHIFT; in tree_mod_log_insert_root()
703 tm->old_root.logical = old_root->start; in tree_mod_log_insert_root()
704 tm->old_root.level = btrfs_header_level(old_root); in tree_mod_log_insert_root()
705 tm->generation = btrfs_header_generation(old_root); in tree_mod_log_insert_root()
706 tm->op = MOD_LOG_ROOT_REPLACE; in tree_mod_log_insert_root()
714 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_root()
729 kfree(tm); in tree_mod_log_insert_root()
1222 struct tree_mod_elem *tm; in __tree_mod_log_oldest_root() local
1236 tm = tree_mod_log_search_oldest(fs_info, root_logical, in __tree_mod_log_oldest_root()
1238 if (!looped && !tm) in __tree_mod_log_oldest_root()
1245 if (!tm) in __tree_mod_log_oldest_root()
1253 if (tm->op != MOD_LOG_ROOT_REPLACE) in __tree_mod_log_oldest_root()
1256 found = tm; in __tree_mod_log_oldest_root()
1257 root_logical = tm->old_root.logical; in __tree_mod_log_oldest_root()
1263 found = tm; in __tree_mod_log_oldest_root()
1279 struct tree_mod_elem *tm = first_tm; in __tree_mod_log_rewind() local
1286 while (tm && tm->seq >= time_seq) { in __tree_mod_log_rewind()
1292 switch (tm->op) { in __tree_mod_log_rewind()
1294 BUG_ON(tm->slot < n); in __tree_mod_log_rewind()
1298 btrfs_set_node_key(eb, &tm->key, tm->slot); in __tree_mod_log_rewind()
1299 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr); in __tree_mod_log_rewind()
1300 btrfs_set_node_ptr_generation(eb, tm->slot, in __tree_mod_log_rewind()
1301 tm->generation); in __tree_mod_log_rewind()
1305 BUG_ON(tm->slot >= n); in __tree_mod_log_rewind()
1306 btrfs_set_node_key(eb, &tm->key, tm->slot); in __tree_mod_log_rewind()
1307 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr); in __tree_mod_log_rewind()
1308 btrfs_set_node_ptr_generation(eb, tm->slot, in __tree_mod_log_rewind()
1309 tm->generation); in __tree_mod_log_rewind()
1316 o_dst = btrfs_node_key_ptr_offset(tm->slot); in __tree_mod_log_rewind()
1317 o_src = btrfs_node_key_ptr_offset(tm->move.dst_slot); in __tree_mod_log_rewind()
1319 tm->move.nr_items * p_size); in __tree_mod_log_rewind()
1333 next = rb_next(&tm->node); in __tree_mod_log_rewind()
1336 tm = container_of(next, struct tree_mod_elem, node); in __tree_mod_log_rewind()
1337 if (tm->index != first_tm->index) in __tree_mod_log_rewind()
1356 struct tree_mod_elem *tm; in tree_mod_log_rewind() local
1364 tm = tree_mod_log_search(fs_info, eb->start, time_seq); in tree_mod_log_rewind()
1365 if (!tm) in tree_mod_log_rewind()
1371 if (tm->op == MOD_LOG_KEY_REMOVE_WHILE_FREEING) { in tree_mod_log_rewind()
1372 BUG_ON(tm->slot != 0); in tree_mod_log_rewind()
1399 __tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm); in tree_mod_log_rewind()
1416 struct tree_mod_elem *tm; in get_old_root() local
1425 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in get_old_root()
1426 if (!tm) in get_old_root()
1429 if (tm->op == MOD_LOG_ROOT_REPLACE) { in get_old_root()
1430 old_root = &tm->old_root; in get_old_root()
1431 old_generation = tm->generation; in get_old_root()
1437 tm = tree_mod_log_search(root->fs_info, logical, time_seq); in get_old_root()
1438 if (old_root && tm && tm->op != MOD_LOG_KEY_REMOVE_WHILE_FREEING) { in get_old_root()
1472 if (tm) in get_old_root()
1473 __tree_mod_log_rewind(root->fs_info, eb, time_seq, tm); in get_old_root()
1483 struct tree_mod_elem *tm; in btrfs_old_root_level() local
1487 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in btrfs_old_root_level()
1488 if (tm && tm->op == MOD_LOG_ROOT_REPLACE) { in btrfs_old_root_level()
1489 level = tm->old_root.level; in btrfs_old_root_level()