On Mon, May 11, 2015 at 08:45:47AM +0800, Qu Wenruo wrote:
> In __btrfs_map_block(), stripe_index is always wrong if mirror_num is
> given.
> 
> For DUP/RAID1 case, if mirror_num is given, e.g. 1, it should return the
> second stripe.
> But codes consider the mirror_num is start from 1 and always minus 1,
> causing even mirror number is given as 1, __btrfs_map_block() will still
> map the first stripe not the second.
> 
> Signed-off-by: Qu Wenruo <quwen...@cn.fujitsu.com>
> ---
>  volumes.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/volumes.c b/volumes.c
> index 16dbf64..c66c02a 100644
> --- a/volumes.c
> +++ b/volumes.c
> @@ -1397,7 +1397,7 @@ again:
> -                     stripe_index = mirror_num - 1;
> +                     stripe_index = mirror_num;
> @@ -1416,7 +1416,7 @@ again:
> -                     stripe_index = mirror_num - 1;
> +                     stripe_index = mirror_num;

The original code is same in kernel, is the logic different in the
userspace code? If yes I don't see it.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to