Btrfs: introduce per-subvolume ordered extent list
The reason we introduce per-subvolume ordered extent list is the same as the per-subvolume delalloc inode list. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
This commit is contained in:
@@ -1437,17 +1437,18 @@ struct btrfs_fs_info {
|
||||
atomic_t open_ioctl_trans;
|
||||
|
||||
/*
|
||||
* this is used by the balancing code to wait for all the pending
|
||||
* ordered extents
|
||||
* this is used to protect the following list -- ordered_roots.
|
||||
*/
|
||||
spinlock_t ordered_extent_lock;
|
||||
spinlock_t ordered_root_lock;
|
||||
|
||||
/*
|
||||
* all of the data=ordered extents pending writeback
|
||||
* all fs/file tree roots in which there are data=ordered extents
|
||||
* pending writeback are added into this list.
|
||||
*
|
||||
* these can span multiple transactions and basically include
|
||||
* every dirty data page that isn't from nodatacow
|
||||
*/
|
||||
struct list_head ordered_extents;
|
||||
struct list_head ordered_roots;
|
||||
|
||||
spinlock_t delalloc_root_lock;
|
||||
/* all fs/file tree roots that have delalloc inodes. */
|
||||
@@ -1753,6 +1754,20 @@ struct btrfs_root {
|
||||
struct list_head delalloc_inodes;
|
||||
struct list_head delalloc_root;
|
||||
u64 nr_delalloc_inodes;
|
||||
/*
|
||||
* this is used by the balancing code to wait for all the pending
|
||||
* ordered extents
|
||||
*/
|
||||
spinlock_t ordered_extent_lock;
|
||||
|
||||
/*
|
||||
* all of the data=ordered extents pending writeback
|
||||
* these can span multiple transactions and basically include
|
||||
* every dirty data page that isn't from nodatacow
|
||||
*/
|
||||
struct list_head ordered_extents;
|
||||
struct list_head ordered_root;
|
||||
u64 nr_ordered_extents;
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_defrag_range_args {
|
||||
|
Reference in New Issue
Block a user