From: Ingo Molnar <mingo@elte.hu>
To: Christoph Hellwig <hch@infradead.org>
Cc: Alexander Graf <agraf@suse.de>, Pekka Enberg <penberg@kernel.org>,
Jan Kiszka <jan.kiszka@web.de>,
torvalds@linux-foundation.org, avi@redhat.com,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org, gorcunov@gmail.com, levinsasha928@gmail.com,
asias.hejun@gmail.com, prasadjoshi124@gmail.com
Subject: Re: [GIT PULL] Native Linux KVM tool for 3.1
Date: Mon, 25 Jul 2011 13:08:10 +0200 [thread overview]
Message-ID: <20110725110809.GO28787@elte.hu> (raw)
In-Reply-To: <20110725103817.GA21683@infradead.org>
* Christoph Hellwig <hch@infradead.org> wrote:
> > > So, since we already have the lguest tool in the kernel tree,
> > > why cannot we have the much more capable tools/kvm/ in the
> > > tree?
> >
> > Lguest is in Documentation/ for a reason. It's not meant as a
> > user space tool that you take as-is and use. It's meant for
> > documenting how lguest works in general. I admit though, that
> > that's also the reason people don't use it :).
>
> I'd also say it's rather misplaced there, and at least in the
> storage area that I know most it didn't help it from totally
> misunderstanding kernel concepts and taking them into protocols
> (e.g. virtio barrier support). That for me is a reason why you
> don't want to couple thing too tightly, at least you'll have to
> document and/or explain the protocol to someone.
It's funny that you bring up ABIs and virtio, as in my experience
it's usually this pattern that creates bad ABIs in Linux:
1) there's an out of tree user-space project, written by a group of
developers, proposing some new feature for which they'd need
kernel help
2) they talk to another set of Linux kernel developers, who come up
with something that works - still out of tree
3) they then talk to upstream Linux and the whole review process
starts. The ABI changes in some minor ways but often survives.
4) nobody is risking any ABI changes because the distance from
upstream to the actual user-space project is 3 boundaries.
Whatever ad-hoc ABI was proposed initially is hammered through
if possible, unless it's 100% unworkable.
5) upstream often bends for pragmatic reasons, and it's at most
someone at the top of the maintenance hierarchy who says
'hell NO!' and forces an (expensive!) reiteration of all 5 steps.
I've also seen a couple of good ABIs, which had a very natural
development cycle:
1) developers working both upstream and in a user-space project
propose an ABI and quickly iterate through several versions. Both
the kernel side and the user-space side changes frequently and
iteratively to perfect the ABI and the whole process is highly
visible on lkml and gets review at every stage of this work.
Do you recognize what i'm trying to point out?
While moving a user-space tool project to tools/ certainly does not
*guarantee* good ABIs, it *does* guarantee friction-less iterations
of ABIs - which are much harder to achieve with out of tree projects.
We've done this numerous times for the perf ABI and while the ABI is
far from perfect it worked very well for us - far better than it
would have worked as a separate project.
In such an integrated tool/kernel tree bugs are also much easier to
debug: as we can cleanly bisect across interim versions of the ABI,
as the tools and the kernel side ABI is developed in lock-step. We do
not have to create cross-compatibility between every interim version
of the ABI and any future (or past) version of the tool ...
So yes, my first hand experience shows that you are 100% wrong:
- 'slow-play', out of tree, modularized, to-the-specification ABIs
tend to suck
- 'quickly iterated', in tree, unified, specified-on-lkml ABIs tend
to work out much better
There's exceptions, but that's the general trend.
Fact is that developing ABIs within an integrated project is
*amazingly* powerful. You should try it one day, instead of
criticizing it :-)
Thanks,
Ingo
next prev parent reply other threads:[~2011-07-25 11:09 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-24 20:37 [GIT PULL] Native Linux KVM tool for 3.1 Pekka Enberg
2011-07-24 23:12 ` Jan Kiszka
2011-07-25 7:37 ` Pekka Enberg
2011-07-25 7:53 ` Ingo Molnar
2011-07-25 8:14 ` Alexander Graf
2011-07-25 8:23 ` Pekka Enberg
2011-07-25 8:31 ` Alexander Graf
2011-07-25 8:35 ` Avi Kivity
2011-07-25 13:10 ` Joerg Roedel
2011-07-25 15:05 ` Avi Kivity
2011-07-25 8:37 ` Pekka Enberg
2011-07-25 8:44 ` Alexander Graf
2011-07-25 8:51 ` Pekka Enberg
2011-07-25 8:55 ` Alexander Graf
2011-07-25 9:16 ` Ingo Molnar
2011-07-25 9:14 ` Ingo Molnar
2011-07-25 8:30 ` Pekka Enberg
2011-07-25 8:37 ` Alexander Graf
2011-07-25 8:47 ` Pekka Enberg
2011-07-25 9:06 ` Alexander Graf
2011-07-25 12:45 ` Pekka Enberg
2011-07-25 12:47 ` Avi Kivity
2011-07-25 12:51 ` Sasha Levin
2011-07-25 12:54 ` Alexander Graf
2011-07-25 13:14 ` Sasha Levin
2011-07-25 12:51 ` Alexander Graf
2011-07-25 13:09 ` Pekka Enberg
2011-07-25 13:29 ` Alexander Graf
2011-07-25 9:26 ` Ingo Molnar
2011-07-25 9:42 ` Alexander Graf
2011-07-25 10:16 ` Ingo Molnar
2011-07-25 10:21 ` Alexander Graf
2011-07-25 10:35 ` Ingo Molnar
2011-07-25 10:47 ` Ingo Molnar
2011-07-25 12:24 ` Kevin Wolf
2011-07-25 12:41 ` Pekka Enberg
2011-07-25 12:46 ` Avi Kivity
2011-07-25 8:54 ` Ingo Molnar
2011-07-25 8:59 ` Ingo Molnar
2011-07-25 9:03 ` Alexander Graf
2011-07-25 9:41 ` Ingo Molnar
2011-07-25 9:46 ` Alexander Graf
2011-07-25 10:28 ` Ingo Molnar
2011-07-25 9:48 ` Avi Kivity
2011-07-25 10:03 ` Ingo Molnar
2011-07-25 10:17 ` Avi Kivity
2011-07-25 10:29 ` Ingo Molnar
2011-07-25 11:26 ` Olivier Galibert
2011-07-25 10:38 ` Christoph Hellwig
2011-07-25 11:08 ` Ingo Molnar [this message]
2011-07-25 11:24 ` Christoph Hellwig
2011-07-25 11:32 ` Ingo Molnar
2011-07-25 11:34 ` Olivier Galibert
2011-07-25 11:41 ` Christoph Hellwig
2011-07-25 12:09 ` Ingo Molnar
2011-07-25 12:36 ` Pekka Enberg
2011-07-25 19:21 ` david
2011-07-25 18:24 ` Jan Kiszka
2011-07-25 19:43 ` Pekka Enberg
2011-07-25 7:50 ` Sasha Levin
2011-07-25 8:34 ` Alexander Graf
2011-07-25 12:59 ` Paolo Bonzini
2011-07-25 13:16 ` Anthony Liguori
2011-07-25 1:19 ` Anthony Liguori
2011-07-25 7:27 ` Pekka Enberg
2011-07-25 7:36 ` Avi Kivity
2011-07-25 7:39 ` Pekka Enberg
2011-07-25 7:55 ` Sasha Levin
[not found] ` <CAFO3S428qqUAu19QjPxDDAVv+eJSX0MEfYp5y03znNi6XbEtTg@mail.gmail.com>
2011-07-25 8:11 ` Ingo Molnar
2011-07-25 8:17 ` Pekka Enberg
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=20110725110809.GO28787@elte.hu \
--to=mingo@elte.hu \
--cc=agraf@suse.de \
--cc=akpm@linux-foundation.org \
--cc=asias.hejun@gmail.com \
--cc=avi@redhat.com \
--cc=gorcunov@gmail.com \
--cc=hch@infradead.org \
--cc=jan.kiszka@web.de \
--cc=kvm@vger.kernel.org \
--cc=levinsasha928@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=penberg@kernel.org \
--cc=prasadjoshi124@gmail.com \
--cc=torvalds@linux-foundation.org \
/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