btrfs-progs: Move chunk stripe size calculation function to volumes.h
Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f174972d2d
commit
2ac42077c2
22
check/main.c
22
check/main.c
|
@ -7638,28 +7638,6 @@ repair_abort:
|
|||
return err;
|
||||
}
|
||||
|
||||
u64 calc_stripe_length(u64 type, u64 length, int num_stripes)
|
||||
{
|
||||
u64 stripe_size;
|
||||
|
||||
if (type & BTRFS_BLOCK_GROUP_RAID0) {
|
||||
stripe_size = length;
|
||||
stripe_size /= num_stripes;
|
||||
} else if (type & BTRFS_BLOCK_GROUP_RAID10) {
|
||||
stripe_size = length * 2;
|
||||
stripe_size /= num_stripes;
|
||||
} else if (type & BTRFS_BLOCK_GROUP_RAID5) {
|
||||
stripe_size = length;
|
||||
stripe_size /= (num_stripes - 1);
|
||||
} else if (type & BTRFS_BLOCK_GROUP_RAID6) {
|
||||
stripe_size = length;
|
||||
stripe_size /= (num_stripes - 2);
|
||||
} else {
|
||||
stripe_size = length;
|
||||
}
|
||||
return stripe_size;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check the chunk with its block group/dev list ref:
|
||||
* Return 0 if all refs seems valid.
|
||||
|
|
22
volumes.h
22
volumes.h
|
@ -209,6 +209,28 @@ static inline int check_crossing_stripes(struct btrfs_fs_info *fs_info,
|
|||
(bg_offset + len - 1) / BTRFS_STRIPE_LEN);
|
||||
}
|
||||
|
||||
static inline u64 calc_stripe_length(u64 type, u64 length, int num_stripes)
|
||||
{
|
||||
u64 stripe_size;
|
||||
|
||||
if (type & BTRFS_BLOCK_GROUP_RAID0) {
|
||||
stripe_size = length;
|
||||
stripe_size /= num_stripes;
|
||||
} else if (type & BTRFS_BLOCK_GROUP_RAID10) {
|
||||
stripe_size = length * 2;
|
||||
stripe_size /= num_stripes;
|
||||
} else if (type & BTRFS_BLOCK_GROUP_RAID5) {
|
||||
stripe_size = length;
|
||||
stripe_size /= (num_stripes - 1);
|
||||
} else if (type & BTRFS_BLOCK_GROUP_RAID6) {
|
||||
stripe_size = length;
|
||||
stripe_size /= (num_stripes - 2);
|
||||
} else {
|
||||
stripe_size = length;
|
||||
}
|
||||
return stripe_size;
|
||||
}
|
||||
|
||||
int __btrfs_map_block(struct btrfs_fs_info *fs_info, int rw,
|
||||
u64 logical, u64 *length, u64 *type,
|
||||
struct btrfs_multi_bio **multi_ret, int mirror_num,
|
||||
|
|
Loading…
Reference in New Issue