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