[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [dm-devel] [PATCH 1/2] dm: update max_io_len to support a split_io that is not a power of 2
- From: Alasdair G Kergon <agk redhat com>
- To: Mike Snitzer <snitzer redhat com>, Jonathan Brassow <jbrassow redhat com>
- Cc: dm-devel redhat com, ejt redhat com, agk redhat com
- Subject: Re: [dm-devel] [PATCH 1/2] dm: update max_io_len to support a split_io that is not a power of 2
- Date: Mon, 30 Apr 2012 19:36:06 +0100
On Mon, Apr 30, 2012 at 01:24:00PM -0400, Mike Snitzer wrote:
> On Mon, Apr 30 2012 at 12:10pm -0400,
> Alasdair G Kergon <agk redhat com> wrote:
> > On Sat, Apr 28, 2012 at 12:44:28AM -0400, Mike Snitzer wrote:
> > > Required to support a target's use of a non power of 2 blocksize.
> > For which targets?
> striped and thin-pool for starters.
> > (merge_bvec supported?)
> Yes.
But there's overlap between merge_bvec and split_io.
- Why does stripe_merge() have:
if (!q->merge_bvec_fn)
return max_size;
when it's already done the division?
- Couldn't that be changed to avoid split_io causing a split?
(Except, as ever, across a table reload, which prevents us
removing it completely.)
> I cannot see why we'd need a split_io that is larger than 32 bits -- a
> 32bit split_io can support up to 2TB (2**32 * 512b sectors). Even
> on a LBD (raid) the stripe size (split_io) will not be so large.
But is that enforced in the raid code or not?
> But what I think what you're driving at is:
(I'm not convinced the proposed patch has been tested on 32-bit+LBD,
attempting to divide by a 64-bit number etc.)
> is there a benefit/reason to
> maintain the old code for some target that won't ever use non power of 2
> split_io (e.g. dm-raid at the moment)? I see no point for the duality
> in the code but I'm open to the idea if you have a specific reason in
> mind -- are you concerned about perf on more obscure/older hardware?
EITHER the 32 bit split_io *must* be enforced (after we've convinced
ourselves 64 bits will never be required);
OR we keep it 64-bit and add some compat code.
Alasdair
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]