jim owens
2009-Dec-17 19:04 UTC
PATCH] Do not limit RAID1 and DUP transfer length to one stripe
The 65k stripe length should be ignored as the stripes are physically contiguous on disk so transfers can span stripes. Signed-off-by: jim owens <jowens@hp.com> --- fs/btrfs/volumes.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 20cbd2e..4a0c8e5 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -2697,13 +2697,13 @@ again: /* stripe_offset is the offset of this block in its stripe*/ stripe_offset = offset - stripe_offset; - if (map->type & (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | - BTRFS_BLOCK_GROUP_RAID10 | - BTRFS_BLOCK_GROUP_DUP)) { + if (map->type & (BTRFS_BLOCK_GROUP_RAID0 | + BTRFS_BLOCK_GROUP_RAID10)) { /* we limit the length of each bio to what fits in a stripe */ *length = min_t(u64, em->len - offset, map->stripe_len - stripe_offset); } else { + /* RAID1, DUP, and simple disk stripes are all contiguous */ *length = em->len - offset; } -- 1.5.6.3 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Chris Mason
2009-Dec-18 14:23 UTC
Re: PATCH] Do not limit RAID1 and DUP transfer length to one stripe
On Thu, Dec 17, 2009 at 02:04:11PM -0500, jim owens wrote:> > The 65k stripe length should be ignored as the stripes are > physically contiguous on disk so transfers can span stripes. > > Signed-off-by: jim owens <jowens@hp.com> > --- > fs/btrfs/volumes.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index 20cbd2e..4a0c8e5 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -2697,13 +2697,13 @@ again: > /* stripe_offset is the offset of this block in its stripe*/ > stripe_offset = offset - stripe_offset; > > - if (map->type & (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | > - BTRFS_BLOCK_GROUP_RAID10 | > - BTRFS_BLOCK_GROUP_DUP)) { > + if (map->type & (BTRFS_BLOCK_GROUP_RAID0 | > + BTRFS_BLOCK_GROUP_RAID10)) { > /* we limit the length of each bio to what fits in a stripe */ > *length = min_t(u64, em->len - offset, > map->stripe_len - stripe_offset); > } else { > + /* RAID1, DUP, and simple disk stripes are all contiguous */ > *length = em->len - offset; > }We do need to make sure the bio doesn''t try to span a chunk. The mapping code can''t handle that. -chris -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
jim owens
2009-Dec-18 15:43 UTC
Re: PATCH] Do not limit RAID1 and DUP transfer length to one stripe
Chris Mason wrote:> On Thu, Dec 17, 2009 at 02:04:11PM -0500, jim owens wrote: >> The 65k stripe length should be ignored as the stripes are >> physically contiguous on disk so transfers can span stripes. >> >> + /* RAID1, DUP, and simple disk stripes are all contiguous */ >> *length = em->len - offset; >> } > > We do need to make sure the bio doesn''t try to span a chunk. The > mapping code can''t handle that.I don''t understand what code can''t handle it, the em is limited to a chunk so em->start to em->start + em->len will be reachable as a single physical disk region for raid1 and dup... right? -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html