|
@@ -1914,11 +1914,14 @@ int open_ctree(struct super_block *sb,
|
|
spin_lock_init(&fs_info->delayed_iput_lock);
|
|
spin_lock_init(&fs_info->delayed_iput_lock);
|
|
spin_lock_init(&fs_info->defrag_inodes_lock);
|
|
spin_lock_init(&fs_info->defrag_inodes_lock);
|
|
spin_lock_init(&fs_info->free_chunk_lock);
|
|
spin_lock_init(&fs_info->free_chunk_lock);
|
|
|
|
+ spin_lock_init(&fs_info->tree_mod_seq_lock);
|
|
|
|
+ rwlock_init(&fs_info->tree_mod_log_lock);
|
|
mutex_init(&fs_info->reloc_mutex);
|
|
mutex_init(&fs_info->reloc_mutex);
|
|
|
|
|
|
init_completion(&fs_info->kobj_unregister);
|
|
init_completion(&fs_info->kobj_unregister);
|
|
INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots);
|
|
INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots);
|
|
INIT_LIST_HEAD(&fs_info->space_info);
|
|
INIT_LIST_HEAD(&fs_info->space_info);
|
|
|
|
+ INIT_LIST_HEAD(&fs_info->tree_mod_seq_list);
|
|
btrfs_mapping_init(&fs_info->mapping_tree);
|
|
btrfs_mapping_init(&fs_info->mapping_tree);
|
|
btrfs_init_block_rsv(&fs_info->global_block_rsv);
|
|
btrfs_init_block_rsv(&fs_info->global_block_rsv);
|
|
btrfs_init_block_rsv(&fs_info->delalloc_block_rsv);
|
|
btrfs_init_block_rsv(&fs_info->delalloc_block_rsv);
|
|
@@ -1931,12 +1934,14 @@ int open_ctree(struct super_block *sb,
|
|
atomic_set(&fs_info->async_submit_draining, 0);
|
|
atomic_set(&fs_info->async_submit_draining, 0);
|
|
atomic_set(&fs_info->nr_async_bios, 0);
|
|
atomic_set(&fs_info->nr_async_bios, 0);
|
|
atomic_set(&fs_info->defrag_running, 0);
|
|
atomic_set(&fs_info->defrag_running, 0);
|
|
|
|
+ atomic_set(&fs_info->tree_mod_seq, 0);
|
|
fs_info->sb = sb;
|
|
fs_info->sb = sb;
|
|
fs_info->max_inline = 8192 * 1024;
|
|
fs_info->max_inline = 8192 * 1024;
|
|
fs_info->metadata_ratio = 0;
|
|
fs_info->metadata_ratio = 0;
|
|
fs_info->defrag_inodes = RB_ROOT;
|
|
fs_info->defrag_inodes = RB_ROOT;
|
|
fs_info->trans_no_join = 0;
|
|
fs_info->trans_no_join = 0;
|
|
fs_info->free_chunk_space = 0;
|
|
fs_info->free_chunk_space = 0;
|
|
|
|
+ fs_info->tree_mod_log = RB_ROOT;
|
|
|
|
|
|
/* readahead state */
|
|
/* readahead state */
|
|
INIT_RADIX_TREE(&fs_info->reada_tree, GFP_NOFS & ~__GFP_WAIT);
|
|
INIT_RADIX_TREE(&fs_info->reada_tree, GFP_NOFS & ~__GFP_WAIT);
|