From: Mike Snitzer <snitzer@redhat.com>
To: Ming Lei <ming.lei@redhat.com>
Cc: axboe@kernel.dk, martin.petersen@oracle.com, jdorminy@redhat.com,
bjohnsto@redhat.com, linux-block@vger.kernel.org,
dm-devel@redhat.com
Subject: Re: [dm-devel] [PATCH v2] block: use gcd() to fix chunk_sectors limit stacking
Date: Thu, 3 Dec 2020 09:33:59 -0500 [thread overview]
Message-ID: <20201203143359.GA29261@redhat.com> (raw)
In-Reply-To: <20201203032608.GD540033@T590>
On Wed, Dec 02 2020 at 10:26pm -0500,
Ming Lei <ming.lei@redhat.com> wrote:
> On Tue, Dec 01, 2020 at 11:07:09AM -0500, Mike Snitzer wrote:
> > commit 22ada802ede8 ("block: use lcm_not_zero() when stacking
> > chunk_sectors") broke chunk_sectors limit stacking. chunk_sectors must
> > reflect the most limited of all devices in the IO stack.
> >
> > Otherwise malformed IO may result. E.g.: prior to this fix,
> > ->chunk_sectors = lcm_not_zero(8, 128) would result in
> > blk_max_size_offset() splitting IO at 128 sectors rather than the
> > required more restrictive 8 sectors.
>
> What is the user-visible result of splitting IO at 128 sectors?
The VDO dm target fails because it requires IO it receives to be split
as it advertised (8 sectors).
> I understand it isn't related with correctness, because the underlying
> queue can split by its own chunk_sectors limit further. So is the issue
> too many further-splitting on queue with chunk_sectors 8? then CPU
> utilization is increased? Or other issue?
No, this is all about correctness.
Seems you're confining the definition of the possible stacking so that
the top-level device isn't allowed to have its own hard requirements on
IO sizes it sends to its internal implementation. Just because the
underlying device can split further doesn't mean that the top-level
virtual driver can service larger IO sizes (not if the chunk_sectors
stacking throws away the hint the virtual driver provided because it
used lcm_not_zero).
> > And since commit 07d098e6bbad ("block: allow 'chunk_sectors' to be
> > non-power-of-2") care must be taken to properly stack chunk_sectors to
> > be compatible with the possibility that a non-power-of-2 chunk_sectors
> > may be stacked. This is why gcd() is used instead of reverting back
> > to using min_not_zero().
>
> I guess gcd() won't be better because gcd(a,b) is <= max(a, b), so bio
> size is decreased much with gcd(a, b), and IO performance should be affected.
> Maybe worse than min_not_zero(a, b) which is often > gcd(a, b).
Doesn't matter, it is about correctness.
We cannot stack up a chunk_sectors that violates requirements of a given
layer.
Mike
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
next prev parent reply other threads:[~2020-12-03 14:51 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-30 17:18 [dm-devel] [PATCH] block: revert to using min_not_zero() when stacking chunk_sectors Mike Snitzer
2020-11-30 20:51 ` John Dorminy
2020-11-30 23:24 ` [dm-devel] " Mike Snitzer
2020-12-01 0:21 ` John Dorminy
2020-12-01 2:12 ` Mike Snitzer
2020-12-01 16:07 ` [dm-devel] [PATCH v2] block: use gcd() to fix chunk_sectors limit stacking Mike Snitzer
2020-12-01 17:43 ` John Dorminy
2020-12-01 17:53 ` Jens Axboe
2020-12-01 18:02 ` Martin K. Petersen
2020-12-02 3:38 ` [dm-devel] [PATCH] dm: " Jeffle Xu
2020-12-02 3:38 ` Jeffle Xu
2020-12-02 3:57 ` JeffleXu
2020-12-02 5:03 ` [dm-devel] " Mike Snitzer
2020-12-02 5:14 ` Mike Snitzer
2020-12-02 6:31 ` JeffleXu
2020-12-02 6:35 ` JeffleXu
2020-12-02 6:28 ` JeffleXu
2020-12-02 7:10 ` JeffleXu
2020-12-02 15:11 ` Mike Snitzer
2020-12-03 1:48 ` JeffleXu
2020-12-03 3:26 ` [dm-devel] [PATCH v2] block: " Ming Lei
2020-12-03 14:33 ` Mike Snitzer [this message]
2020-12-03 16:27 ` Keith Busch
2020-12-03 17:56 ` Mike Snitzer
2020-12-04 1:45 ` Ming Lei
2020-12-04 2:11 ` Mike Snitzer
2020-12-04 6:22 ` Damien Le Moal
2020-12-04 1:12 ` Ming Lei
2020-12-04 2:03 ` Mike Snitzer
2020-12-04 3:59 ` Ming Lei
2020-12-04 16:47 ` Mike Snitzer
2020-12-04 17:32 ` [dm-devel] [RFC PATCH] dm: fix IO splitting [was: Re: [PATCH v2] block: use gcd() to fix chunk_sectors limit stacking] Mike Snitzer
2020-12-04 17:49 ` Mike Snitzer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201203143359.GA29261@redhat.com \
--to=snitzer@redhat.com \
--cc=axboe@kernel.dk \
--cc=bjohnsto@redhat.com \
--cc=dm-devel@redhat.com \
--cc=jdorminy@redhat.com \
--cc=linux-block@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=ming.lei@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).