Loading fs/btrfs/btrfs_inode.h +9 −8 Original line number Diff line number Diff line Loading @@ -103,11 +103,6 @@ struct btrfs_inode { */ u64 delalloc_bytes; /* total number of bytes that may be used for this inode for * delalloc */ u64 reserved_bytes; /* * the size of the file stored in the metadata on disk. data=ordered * means the in-memory i_size might be larger than the size on disk Loading @@ -115,9 +110,6 @@ struct btrfs_inode { */ u64 disk_i_size; /* flags field from the on disk inode */ u32 flags; /* * if this is a directory then index_cnt is the counter for the index * number for new files that are created Loading @@ -131,6 +123,15 @@ struct btrfs_inode { */ u64 last_unlink_trans; /* * Number of bytes outstanding that are going to need csums. This is * used in ENOSPC accounting. */ u64 csum_bytes; /* flags field from the on disk inode */ u32 flags; /* * Counters to keep track of the number of extent item's we may use due * to delalloc and such. outstanding_extents is the number of extent Loading fs/btrfs/ctree.h +27 −29 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <linux/kobject.h> #include <trace/events/btrfs.h> #include <asm/kmap_types.h> #include <linux/pagemap.h> #include "extent_io.h" #include "extent_map.h" #include "async-thread.h" Loading Loading @@ -772,14 +773,8 @@ struct btrfs_space_info { struct btrfs_block_rsv { u64 size; u64 reserved; u64 freed[2]; struct btrfs_space_info *space_info; struct list_head list; spinlock_t lock; atomic_t usage; unsigned int priority:8; unsigned int durable:1; unsigned int refill_used:1; unsigned int full:1; }; Loading Loading @@ -840,10 +835,10 @@ struct btrfs_block_group_cache { spinlock_t lock; u64 pinned; u64 reserved; u64 reserved_pinned; u64 bytes_super; u64 flags; u64 sectorsize; u64 cache_generation; unsigned int ro:1; unsigned int dirty:1; unsigned int iref:1; Loading Loading @@ -899,6 +894,10 @@ struct btrfs_fs_info { spinlock_t block_group_cache_lock; struct rb_root block_group_cache_tree; /* keep track of unallocated space */ spinlock_t free_chunk_lock; u64 free_chunk_space; struct extent_io_tree freed_extents[2]; struct extent_io_tree *pinned_extents; Loading @@ -919,11 +918,6 @@ struct btrfs_fs_info { struct btrfs_block_rsv empty_block_rsv; /* list of block reservations that cross multiple transactions */ struct list_head durable_block_rsv_list; struct mutex durable_block_rsv_mutex; u64 generation; u64 last_trans_committed; Loading Loading @@ -2129,6 +2123,11 @@ static inline bool btrfs_mixed_space_info(struct btrfs_space_info *space_info) (space_info->flags & BTRFS_BLOCK_GROUP_DATA)); } static inline gfp_t btrfs_alloc_write_mask(struct address_space *mapping) { return mapping_gfp_mask(mapping) & ~__GFP_FS; } /* extent-tree.c */ static inline u64 btrfs_calc_trans_metadata_size(struct btrfs_root *root, unsigned num_items) Loading @@ -2137,6 +2136,17 @@ static inline u64 btrfs_calc_trans_metadata_size(struct btrfs_root *root, 3 * num_items; } /* * Doing a truncate won't result in new nodes or leaves, just what we need for * COW. */ static inline u64 btrfs_calc_trunc_metadata_size(struct btrfs_root *root, unsigned num_items) { return (root->leafsize + root->nodesize * (BTRFS_MAX_LEVEL - 1)) * num_items; } void btrfs_put_block_group(struct btrfs_block_group_cache *cache); int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, struct btrfs_root *root, unsigned long count); Loading Loading @@ -2196,8 +2206,6 @@ int btrfs_free_extent(struct btrfs_trans_handle *trans, u64 root_objectid, u64 owner, u64 offset); int btrfs_free_reserved_extent(struct btrfs_root *root, u64 start, u64 len); int btrfs_update_reserved_bytes(struct btrfs_block_group_cache *cache, u64 num_bytes, int reserve, int sinfo); int btrfs_prepare_extent_commit(struct btrfs_trans_handle *trans, struct btrfs_root *root); int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, Loading Loading @@ -2240,25 +2248,20 @@ void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv); struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root); void btrfs_free_block_rsv(struct btrfs_root *root, struct btrfs_block_rsv *rsv); void btrfs_add_durable_block_rsv(struct btrfs_fs_info *fs_info, struct btrfs_block_rsv *rsv); int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, struct btrfs_root *root, int btrfs_block_rsv_add(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, u64 num_bytes); int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, struct btrfs_root *root, int btrfs_block_rsv_check(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, int min_factor); int btrfs_block_rsv_refill(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, u64 min_reserved, int min_factor); u64 min_reserved); int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv, struct btrfs_block_rsv *dst_rsv, u64 num_bytes); void btrfs_block_rsv_release(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, u64 num_bytes); int btrfs_truncate_reserve_metadata(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct btrfs_block_rsv *rsv); int btrfs_set_block_group_ro(struct btrfs_root *root, struct btrfs_block_group_cache *cache); int btrfs_set_block_group_rw(struct btrfs_root *root, Loading Loading @@ -2579,11 +2582,6 @@ int btrfs_update_inode(struct btrfs_trans_handle *trans, int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode); int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode); int btrfs_orphan_cleanup(struct btrfs_root *root); void btrfs_orphan_pre_snapshot(struct btrfs_trans_handle *trans, struct btrfs_pending_snapshot *pending, u64 *bytes_to_reserve); void btrfs_orphan_post_snapshot(struct btrfs_trans_handle *trans, struct btrfs_pending_snapshot *pending); void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans, struct btrfs_root *root); int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size); Loading fs/btrfs/disk-io.c +4 −4 Original line number Diff line number Diff line Loading @@ -1648,6 +1648,7 @@ struct btrfs_root *open_ctree(struct super_block *sb, spin_lock_init(&fs_info->fs_roots_radix_lock); spin_lock_init(&fs_info->delayed_iput_lock); spin_lock_init(&fs_info->defrag_inodes_lock); spin_lock_init(&fs_info->free_chunk_lock); mutex_init(&fs_info->reloc_mutex); init_completion(&fs_info->kobj_unregister); Loading @@ -1665,8 +1666,6 @@ struct btrfs_root *open_ctree(struct super_block *sb, btrfs_init_block_rsv(&fs_info->trans_block_rsv); btrfs_init_block_rsv(&fs_info->chunk_block_rsv); btrfs_init_block_rsv(&fs_info->empty_block_rsv); INIT_LIST_HEAD(&fs_info->durable_block_rsv_list); mutex_init(&fs_info->durable_block_rsv_mutex); atomic_set(&fs_info->nr_async_submits, 0); atomic_set(&fs_info->async_delalloc_pages, 0); atomic_set(&fs_info->async_submit_draining, 0); Loading @@ -1677,6 +1676,7 @@ struct btrfs_root *open_ctree(struct super_block *sb, fs_info->metadata_ratio = 0; fs_info->defrag_inodes = RB_ROOT; fs_info->trans_no_join = 0; fs_info->free_chunk_space = 0; fs_info->thread_pool_size = min_t(unsigned long, num_online_cpus() + 2, 8); Loading Loading @@ -2545,8 +2545,6 @@ int close_ctree(struct btrfs_root *root) /* clear out the rbtree of defraggable inodes */ btrfs_run_defrag_inodes(root->fs_info); btrfs_put_block_group_cache(fs_info); /* * Here come 2 situations when btrfs is broken to flip readonly: * Loading @@ -2572,6 +2570,8 @@ int close_ctree(struct btrfs_root *root) printk(KERN_ERR "btrfs: commit super ret %d\n", ret); } btrfs_put_block_group_cache(fs_info); kthread_stop(root->fs_info->transaction_kthread); kthread_stop(root->fs_info->cleaner_kthread); Loading Loading
fs/btrfs/btrfs_inode.h +9 −8 Original line number Diff line number Diff line Loading @@ -103,11 +103,6 @@ struct btrfs_inode { */ u64 delalloc_bytes; /* total number of bytes that may be used for this inode for * delalloc */ u64 reserved_bytes; /* * the size of the file stored in the metadata on disk. data=ordered * means the in-memory i_size might be larger than the size on disk Loading @@ -115,9 +110,6 @@ struct btrfs_inode { */ u64 disk_i_size; /* flags field from the on disk inode */ u32 flags; /* * if this is a directory then index_cnt is the counter for the index * number for new files that are created Loading @@ -131,6 +123,15 @@ struct btrfs_inode { */ u64 last_unlink_trans; /* * Number of bytes outstanding that are going to need csums. This is * used in ENOSPC accounting. */ u64 csum_bytes; /* flags field from the on disk inode */ u32 flags; /* * Counters to keep track of the number of extent item's we may use due * to delalloc and such. outstanding_extents is the number of extent Loading
fs/btrfs/ctree.h +27 −29 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <linux/kobject.h> #include <trace/events/btrfs.h> #include <asm/kmap_types.h> #include <linux/pagemap.h> #include "extent_io.h" #include "extent_map.h" #include "async-thread.h" Loading Loading @@ -772,14 +773,8 @@ struct btrfs_space_info { struct btrfs_block_rsv { u64 size; u64 reserved; u64 freed[2]; struct btrfs_space_info *space_info; struct list_head list; spinlock_t lock; atomic_t usage; unsigned int priority:8; unsigned int durable:1; unsigned int refill_used:1; unsigned int full:1; }; Loading Loading @@ -840,10 +835,10 @@ struct btrfs_block_group_cache { spinlock_t lock; u64 pinned; u64 reserved; u64 reserved_pinned; u64 bytes_super; u64 flags; u64 sectorsize; u64 cache_generation; unsigned int ro:1; unsigned int dirty:1; unsigned int iref:1; Loading Loading @@ -899,6 +894,10 @@ struct btrfs_fs_info { spinlock_t block_group_cache_lock; struct rb_root block_group_cache_tree; /* keep track of unallocated space */ spinlock_t free_chunk_lock; u64 free_chunk_space; struct extent_io_tree freed_extents[2]; struct extent_io_tree *pinned_extents; Loading @@ -919,11 +918,6 @@ struct btrfs_fs_info { struct btrfs_block_rsv empty_block_rsv; /* list of block reservations that cross multiple transactions */ struct list_head durable_block_rsv_list; struct mutex durable_block_rsv_mutex; u64 generation; u64 last_trans_committed; Loading Loading @@ -2129,6 +2123,11 @@ static inline bool btrfs_mixed_space_info(struct btrfs_space_info *space_info) (space_info->flags & BTRFS_BLOCK_GROUP_DATA)); } static inline gfp_t btrfs_alloc_write_mask(struct address_space *mapping) { return mapping_gfp_mask(mapping) & ~__GFP_FS; } /* extent-tree.c */ static inline u64 btrfs_calc_trans_metadata_size(struct btrfs_root *root, unsigned num_items) Loading @@ -2137,6 +2136,17 @@ static inline u64 btrfs_calc_trans_metadata_size(struct btrfs_root *root, 3 * num_items; } /* * Doing a truncate won't result in new nodes or leaves, just what we need for * COW. */ static inline u64 btrfs_calc_trunc_metadata_size(struct btrfs_root *root, unsigned num_items) { return (root->leafsize + root->nodesize * (BTRFS_MAX_LEVEL - 1)) * num_items; } void btrfs_put_block_group(struct btrfs_block_group_cache *cache); int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, struct btrfs_root *root, unsigned long count); Loading Loading @@ -2196,8 +2206,6 @@ int btrfs_free_extent(struct btrfs_trans_handle *trans, u64 root_objectid, u64 owner, u64 offset); int btrfs_free_reserved_extent(struct btrfs_root *root, u64 start, u64 len); int btrfs_update_reserved_bytes(struct btrfs_block_group_cache *cache, u64 num_bytes, int reserve, int sinfo); int btrfs_prepare_extent_commit(struct btrfs_trans_handle *trans, struct btrfs_root *root); int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, Loading Loading @@ -2240,25 +2248,20 @@ void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv); struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root); void btrfs_free_block_rsv(struct btrfs_root *root, struct btrfs_block_rsv *rsv); void btrfs_add_durable_block_rsv(struct btrfs_fs_info *fs_info, struct btrfs_block_rsv *rsv); int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, struct btrfs_root *root, int btrfs_block_rsv_add(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, u64 num_bytes); int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, struct btrfs_root *root, int btrfs_block_rsv_check(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, int min_factor); int btrfs_block_rsv_refill(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, u64 min_reserved, int min_factor); u64 min_reserved); int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv, struct btrfs_block_rsv *dst_rsv, u64 num_bytes); void btrfs_block_rsv_release(struct btrfs_root *root, struct btrfs_block_rsv *block_rsv, u64 num_bytes); int btrfs_truncate_reserve_metadata(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct btrfs_block_rsv *rsv); int btrfs_set_block_group_ro(struct btrfs_root *root, struct btrfs_block_group_cache *cache); int btrfs_set_block_group_rw(struct btrfs_root *root, Loading Loading @@ -2579,11 +2582,6 @@ int btrfs_update_inode(struct btrfs_trans_handle *trans, int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode); int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode); int btrfs_orphan_cleanup(struct btrfs_root *root); void btrfs_orphan_pre_snapshot(struct btrfs_trans_handle *trans, struct btrfs_pending_snapshot *pending, u64 *bytes_to_reserve); void btrfs_orphan_post_snapshot(struct btrfs_trans_handle *trans, struct btrfs_pending_snapshot *pending); void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans, struct btrfs_root *root); int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size); Loading
fs/btrfs/disk-io.c +4 −4 Original line number Diff line number Diff line Loading @@ -1648,6 +1648,7 @@ struct btrfs_root *open_ctree(struct super_block *sb, spin_lock_init(&fs_info->fs_roots_radix_lock); spin_lock_init(&fs_info->delayed_iput_lock); spin_lock_init(&fs_info->defrag_inodes_lock); spin_lock_init(&fs_info->free_chunk_lock); mutex_init(&fs_info->reloc_mutex); init_completion(&fs_info->kobj_unregister); Loading @@ -1665,8 +1666,6 @@ struct btrfs_root *open_ctree(struct super_block *sb, btrfs_init_block_rsv(&fs_info->trans_block_rsv); btrfs_init_block_rsv(&fs_info->chunk_block_rsv); btrfs_init_block_rsv(&fs_info->empty_block_rsv); INIT_LIST_HEAD(&fs_info->durable_block_rsv_list); mutex_init(&fs_info->durable_block_rsv_mutex); atomic_set(&fs_info->nr_async_submits, 0); atomic_set(&fs_info->async_delalloc_pages, 0); atomic_set(&fs_info->async_submit_draining, 0); Loading @@ -1677,6 +1676,7 @@ struct btrfs_root *open_ctree(struct super_block *sb, fs_info->metadata_ratio = 0; fs_info->defrag_inodes = RB_ROOT; fs_info->trans_no_join = 0; fs_info->free_chunk_space = 0; fs_info->thread_pool_size = min_t(unsigned long, num_online_cpus() + 2, 8); Loading Loading @@ -2545,8 +2545,6 @@ int close_ctree(struct btrfs_root *root) /* clear out the rbtree of defraggable inodes */ btrfs_run_defrag_inodes(root->fs_info); btrfs_put_block_group_cache(fs_info); /* * Here come 2 situations when btrfs is broken to flip readonly: * Loading @@ -2572,6 +2570,8 @@ int close_ctree(struct btrfs_root *root) printk(KERN_ERR "btrfs: commit super ret %d\n", ret); } btrfs_put_block_group_cache(fs_info); kthread_stop(root->fs_info->transaction_kthread); kthread_stop(root->fs_info->cleaner_kthread); Loading