diff options
Diffstat (limited to 'fs/btrfs/volumes.h')
| -rw-r--r-- | fs/btrfs/volumes.h | 21 | 
1 files changed, 21 insertions, 0 deletions
| diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h index 3a416b1bc24c..120f65e21eeb 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h @@ -296,6 +296,9 @@ enum btrfs_chunk_allocation_policy {  	BTRFS_CHUNK_ALLOC_ZONED,  }; +#define BTRFS_DEFAULT_RR_MIN_CONTIG_READ	(SZ_256K) +/* Keep in sync with raid_attr table, current maximum is RAID1C4. */ +#define BTRFS_RAID1_MAX_MIRRORS			(4)  /*   * Read policies for mirrored block group profiles, read picks the stripe based   * on these policies. @@ -303,6 +306,12 @@ enum btrfs_chunk_allocation_policy {  enum btrfs_read_policy {  	/* Use process PID to choose the stripe */  	BTRFS_READ_POLICY_PID, +#ifdef CONFIG_BTRFS_EXPERIMENTAL +	/* Balancing RAID1 reads across all striped devices (round-robin). */ +	BTRFS_READ_POLICY_RR, +	/* Read from a specific device. */ +	BTRFS_READ_POLICY_DEVID, +#endif  	BTRFS_NR_READ_POLICY,  }; @@ -417,6 +426,8 @@ struct btrfs_fs_devices {  	bool seeding;  	/* The mount needs to use a randomly generated fsid. */  	bool temp_fsid; +	/* Enable/disable the filesystem stats tracking. */ +	bool collect_fs_stats;  	struct btrfs_fs_info *fs_info;  	/* sysfs kobjects */ @@ -431,6 +442,15 @@ struct btrfs_fs_devices {  	enum btrfs_read_policy read_policy;  #ifdef CONFIG_BTRFS_EXPERIMENTAL +	/* +	 * Minimum contiguous reads before switching to next device, the unit +	 * is one block/sectorsize. +	 */ +	u32 rr_min_contig_read; + +	/* Device to be used for reading in case of RAID1. */ +	u64 read_devid; +  	/* Checksum mode - offload it or do it synchronously. */  	enum btrfs_offload_csum_mode offload_csum_mode;  #endif @@ -485,6 +505,7 @@ struct btrfs_io_context {  	struct bio *orig_bio;  	atomic_t error;  	u16 max_errors; +	bool use_rst;  	u64 logical;  	u64 size; | 
