lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110725110809.GO28787@elte.hu>
Date:	Mon, 25 Jul 2011 13:08:10 +0200
From:	Ingo Molnar <mingo@...e.hu>
To:	Christoph Hellwig <hch@...radead.org>
Cc:	Alexander Graf <agraf@...e.de>, Pekka Enberg <penberg@...nel.org>,
	Jan Kiszka <jan.kiszka@....de>, torvalds@...ux-foundation.org,
	avi@...hat.com, akpm@...ux-foundation.org,
	linux-kernel@...r.kernel.org, kvm@...r.kernel.org,
	gorcunov@...il.com, levinsasha928@...il.com, asias.hejun@...il.com,
	prasadjoshi124@...il.com
Subject: Re: [GIT PULL] Native Linux KVM tool for 3.1


* Christoph Hellwig <hch@...radead.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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ