Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 
0003 #ifndef BTRFS_TREE_MOD_LOG_H
0004 #define BTRFS_TREE_MOD_LOG_H
0005 
0006 #include "ctree.h"
0007 
0008 /* Represents a tree mod log user. */
0009 struct btrfs_seq_list {
0010     struct list_head list;
0011     u64 seq;
0012 };
0013 
0014 #define BTRFS_SEQ_LIST_INIT(name) { .list = LIST_HEAD_INIT((name).list), .seq = 0 }
0015 #define BTRFS_SEQ_LAST            ((u64)-1)
0016 
0017 enum btrfs_mod_log_op {
0018     BTRFS_MOD_LOG_KEY_REPLACE,
0019     BTRFS_MOD_LOG_KEY_ADD,
0020     BTRFS_MOD_LOG_KEY_REMOVE,
0021     BTRFS_MOD_LOG_KEY_REMOVE_WHILE_FREEING,
0022     BTRFS_MOD_LOG_KEY_REMOVE_WHILE_MOVING,
0023     BTRFS_MOD_LOG_MOVE_KEYS,
0024     BTRFS_MOD_LOG_ROOT_REPLACE,
0025 };
0026 
0027 u64 btrfs_get_tree_mod_seq(struct btrfs_fs_info *fs_info,
0028                struct btrfs_seq_list *elem);
0029 void btrfs_put_tree_mod_seq(struct btrfs_fs_info *fs_info,
0030                 struct btrfs_seq_list *elem);
0031 int btrfs_tree_mod_log_insert_root(struct extent_buffer *old_root,
0032                    struct extent_buffer *new_root,
0033                    bool log_removal);
0034 int btrfs_tree_mod_log_insert_key(struct extent_buffer *eb, int slot,
0035                   enum btrfs_mod_log_op op, gfp_t flags);
0036 int btrfs_tree_mod_log_free_eb(struct extent_buffer *eb);
0037 struct extent_buffer *btrfs_tree_mod_log_rewind(struct btrfs_fs_info *fs_info,
0038                         struct btrfs_path *path,
0039                         struct extent_buffer *eb,
0040                         u64 time_seq);
0041 struct extent_buffer *btrfs_get_old_root(struct btrfs_root *root, u64 time_seq);
0042 int btrfs_old_root_level(struct btrfs_root *root, u64 time_seq);
0043 int btrfs_tree_mod_log_eb_copy(struct extent_buffer *dst,
0044                    struct extent_buffer *src,
0045                    unsigned long dst_offset,
0046                    unsigned long src_offset,
0047                    int nr_items);
0048 int btrfs_tree_mod_log_insert_move(struct extent_buffer *eb,
0049                    int dst_slot, int src_slot,
0050                    int nr_items);
0051 u64 btrfs_tree_mod_log_lowest_seq(struct btrfs_fs_info *fs_info);
0052 
0053 #endif