From: Kevin Wolf <kwolf@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: stefanha@redhat.com, berto@igalia.com, qemu-devel@nongnu.org,
qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 00/12] block: Move I/O throttling to BlockBackend
Date: Wed, 23 Mar 2016 11:02:22 +0100 [thread overview]
Message-ID: <20160323100144.GC4126@noname.redhat.com> (raw)
In-Reply-To: <56F261C9.2020709@redhat.com>
[ Cc: Stefan ]
Am 23.03.2016 um 10:28 hat Paolo Bonzini geschrieben:
> On 23/03/2016 10:03, Kevin Wolf wrote:
> > Am 22.03.2016 um 22:33 hat Paolo Bonzini geschrieben:
> >> On 22/03/2016 16:33, Kevin Wolf wrote:
> >>> This is another feature that was "logically" part of the BlockBackend, but
> >>> implemented as a BlockDriverState feature. It was always kept on top using
> >>> swap_feature_fields().
> >>>
> >>> This series moves it to be actually implemented in the BlockBackend, removing
> >>> another obstacle for removing bs->blk and allowing multiple BBs per BDS.
> >>>
> >>> Depends on 'block: Implement writethrough in BlockBackend'.
> >>
> >> This series would mess up my own I/O throttling cleanups that have been
> >> posted in February and have hardly seen a review for one month.
> >
> > Which cleanups? The ones that you hid in an I/O path locking series?
> > Whose v2 didn't even include qemu-block? I noticed only now that they
> > exist.
> >
> > I can take a look, but nobody told me (or Berto, for that matter) that
> > this is a series we should have a look at. block/io.c is maintained by
> > Stefan, throttling isn't.
>
> If you actually look at the series, all of the changes are in block/io.c
> except for:
>
> - moving some code from block/io.c to block/throttle-groups.c, with zero
> semantic change.
>
> - adding exactly three lines of code to block/throttle-groups.c:
>
> if (bs->io_limits_disabled) {
> return false;
> }
>
> I think it's okay to assume that the block/io.c maintainer can make a
> fair judgment on these changes.
I'm less worried about the actual code, but about the architectural
part. This example shows that dividing maintainership at source file
boundaries doesn't always make sense.
> On the other hand, this series touches block/io.c much more heavily,
> adding code to a function that we want to remove altogether
> (bdrv_flush_io_queue). Yet, Stefan wasn't even CCed. If you intend to
> override the block/io.c maintainer, you are _expected_ to take a look at
> pending block/io.c patches and see how they interact with yours.
>
> Sure, v2 of my series was not CCed to qemu-block, but v1 was. Even just
> reading the 00/16 part of the thread would have provided the status of
> the series without any doubt. Again, I'd only expect you to take this
> additional burden because you didn't CC the submaintainer on this
> series. The alternative is to do that, explain him why you are sending
> such an intrusive fix close to soft freeze, and letting him make a decision.
Yes, both of us messed up their CC list, thanks for pointing it out.
Adding Stefan to the thread now.
> >> I expect the rules for soft freeze to apply to maintainers as well.
> >> These patches and the removal of bs->blk are about one month late and
> >> shouldn't be included in 2.6.
> >
> > This is not a feature. It's a series that brings actual behaviour in
> > line with the promised API, in other words a bug fix.
> >
> > Admittedly, it's a very heavy fix, but if we decide that we can't do a
> > massive bug fix that late in the cycle (I admit that it got a bit late,
> > even though the initial patches were on time before the soft freeze), we
> > need to carefully check which other features we must revert in order to
> > keep the API changes in 2.7 minimal. At least, I think, we'd have to
> > disallow referencing backing files by node-name in 2.6.
>
> Let me rephrase that. There is a feature, "referencing backing files by
> node-name", which should have had patches on the list by the soft freeze
> date; you committed the API without having everything else posted or
> even written, and now everything else qualifies as bug fix.
More like the feature was merged without noticing that this has even
more implications that we saw. This was at the very beginning of the 2.6
cycle, posted during the freeze of 2.5 (don't remember whether soft or
hard). So at least we're lucky enough that we can still revert it if we
need. It had been almost a year before we decided that it can finally go
in, so I don't think I have to take blame for rushing things there.
The problem is that it allows you to create configurations where it
becomes visible that things are implemented different from the design
that we envision and for which the QMP APIs are tailored (essentially
implemented in BDS + bdrv_swap() instead of implemented in BB).
Features that are implemented in the BB can only ever be enabled on the
top level. As long as they are implemented in the BDS, however, you can
also enable them in intermediate layers, which will break as soon as we
implement the real thing. So in order to avoid API breakage we either
need to restrict user control over intermediate layers or we do the real
thing now.
User control over backing files is new in 2.6, so we can revert that if
we have to, but doing the real thing might be preferable.
User control over bs->file is older, though, and in principle affected
by the same problem. Of course, it's less likely that people actually
use the problematic features there and removing them now is already an
API change, so it's a less good reason for fixing things in 2.6 rathe
than 2.7.
> Since the damage is done, I guess you actually *should* go on and commit
> these patches during hard freeze. But please give priority to patches
> that were sent according to the rules.
I'll have a look at your series and check how serious the conflicts are.
At the first sight I'm afraid it's not obvious and we need to discuss in
more detail how we can achieve both goals before any of the series can
be merged.
Kevin
next prev parent reply other threads:[~2016-03-23 10:02 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-22 15:33 [Qemu-devel] [PATCH 00/12] block: Move I/O throttling to BlockBackend Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 01/12] block: Don't disable I/O throttling on sync requests Kevin Wolf
2016-03-22 21:40 ` Eric Blake
2016-03-22 15:33 ` [Qemu-devel] [PATCH 02/12] block: Make sure throttled BDSes always have a BB Kevin Wolf
2016-03-22 21:46 ` Eric Blake
2016-03-22 15:33 ` [Qemu-devel] [PATCH 03/12] block: Introduce BlockBackendPublic Kevin Wolf
2016-03-22 21:53 ` Eric Blake
2016-03-23 9:09 ` Kevin Wolf
2016-03-23 21:35 ` Eric Blake
2016-03-24 8:06 ` Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 04/12] block: throttle-groups: Use BlockBackend pointers internally Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 05/12] block: Convert throttle_group_get_name() to BlockBackend Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 06/12] block: Move throttling fields from BDS to BB Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 07/12] block: Move actual I/O throttling to BlockBackend Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 08/12] block: Move I/O throttling configuration functions " Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 09/12] block: Introduce BdrvChild.opaque Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 10/12] block: Drain throttling queue with BdrvChild callback Kevin Wolf
2016-03-23 21:29 ` Paolo Bonzini
2016-03-24 8:25 ` Kevin Wolf
2016-03-24 9:32 ` Paolo Bonzini
2016-03-22 15:33 ` [Qemu-devel] [PATCH 11/12] block: Decouple throttling from BlockDriverState Kevin Wolf
2016-03-22 15:33 ` [Qemu-devel] [PATCH 12/12] block: Don't check throttled reqs in bdrv_requests_pending() Kevin Wolf
2016-03-22 21:33 ` [Qemu-devel] [PATCH 00/12] block: Move I/O throttling to BlockBackend Paolo Bonzini
2016-03-23 9:03 ` Kevin Wolf
2016-03-23 9:28 ` Paolo Bonzini
2016-03-23 10:02 ` Kevin Wolf [this message]
2016-03-23 10:05 ` Alberto Garcia
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=20160323100144.GC4126@noname.redhat.com \
--to=kwolf@redhat.com \
--cc=berto@igalia.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@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).