tree-mod-log.h (1777B)
1// SPDX-License-Identifier: GPL-2.0 2 3#ifndef BTRFS_TREE_MOD_LOG_H 4#define BTRFS_TREE_MOD_LOG_H 5 6#include "ctree.h" 7 8/* Represents a tree mod log user. */ 9struct btrfs_seq_list { 10 struct list_head list; 11 u64 seq; 12}; 13 14#define BTRFS_SEQ_LIST_INIT(name) { .list = LIST_HEAD_INIT((name).list), .seq = 0 } 15#define BTRFS_SEQ_LAST ((u64)-1) 16 17enum btrfs_mod_log_op { 18 BTRFS_MOD_LOG_KEY_REPLACE, 19 BTRFS_MOD_LOG_KEY_ADD, 20 BTRFS_MOD_LOG_KEY_REMOVE, 21 BTRFS_MOD_LOG_KEY_REMOVE_WHILE_FREEING, 22 BTRFS_MOD_LOG_KEY_REMOVE_WHILE_MOVING, 23 BTRFS_MOD_LOG_MOVE_KEYS, 24 BTRFS_MOD_LOG_ROOT_REPLACE, 25}; 26 27u64 btrfs_get_tree_mod_seq(struct btrfs_fs_info *fs_info, 28 struct btrfs_seq_list *elem); 29void btrfs_put_tree_mod_seq(struct btrfs_fs_info *fs_info, 30 struct btrfs_seq_list *elem); 31int btrfs_tree_mod_log_insert_root(struct extent_buffer *old_root, 32 struct extent_buffer *new_root, 33 bool log_removal); 34int btrfs_tree_mod_log_insert_key(struct extent_buffer *eb, int slot, 35 enum btrfs_mod_log_op op, gfp_t flags); 36int btrfs_tree_mod_log_free_eb(struct extent_buffer *eb); 37struct extent_buffer *btrfs_tree_mod_log_rewind(struct btrfs_fs_info *fs_info, 38 struct btrfs_path *path, 39 struct extent_buffer *eb, 40 u64 time_seq); 41struct extent_buffer *btrfs_get_old_root(struct btrfs_root *root, u64 time_seq); 42int btrfs_old_root_level(struct btrfs_root *root, u64 time_seq); 43int btrfs_tree_mod_log_eb_copy(struct extent_buffer *dst, 44 struct extent_buffer *src, 45 unsigned long dst_offset, 46 unsigned long src_offset, 47 int nr_items); 48int btrfs_tree_mod_log_insert_move(struct extent_buffer *eb, 49 int dst_slot, int src_slot, 50 int nr_items); 51u64 btrfs_tree_mod_log_lowest_seq(struct btrfs_fs_info *fs_info); 52 53#endif