Skip to content

Commit

Permalink
Btrfs: Tune stripe selection for raid1 and raid10
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Chris Mason committed Sep 25, 2008
1 parent a236aed commit 2fff734
Showing 1 changed file with 7 additions and 10 deletions.
17 changes: 7 additions & 10 deletions fs/btrfs/volumes.c
Original file line number Diff line number Diff line change
Expand Up @@ -1509,17 +1509,17 @@ static int __btrfs_map_block(struct btrfs_mapping_tree *map_tree, int rw,
if (map->type & BTRFS_BLOCK_GROUP_RAID1) {
if (unplug_page || (rw & (1 << BIO_RW)))
num_stripes = map->num_stripes;
else if (mirror_num) {
else if (mirror_num)
stripe_index = mirror_num - 1;
} else {
u64 orig_stripe_nr = stripe_nr;
stripe_index = do_div(orig_stripe_nr, num_stripes);
}
else
stripe_index = current->pid % map->num_stripes;

} else if (map->type & BTRFS_BLOCK_GROUP_DUP) {
if (rw & (1 << BIO_RW))
num_stripes = map->num_stripes;
else if (mirror_num)
stripe_index = mirror_num - 1;

} else if (map->type & BTRFS_BLOCK_GROUP_RAID10) {
int factor = map->num_stripes / map->sub_stripes;

Expand All @@ -1530,11 +1530,8 @@ static int __btrfs_map_block(struct btrfs_mapping_tree *map_tree, int rw,
num_stripes = map->sub_stripes;
else if (mirror_num)
stripe_index += mirror_num - 1;
else {
u64 orig_stripe_nr = stripe_nr;
stripe_index += do_div(orig_stripe_nr,
map->sub_stripes);
}
else
stripe_index += current->pid % map->sub_stripes;
} else {
/*
* after this do_div call, stripe_nr is the number of stripes
Expand Down

0 comments on commit 2fff734

Please sign in to comment.