login
Header Space

 
 

Re: Announce: Linux-next (Or Andrew's dream :-))

Previous thread: xfs [_fsr] probs in 2.6.24.0 by Linda Walsh on Monday, February 11, 2008 - 9:02 pm. (7 messages)

Next thread: Re: [PATCH] fib_trie: rcu_assign_pointer warning fix by David Miller on Monday, February 11, 2008 - 9:16 pm. (6 messages)
To: LKML <linux-kernel@...>
Cc: <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Monday, February 11, 2008 - 9:02 pm

Hi all,

Andrew was looking for someone to run a linux-next tree that just
contained the subsystem git and quilt trees for 2.6.x+1 and I (in a
moment of madness) volunteered.  So, this is to announce the creating of
such a tree (it doesn't exist yet) which will require some (hopefully)
small amount of work on the part of subsystem maintainers.

Those interested in discussion about this are encouraged to join the
linux-next@vger.kernel.org mailing list.

The first things I need from the subsystem maintainers (you know who you
are) are a contact address (a list address is fine) and at least one git
branch or quilt series that contains all the things you want to see go
into 2.6.26.  I am happy for there to be multiple branches/series (in
fact there probably will need to be in some cases where there are
dependencies on others work).

The tree will be based on the current version of Linus' tree but you may
specify an earlier branch point if you need to (hopefully not - but more
likely for quilters, I guess).

I hope to recreate this tree every day automatically.  In order to do
this, any tree that has a conflict will be dropped from that days tree.
The maintainer will be notified.  I hope to provide some clue as to what
the conflict is with, but probably not initially.

I will attempt to build the tree between each merge (and a failed build
will again cause the offending tree to be dropped).  These builds will be
necessarily restricted to probably one architecture/config.  I will build
the entire tree on as many architectures/configs as seem sensible and
the results of that will be available on a web page (to be announced).

This is just a start ...

Comments?

[I suspect that Andrew's dream includes actual time to dream :-)]
--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

For reference - Andrew's original musings:

I perceive the following problems with kernel development:

- The 80-odd subsystem trees are develop...
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Friday, February 15, 2008 - 8:09 pm

This restriction means that the value for the ARM architecture is soo
limited it's probably not worth the hastle participating in this project.

We already know that -mm picks up on very few ARM conflicts because
Andrew doesn't run through the entire set of configurations; unfortunately
ARM is one of those architectures which is very diverse [*], and because
of that, ideas like "allyconfig" are just completely irrelevant to it.

As mentioned elsewhere, what we need for ARM is to extend the kautobuild
infrastructure (see armlinux.simtec.co.uk) so that we can have more trees
at least compile tested regularly - but that requires the folk there to
have additional compute power (which isn't going to happen unless folk
stamp up some machines _or_ funding).

More trees maintained by more people isn't going to help the situation -
if anything, it's going to make it worse - more trees needing more testing
by the already extremely limited resources we have available.

For reference, even _I_ don't build test the entire set of ARM defconfigs -
at about 7 minutes a build, 75 defconfigs, that's about 9 hours...  I
just build those which are important to myself, hope that the others are
fine, and rely on kautobuild finding any breakage.



* - plus, its very difficult to get maintainers to see why having a
kernel able to support multiple platforms is a good thing.  For example,
I would absolutely love to be able to combine more platforms into one
build (such as Lubbock, Mainstone and probably other PXA stuff), but
there's issues with drivers preventing it.  (For those two I just
mentioned, it's the SMC91x net driver whose build needs to be configured
to the precise machine due to the multitude of different ways to connect
the hardware to the processor.)

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
--
To: Russell King <rmk+lkml@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Monday, February 25, 2008 - 11:54 pm

Hi Russell,

On Sat, 16 Feb 2008 00:09:43 +0000 Russell King &lt;rmk+lkml@arm.linux.org.uk&gt;=

I now have an arm cross compiler (gcc-4.0.2-glibc-2.3.6
arm-unknown-linux-gnu).  (See the results page at
http://kisskb.ellerman.id.au/kisskb/branch/9/ - I must get a better
name/place :-(.)  Is this sufficient to help you out?  What configs would
be useful to build (as Andrew said, they don't take very long each).

I really want as many subsystems as possible in the linux-next tree in an
attempt to avoid some of the merge/conflict problems we have had in the
past.  What can we do to help?

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
To: Russell King <rmk+lkml@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Friday, February 29, 2008 - 8:45 am

Hi Russell,

On Tue, 26 Feb 2008 14:54:18 +1100 Stephen Rothwell &lt;sfr@canb.auug.org.au&gt; =

OK, I tried this out:  I built all 75 arm defconfigs with the cross
compiler above (the resulting log file is at
http://ozlabs.org/~sfr/armall.log.bz2). 17 failed (I don't know why - I
didn't even really look).  If this is useful, I can get this added to our
infrastructure so that every linux-next kernel (and others as well, maybe)
will be built for all these.

Would that help, Russell?

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

P.S. From the timestamps in the log file you can see that this would take
around an hour each time.
To: Stephen Rothwell <sfr@...>
Cc: Russell King <rmk+lkml@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Friday, February 29, 2008 - 9:04 am

2 errors are expected (long-standing breakages).

14 failures are due to your ancient gcc 4.0.2 not supporting -mabi=aapcs-linux:
/scratch/sfr/next/scripts/mod/empty.c:1: error: invalid ABI option: -mabi=aapcs-linux

Another one is an internal error in your ancient compiler:
/scratch/sfr/next/arch/arm/common/it8152.c:148: internal compiler error: in trunc_int_for_mode, at explow.c:53

Can you build a cross compiler using gcc 4.2.3 from ftp.gnu.org instead?

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

--
To: Adrian Bunk <bunk@...>
Cc: Russell King <rmk+lkml@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Friday, February 29, 2008 - 7:45 pm

Hi Adrian,


OK, thanks for the feedback it is very helpful.  I will look at building
a newer compiler on Monday.

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
To: Russell King <rmk+lkml@...>
Cc: <sfr@...>, <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, <torvalds@...>
Date: Friday, February 15, 2008 - 8:21 pm

On Sat, 16 Feb 2008 00:09:43 +0000

you need a better box ;)

cerfcube_defconfig:				35 seconds
carmeva_defconfig:				23 seconds
spitz_defconfig (one of the biggest):		45 seconds

so would a stupid `for i in arch/arm/configs/*' script be sufficient
coverage?
--
To: Andrew Morton <akpm@...>
Cc: Russell King <rmk+lkml@...>, <sfr@...>, <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, <torvalds@...>
Date: Friday, February 15, 2008 - 8:42 pm

I do this wildcard together with 

	yes '' | make ARCH=arm ... oldconfig
	make

Sans toolchain issues, it's pretty good -- Russell larts you when some
defconfig becomes broken anyway. :^)
--
To: Alexey Dobriyan <adobriyan@...>
Cc: Andrew Morton <akpm@...>, <sfr@...>, <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, <torvalds@...>
Date: Saturday, February 16, 2008 - 4:08 am

Only when I check the kautobuild website - which I've not been doing
regularly since about end of November, and it only covers Linus'
kernels.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
--
To: Andrew Morton <akpm@...>
Cc: <sfr@...>, <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, <torvalds@...>
Date: Friday, February 15, 2008 - 8:31 pm

It will certainly improve the situation significantly, and pick up
on some non-ARM problems like (badge4_defconfig, since 2.6.24-git2):

drivers/built-in.o: In function `v4l2_i2c_attach':
drivers/media/video/v4l2-common.c:1035: undefined reference to `i2c_attach_client'

Currently, the defconfigs known to fail (long term) in Linus' tree
are clps7500_defconfig and trizeps4_defconfig - the former I'm tempted
to remove, the latter seems to be because the PCMCIA changes were lost
on the linux-pcmcia list and the trizeps folk have probably given up.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
--
To: Russell King <rmk+lkml@...>
Cc: <sfr@...>, <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, <torvalds@...>
Date: Friday, February 15, 2008 - 8:45 pm

On Sat, 16 Feb 2008 00:31:36 +0000


I appear to be pcmcia maintainer lately so if someone wants to dust them
off and send them over we can see what we can do?
--
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Thursday, February 14, 2008 - 7:22 pm

&gt; The first things I need from the subsystem maintainers (you know who you
 &gt; are) are a contact address (a list address is fine) and at least one git
 &gt; branch or quilt series that contains all the things you want to see go
 &gt; into 2.6.26.

For InfiniBand/RDMA, the tree is:

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-next

or via git protocol:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-next

contact addresses (me plus a mailing list):

    rolandd@cisco.com
    general@lists.openfabrics.org

thanks!
--
To: Roland Dreier <rdreier@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Thursday, February 14, 2008 - 9:02 pm

Hi Roland,


Added, thanks.

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
To: Stephen Rothwell <sfr@...>
Cc: Roland Dreier <rdreier@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Saturday, February 16, 2008 - 11:14 am

Do you have the tree and build logs available anywhere?  I'd like to
turn off the merge tree builds when this is able to replace it.

James


--
To: James Bottomley <James.Bottomley@...>
Cc: Roland Dreier <rdreier@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Sunday, February 17, 2008 - 1:25 am

Hi James,

On Sat, 16 Feb 2008 09:14:32 -0600 James Bottomley &lt;James.Bottomley@HansenP=

The tree is at
git://git.kernel.org/pub/scm/linux/kernel/git/sfr/linux-next.git - or did
you mean the logs of creating the tree.  I currently ceate the tree
fairly manually (as I slowly script what can be) and so have no logs of
that process.

The build logs that I have some control over are at
http://kisskb.ellerman.id.au/kisskb/branch/9/.  I am hoping to expand on
the arch/config combinations over time (I have to convince my tame cross
compiler builder :-)).  I also hope that others will build this tree for
themselves and publish the results.

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
To: Stephen Rothwell <sfr@...>
Cc: Roland Dreier <rdreier@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Sunday, February 17, 2008 - 10:27 am

Um, well, I've already pointed to tools that currently do this bit

Oh, OK ... by build I mean combine the trees and quilts into the actual
tree.  Compiling is nice, but it's the tree construction logs I want to
see to make sure there aren't any impending merge problems.  Most people
verify on a fairly constant basis that their own trees actually build.
The only problems we have are edge configurations (like arm and sparc,
which have SCSI drivers that don't build except on those architectures).

James


--
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Wednesday, February 13, 2008 - 1:03 am

After glancing at some of this thread its clear to me what Stephen's  
real goal is:

1. collect kernel trees (or underpants)
2. ?
3. profit

http://en.wikipedia.org/wiki/Underpants_Gnomes

- k
--
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 9:20 pm

Hi Stephen,

Please merge the quilt series/patchset from
  http://oss.oracle.com/~rdunlap/kernel-doc-patches/current/

I expect this to be fairly small and localized (very few conflicts).

Thanks,
---
~Randy
--
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 2:02 pm

As noted to Andrew in private email, I think this would be great.

akpm's -mm tree tends to have "x+1" changes in it, and also stuff that's 
not fully baked yet.  I would definitely like to see a tree composed of 
all the sub-trees where maintainers said "yes, I think this is baked and 
ready for x+1".  Then -mm and not-yet-baked git changes can layer on top 
of that.

As others are noting, API changes require some coordination amongst 
ourselves (should be our job, not yours, really) and historically we 
haven't been so good at that -- in part because IMO there hasn't been 
any system thing better than a heads-up email in place.

	Jeff


--
To: LKML <linux-kernel@...>
Cc: <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Monday, February 11, 2008 - 10:25 pm

On Tue, 12 Feb 2008 12:02:08 +1100 Stephen Rothwell &lt;sfr@canb.auug.org.au&gt; =

I neglected to mention the other brave souls who volunteered: Frank
Seidel, Ann Davis, and Harvey Harrison who I hope to be able to call on
in times of need.

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
To: Frank Seidel <fseidel@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>
Date: Wednesday, February 13, 2008 - 4:24 pm

Agreed.  I'm happy to do daily builds (I have x86 and ppc systems 
available), write scripts, etc.  In the meantime I'll just lurk and 
learn.  :-)

Thx,

Ann
--
To: Ann Davis <andavis@...>
Cc: Frank Seidel <fseidel@...>, Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>
Date: Wednesday, February 13, 2008 - 4:57 pm

Jan already does builds of all -git (and previously -bk) and -mm kernels 
for all architectures for some years, and it might be easier if he 

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

--
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>
Date: Wednesday, February 13, 2008 - 8:53 am

Hey, I'm sure you just temporarily forgot the discussion about that point
we had the days before ;-) Never mind, just kidding! :-)

Lets get serious. I cannot speak for Ann and Harvey, but I'm quite sure they
also really hope - at least i very strongly do - you not only call on us when
things become a burden, but let us help and assist you right from the start.

Thanks,
Frank

--
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>
Date: Monday, February 18, 2008 - 8:45 pm

I just started a little naive webpage where i collected some of the main
infos about linux-next on

http://linux.f-seidel.de/linux-next/

while the wiki there is probably the best filled part. Does this
make any sense to you to continue this? Or do you already have something
else in mind or even already prepared?

Thanks,
Frank
--
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 12:21 am

Note that a lot of these are already in the MAINTAINERS file.

But for the record, here's mine, in the order they need to be pulled
from.
  Driver core:
	kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/
  PCI:
	kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-02-pci/
  USB:
	kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-03-usb/

These are all quilt trees, with the series file in the directory for the
order of the patches, and a README saying what kernel version they have


This is going to get really interesting, especially when (not if) we do
more global api changes.  Look at the last round of kobject changes.
That touched a lot of different places, and other trees ended up not
building because of it, because I changed apis and they had added new
code based on the old apis.

I think the only way to fix this is not going to just "drop the tree"
like you are suggesting, but to let both people know (the person who
caused the change, and the person who's tree broke after the merge), and
then either add a "fixup patch" for the build like Andrew has been
doing, or disabling something from the build section.

As I know I'm going to be changing more driver core apis[1] this week,
I'm sure we will get a very good set of examples of this for you to see
in action :)

Good luck,

greg k-h

[1] Hopefully the "multiple drivers for a single device" feature people
have been asking for for years will be landing soon, of course the
number of odd places in the kernel that made the assumption that we
could only have one driver per device is causing lots of fun...
--
To: Greg KH <greg@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 6:34 pm

No, you can't have a tree like that. [森林 Not yours. 森林]


Let's maximize the profit, by keeping the largest number of trees which 
do not cause a conflict amongst each other.
--
To: Greg KH <greg@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 12:24 pm

Color me a bit skeptical...  we've always had this capability really: 
for multi-function devices, just register as many subsystems as you 
need.  If your device is a network _and_ SCSI device, you can do that 
with today's APIs.

I just went through a long thread (e1000/e1000e) explaining how much 
pain multiple drivers for the same PCI ID cause on the distro side of 
things...  its a mess.  In each case you must write special case code to 
resolve the ambiguity.  You never know which is the best driver to 
choose, or proper module load order -- which may vary depending on 
machine, not just static information captured from a kernel Makefile.

	Jeff


--
To: Jeff Garzik <jeff@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 12:42 pm

Oh, I agree, multiple drivers for the same functionality is not a nice
thing from a distro standpoint.

The work I'm doing here is for stupid PCI firmware engineers, who have
created devices that are different things, all bound up under the same
PCI device.  I'm thinking of watchdog timers and random number
generator and i2c controller on the same PCI device, or even the more
basic, frame buffer and DRM access to the same PCI video device.

The OLPC is a good example of hardware that needs this kind of
functionality.

In order to take advantage of the "multiple drivers per device" all
drivers need to guarantee to play nice with others, as they need to be
aware that other drivers will be sharing the hardware.

I'll write up more details later this week, if I get this stuff to work
properly :)

thanks,

greg k-h
--
To: Greg KH <greg@...>
Cc: Jeff Garzik <jeff@...>, Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 1:42 pm

&gt; The work I'm doing here is for stupid PCI firmware engineers, who have
 &gt; created devices that are different things, all bound up under the same
 &gt; PCI device.  I'm thinking of watchdog timers and random number
 &gt; generator and i2c controller on the same PCI device, or even the more
 &gt; basic, frame buffer and DRM access to the same PCI video device.
 &gt; 
 &gt; The OLPC is a good example of hardware that needs this kind of
 &gt; functionality.

Sounds interesting.  I've been meaning to work on this too for quite a
while, but I'm glad to see you beat me to it.

An example of an in-tree use case for this would be the mlx4 drivers--
you can look at drivers/net/mlx4/intf.c to see the simple stupid
solution I came up with to allow an IB and a NIC (not yet upstream)
driver to share the same PCI device.  A good test for your stuff would
be if it simplifies the code from the ad hoc solution I came up with.

 - R.
--
To: Roland Dreier <rdreier@...>
Cc: Greg KH <greg@...>, Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 2:08 pm

Our APIs are written such that the PCI device probe function is the 
starting point for registering IB and NIC.  No need for anything new.

	Jeff



--
To: Roland Dreier <rdreier@...>
Cc: Jeff Garzik <jeff@...>, Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 1:51 pm

Great, I'll look into that as I need a test case for this kind of stuff.

thanks,

greg k-h
--
To: Greg KH <greg@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 1:56 pm

Yes, that has a known solution:  have your driver register i2c, rng, 
watchdog, etc. functions.

Works just fine inside today's infrastructure, no changes needed.

	Jeff


--
To: Jeff Garzik <jeff@...>
Cc: Greg KH <greg@...>, Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>
Date: Tuesday, February 12, 2008 - 2:30 pm

Indeed. If you have a multi-function device that shows up as a single PCI 
function, just make it have its own "private bus", and make it show up as 
a "devices within a device".

Create the fake PCI subdevices that have no "real" counterpart, except as 
parts of the stupid device that couldn't be bothered to be seen as 
multiple _real_ functions.

That not only solves the infrastructure issues, it's actually The Truth 
with capital letters. It is, after all, how the device actually works 
internally.

			Linus
--
To: Linus Torvalds <torvalds@...>
Cc: Jeff Garzik <jeff@...>, Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>
Date: Tuesday, February 12, 2008 - 5:38 pm

That's how I first tried to do this (old pci-piggy patches in -mm were a
result of this...).

But, we have the issue of the foolish-in-retrospect sysdev devices.
They are an example of "multiple drivers per device" type thing.  To
clean them up properly, they need to move to the general 'struct device'
and if that is going to already support the one-to-many model, well,
then any PCI implementation of such an internal bus can also use the
same code.

This is a lot of handwaving right now, let me go work on some code and
see how it turns out.

Don't worry, I'll expect a lot of review cycles :)

thanks,

greg k-h
--
To: Jeff Garzik <jeff@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 2:10 pm

Except that the individual drivers are a lot of the time written by
different people, live in different portions of the tree, and are
combined into different combinations depending on the chipset.

For i2c devices, I see the scx200_acb, i2c-elektor, i2c-sis5595, and
i2c-sis630 drivers needing this.  The last one happens to share the pci
device with a video driver, that doesn't always need to be / want to be
loaded by users just so they can read the temperature of their
processors.

Oh, the EDAC code also needs this, and I know that no one wants to merge
that stuff into their individual drivers :)

Same goes for framebuffer vs. DRM.  Yeah, I know DRM ended up "winning"
here, but for some hardware setups, both are still valid, and it really
would be good for both drivers to be notified when the system is about
to go into suspend/resume and other stuff like that.

If the driver core can provide this in a simple manner, I think it is
worth it, especially as there are lots of hardware that seems to need
it.

thanks,

greg k-h
--
To: Greg KH <greg@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 2:31 pm

Yes -- the worst case is that people have to work together, and it 


So people have to work together...  darn :)  most drivers these days are 
organized nicely into nicely modular units anyway, making it easy to 
write a "shell" driver that simply registers each sub-driver, and helps 
arbitrate/provide resources to sub-units.

Consider, for example, a PCI driver that loads, and then fills in 
platform_data to provide a specific set of resources to a platform 
driver (a common idiom).  You would need to create parented struct 
devices (parent: pci_dev's device), but everything else should work within

I could even forsee a future where most drivers are written in a generic 
platform-driver style, and PCI|sbus|embedded-bus|blah are simply 
bus-specific shells that fill in platform data.

All of this should be nicely possible within the existing usage of 
struct device, platform drivers, generic DMA API, iomap, etc.

	Jeff



--
To: Greg KH <greg@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 1:07 am

Thank you.  Over time we might think about some sort of standard for


This is one of the things that linux-next will hopefully let us discover

Right. Except that "drop the tree" will probably only mean for a day or
so i.e. it will be taken out of the current round but will reappear

Excellent!

However, I am hoping that these global api changes may be introduced in a
more orderly fashion (some of which is happening already) by creating new
api's and then switching to them (and them maybe changing the names back
if necessary).  And, yes, I realise that this is sometimes not possible

Thanks, I will probably need it :-(

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
To: Stephen Rothwell <sfr@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 1:56 am

See my response to Arjan for how this is going to be very difficult to
do, unless you are willing to have patches in -next that are not in any

It's possible to do in a series of patches, yes, but again, development
happens in parallel, with no one stopping for anyone else, and that's
fine, we work it out when we send stuff to Linus at merge time.

So with that parallel development effort, there are problems like this,
I just want you to be aware of it and plan properly for it, as it is
going to happen...

thanks,

greg k-h
--
To: Greg KH <greg@...>
Cc: LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 2:10 am

Understood.

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
To: Greg KH <greg@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 12:31 am

On Mon, 11 Feb 2008 20:21:33 -0800

in my experience, the only chance you have is doing API changes as first in the set of changes,
and then hoping (making) all other trees use the new APIs. Any other order just turns into
an impossible mismash.

I can see the point of doing an LKML annouce of the new API after the series is done, so that 
all other maintainers have a chance to fix their trees (this of course is only for new occurances
of the old api showing up; the api change series should convert all existing users)

-- 
If you want to reach me at my work email, use arjan@linux.intel.com
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org
--
To: Arjan van de Ven <arjan@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 12:43 am

I agree, and that's what I do.

The problem is, the API change is still in my tree.  So, if for example,
the IB tree goes and adds some new functionality before my API changes
have landed, they need to use the "old" API in order for them to be able
to test and build things on their own.  Then, when the -next tree merges
everything together, the IB tree breaks the build, not my driver tree.

It's those "who goes first" type things that end up being the cause of a
lot of Andrew's headaches I think :)

thanks,

greg k-h
--
To: Greg KH <greg@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 1:17 am

On Mon, 11 Feb 2008 20:43:14 -0800

this is why you need specific trees for just the API change, and these
need to EXPLICITLY go first before EVERYTHING ELSE. Yes this needs a bit of coordination,
but it's the only way.
--
To: Arjan van de Ven <arjan@...>
Cc: Stephen Rothwell <sfr@...>, LKML <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, Andrew Morton <akpm@...>, Linus <torvalds@...>
Date: Tuesday, February 12, 2008 - 1:53 am

Even then, it will not work.

Again, Roland isn't going to want to always pull in my driver tree just
to build his tree.  He wants to, and needs to do his own development
effort.

But when we merge them together, there would be problems.

So, you can't just "drop" the IB tree.
You can't just "drip" my tree.

Where do you "fix this up" at?  I can send a patch for the IB tree, but
Roland can't put it in his tree, and I can't put it in my tree, it needs
to go _after_ both of our trees.

That's what -mm has been able to handle so far, and that needs to also
work with -next.

thanks,

greg k-h
--
To: <greg@...>
Cc: <arjan@...>, <sfr@...>, <linux-kernel@...>, <linux-next@...>, <linux-arch@...>, <akpm@...>, <torvalds@...>
Date: Tuesday, February 12, 2008 - 2:07 am

From: Greg KH &lt;greg@kroah.com&gt;

Totally agreed.

The fact is there are interdependencies, especially in driver
land and you have to either:

1) Make the driver folks work on top of Greg's tree.

2) Constantly rebase the -next tree to deal with the
   conflicts.

There are some other issues related to this which haven't
be touched upon greatly yet.

I rebase my tree all the time, at least once or twice per
week.  Why?

Firstly, to remove crap.  When you have "great idea A" then "oh shit A
won't work, revert that" there is zero sense in keeping both
changesets around.

Secondly, I want to fix up the rejects caused by conflicts with
upstream bug fixes and the like (and there are tons when the tree gets
to 1500 or so patches like the networking did).  I don't want git to
merge the thing by hand, I want to see what the conflict is and make
sure the "obvious" resolution is OK and the most efficient way I know
how to do that is to suck my tree apart as patches, then suck them
back into a fresh tree.

It therefore might make sense to the linux-next tree to do something
similar, constantly rebasing so that all the conflicts and reverted
shit changes can be sorted out without having an incredibly ugly
GIT history.
--
To: David Miller <davem@...>
Cc: <linux-kernel@...>, <akpm@...>, <torvalds@...>, John Linville <linville@...>
Date: Tuesday, February 12, 2008 - 12:31 pm

FWIW, that is annoying and painful for us downstream jobbers, since it 
isn't really how git was meant to be used.  You use it more like a patch 
queue, where commits are very fluid.

Unfortunately, if there is any synchronization lag between me and you -- 
not uncommon -- then I cannot commit changes on top of the changes just 
sent, in my own local tree.  Why?  Because you rebase so often, I cannot 
even locally commit dependent patches due to the end result merge 
getting so nasty.

I understand the desire to want a nice and clean history, but the 
frequency here really has a negative impact on your downstreams.

It also totally screws the commit statistics, wiping me and John and the 
committers we have preserved out, replacing everybody's committer with 
David Miller.

	Jeff


--
To: <jeff@...>
Cc: <linux-kernel@...>, <akpm@...>, <torvalds@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 7:51 pm

From: Jeff Garzik &lt;jeff@garzik.org&gt;

Ok, fair enough.  Any alternative suggestions on how to remove turds

I am well aware of this downside, sorry.
--
To: David Miller <davem@...>
Cc: <jeff@...>, <linux-kernel@...>, <akpm@...>, <torvalds@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 7:54 pm

Ahem...  Use of git-cherry-pick preserves commit information just fine.
--
To: Al Viro <viro@...>
Cc: David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <torvalds@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 8:16 pm

Not by default, at least (note they said "commiters", not "authors"):

bfields@pig:~/local/linux-2.6$ git cherry-pick v2.6.25-rc1
Finished one cherry-pick.
Created commit c445dc0: Linux 2.6.25-rc1
 1 files changed, 2 insertions(+), 2 deletions(-)
bfields@pig:~/local/linux-2.6$ git show --pretty=raw HEAD
commit c445dc0a8b11877d6038dc528254733348c9f110
tree 4018d5d93f857d946dd89acbb4e45c9da04eadaf
parent b6ce068a1285a24185b01be8a49021827516b3e1
author Linus Torvalds &lt;torvalds@woody.linux-foundation.org&gt; 1202681894 -0800
committer J. Bruce Fields &lt;bfields@citi.umich.edu&gt; 1202861481 -0500


--b.
--
To: J. Bruce Fields <bfields@...>
Cc: David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <torvalds@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 8:48 pm

That's why you give it -r.
--
To: Al Viro <viro@...>
Cc: J. Bruce Fields <bfields@...>, David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 8:59 pm

Hmm. "-r" is a no-op to git-cherry-pick.

And even if you thought it should preserve committer information, it 
really _really_ shouldn't. You're creating a new commit, you're the new 
committer. The old committer is meaningless. It doesn't matter at all if 
you try to keep the old committer information (which you can do by faking 
GIT_COMMITER_NAME¦EMAIL): you're simply just _lying_ at that point. The 
original committer has a different commit in his tree, and if you try to 
claim that your cherry-picked commit is his, you're only doing everybody a 
disservice.

If you meant using "-x", then yes, that retains the actual pointer to the 
original commit, but it's not the default, because it shouldn't be used 
unless you plan to carry both around on purpose (ie it's mainly useful for 
"maintain a stable branch that has commits cherry-picked from mainline" 
kinds of things).

			Linus
--
To: Linus Torvalds <torvalds@...>
Cc: J. Bruce Fields <bfields@...>, David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 9:25 pm

*duh*

OK, I plead the lack of caffeine when reading the original posting.
-r used to be "reproduce the changeset", but that _excludes_ committer.
Nevermind.

FWIW, I prefer to keep many branches and use suffix (.b&lt;number&gt;) to
distinguish between them.  And cherry-pick/reorder/split/collapse
as needed on transition to the next one.  At least that avoids
some problems for secondary trees - branches do not jump.

Since branches tend to be relatively small, they don't get conflicts
that open and I can postpone switch to new branch until it really
has to be done.

I don't know how to deal with tricky branch topology; every time when I
get to structure like &lt;branch X is on top of Y+Z&gt; it becomes very painful
to work on all these topics in parallel.  For trees maintained by different
people... &lt;shudder&gt;
--
To: Al Viro <viro@...>
Cc: David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <torvalds@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 8:56 pm

What version of git have you tried this with?  At least on my version,
-r is a no-op, and the results are the same; the author is still kept
and the maintainer changed.  I thought it had been that way for ages.

--b.

bfields@pig:~/local/linux-2.6$ git --version
git version 1.5.4.rc2.60.gb2e62
bfields@pig:~/local/linux-2.6$ git cherry-pick -r v2.6.25-rc1
Finished one cherry-pick.
Created commit 0277143: Linux 2.6.25-rc1
 1 files changed, 2 insertions(+), 2 deletions(-)
bfields@pig:~/local/linux-2.6$ git cat-file -p HEAD
tree 4018d5d93f857d946dd89acbb4e45c9da04eadaf
parent b6ce068a1285a24185b01be8a49021827516b3e1
author Linus Torvalds &lt;torvalds@woody.linux-foundation.org&gt; 1202681894 -0800
committer J. Bruce Fields &lt;bfields@citi.umich.edu&gt; 1202863894 -0500

Linux 2.6.25-rc1

.. and I really need to call it something else.  Maybe it is time to
bring back the weasel series, since weasels always make me feel good
about a kernel.

--
To: Jeff Garzik <jeff@...>
Cc: David Miller <davem@...>, <linux-kernel@...>, <akpm@...>, <torvalds@...>, John Linville <linville@...>
Date: Tuesday, February 12, 2008 - 3:37 pm

But the "author" is still preserved, right?  Why do you need the
committer name to be preserved?  (I'm not denying that there could be
reasons, I'm just curious what they are.)

--b.
--
To: J. Bruce Fields <bfields@...>
Cc: Jeff Garzik <jeff@...>, David Miller <davem@...>, <linux-kernel@...>, <akpm@...>, John Linville <linville@...>
Date: Tuesday, February 12, 2008 - 4:07 pm

It's not that the committer should be preserved, but:

 - the chain from author -&gt; committer should be visible in the 
   Signed-off-by: lines.

   If you rebase somebody elses tree, you screw that up. You need to add 
   your sign-off, since now *you* are the new committer, and *you* took
   somebody elses work!

 - you should respect the down-stream developer, and if that downstream 
   developer continues to work with his branch or works with other people, 
   you shouldn't screw that up!

Both of those basically say that you should never rebase somebody elses 
work. You can use rebase to rebase your *own* work on top of somebody 
elses thing (since that doesn't change the sign-off chain, and you still 
respect the downstream developers development model)!

But of course, if you rebase, you should respect the wishes of the 
up-stream developer too. I don't do rebases. So if you asked me to pull, 
the stuff I pulled can never be rebased, because it just *is* in my tree. 

Put another way: think of the absolute *chaos* that would happen if I were 
to rebase instead of just merging. Every time I pull from you I'd 
invalidate your whole tree, and you'd have to re-generate. It gets 
unmaintainable very quickly.

And that's actually ignoring a real issue: stability of commits. The nice 
thing about stable commit naming is that all bug-reports from other people 
that told where the bug happened are basically 100% trust-worthy and the 
code is 100% reproducible not just for you, but for everybody else. 

In other words, you really shouldn't rebase stuff that has been exposed 
anywhere outside of your own private tree. But *within* your own private 
tree, and within the commits that have never seen the light of day, 
rebasing is fine.

(And yes, there are exceptions. If it's a clear "throw-away tree" all the 
rules go out the window, of course, as long as everybody involved *knows* 
it's a throw-away tree, and know that if they pull it they have to 
synchronise 100% with...
To: <torvalds@...>
Cc: <bfields@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 8:50 pm

From: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;

I agree with this and that is exactly what I screwed up by mistake
this time around.

Normally when I rebase I walk through the patches that came from other
people's trees and add signoffs as needed.  I understand that this

I actually wouldn't mind that, the first thing I do when sending a
pull request is I stop putting things into my tree and as soon as the
recipient pulls I wipe out my tree and clone a fresh copy of their's.

It's really not a big deal.  The pusher can queue patches and other
stuff up in their mailbox or in a directory somewhere.  This quiet
period also allows those patches to have some time to be reviewed on
the lists before they actually end up in anyone's tree.

I really like that mode of operation.

--
To: David Miller <davem@...>
Cc: <bfields@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 9:31 pm

*YOU* like it, because it never generates any issues for *you*. You're the 
top in your heap, and the people above you don't do that insane thing, so 
you get all of the advantages, with none of the downsides. Of *course* you 
like it.

But as people have pointed out, it generates issues for the people under 
you! If I did it, the people who now complain about networking would 
not just be a couple, it would be everybody. Nobody could depend on 
anything out there, because everything would have to rebase.

You just don't see the problems, because the only person above you isn't 
crazy enough to do what you propose. You also don't do ten merges a day of 
subsystems you don't know.

The importance of merging (rather, not screwing up history in general) 
becomes really obvious when things go tits-up. Then they go tits-up 
*without* screwing up the history of the trees that were hopefully tested 
individually.

If you re-base things that others developed, you lose that. Imagine if I 
merged first Greg's tree (by rebasing), and then there was some 
fundamental thing that didn't cause a conflict, but just made something 
not work, when I rebased yours on top. Think about what happens.

Now I've merged (say) 1500 networking-related commits by rebasing, but 
because I rebased on top of Greg's tree that I had also rebased, 
absolutely *none* of that has been tested in any shape of form. I'd not 
use most of the things I pulled, so I'd never see it, I'd just push out 
something that was very different from *both* trees I pulled, with no way 
to really blame the merge - because it doesn't even exist.

So as a result, some *random* commit that was actually fine on its own has 
now become a bug, just because it was re-written. 

You don't see the problem here?

Yes, this is the *crap* you do all the time. You don't see the problems as 
much, because you merge probably only about a tenth of the volume I merge, 
and you can keep track of the subsystem more. But even though you don't...
To: Linus Torvalds <torvalds@...>
Cc: David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Wednesday, February 13, 2008 - 12:25 am

If there was a "fundamental thing that didn't cause a conflict", then
the two trees in question probably didn't touch the same code, so would
probably merge cleanly, for the same reason that one rebased onto the
other cleanly.  But depending on what the "fundamental thing" was, the
merge might still introduce the same bug, right?

--b.
--
To: J. Bruce Fields <bfields@...>
Cc: David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Wednesday, February 13, 2008 - 1:43 am

Absolutely. But if you do a true merge, the bug is clearly in the merge 
(automatedly clean or not), and the blame is there too. IOW, you can blame 
me for screwing up. Now, I will say "oh, me bad, I didn't realize how 
subtle the interaction was", so it's not like I'll be all that contrite, 
but at least it's obvious where the blame lies.

In contrast, when you rebase, the same problem happens, but now a totally 
innocent commit is blamed just because it happened to no longer work in 
the location it was not tested in. The person who wrote that commit, the 
people who tested it and said it works, all that work is now basically 
worthless: the testing was done with another version, the original patch 
is bad, and the history and _reason_ for it being bad has been lost.

And there's literally nothing left to indicate the fact that the patch and 
the testing _used_ to be perfectly valid.

That may not sound like such a big deal, but what does that make of code 
review and tested-by, and the like? It just makes a mockery of trying to 
do a good job testing any sub-trees, when you know that eventually it will 
all quite possibly be pointless, and the fact that maybe the networking 
tree was tested exhaustively is all totally moot, because in the end the 
stuff that hit the main tree is something else altogether?

I don't know about you, but I'd personally be really disappointed if it 
happened to me, and I felt that I did a really good job as a 
submaintainer. I'd also feel that the source control management sucked.

Contrast that to the case where somebody simply does a merge error. The 
original work doesn't lose it's validity - so the original maintainer 
hasn't lost anything. And quite frankly, even the person who "screwed up" 
with the merge hasn't really done anything bad: these things _do_ happen. 

So bugs happen; not big deal. But the fact that the bugs are correctly 
attributed - or rather, not mis-attributed to somebody blameless - that 
_is_ a big deal.

It's not ...
To: Linus Torvalds <torvalds@...>
Cc: David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Wednesday, February 13, 2008 - 1:52 pm

The obvious advantage to rebasing in this case is that the blame
(misplaced though it may be), at least lands on a commit that made a
single small change, likely making the problem easier to diagnose.

(As opposed to the case of a large merge, where all you may know is that
somewhere in the hundreds of commits done on one side of the merge there
was a conflict with the hundreds of commits on the other side.)

I think a lot of people would see rebasing as an acceptable tradeof that
gives up a small amount of accuracy in assigning blame to individuals in
return for a large increase in ability to debug problems.

I suppose one response to that would be that it's important that people
learn how to work in parallel, that failures to do so are particularly
important failures in the process, and that it's therefore worth it to
make sure that such failures are always identified specifically as merge
failures.

It would be nice if merges, like patches, were broken up into somewhat
smaller units.  There's an understandable desire to wait to the last
minute to actually commit to one's commits, but a willingness to do so a
little earlier might avoid some of the problems that seem to come from
having a lot of large merges happen all at once.

--b.
--
To: J. Bruce Fields <bfields@...>
Cc: Linus Torvalds <torvalds@...>, David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Thursday, February 14, 2008 - 1:35 pm

One idea that I thought about when debating rebase vs. merge (and it's
far far from being fully baked) is versioned commits.  The gist of it
is that patches are assigned an hash identifier like today when they are
first committed into the tree, but, and this is the main change: if they mutate,
e.g. by a rebase, or even git commit --amend, their version is bumped up rather
than SHA changed.

This way all versions of the commit would be accessible and addressable using
their respective SHA *and* version. I think that this can help keep
the tree's history in a more intuitive way (since the patches' base identifier
won't change, just its version number), and you get a bonus of seeing each
commit's history, who changed it, and what was the change.

Benny

--
To: Benny Halevy <bhalevy@...>
Cc: Linus Torvalds <torvalds@...>, David Miller <davem@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Friday, February 15, 2008 - 1:15 pm

The SHA1 is uniquely determined by the contents of that commit--commit
and author names and times, changelog message, snapshot of the tree at
that point, and parents--hence, recursively, by the entire history
leading up to that commit.

Naming objects by their content in that way has a lot of advantages--for
example, you can sign an entire history by signing just the SHA1 of the
commit at its tip.  So you can't break that link between the names of
commits and their contents without ending up with a fundamentally
different (and probably weaker, in some sense), system.

I suspect there's an unavoidable tradeoff--if you want to be able to
reliably and efficiently determine how two branches are related, then
you can't just throw away their (possibly messy) history.  The best you
may be able to do, if you want the advantages of both rebasing and
merging, is to maintain on your own the messier meta-history as a
superset of the simpler history that you end up submitting.

--
To: <torvalds@...>
Cc: <bfields@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 9:38 pm

From: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;

Good point.

Now how do I remove a bogus commit for a tree that I've already pushed
out and published for other people, without any record of it appearing
in the GIT tree any more?

How do I insert build fixes into existing changesets so that the tree
is more bisectable?

If Jeff merged in a tree that introduced a ton of whitespace errors
git is complaing about, is there a way I can fixup that changeset
in-place? (or should I tell Jeff to start adhering to GIT's whitespace
warning messages when he applies patches?)

Those are basically the major operations that would allow me to
seriously consider rebasing a ton less often.
--
To: David Miller <davem@...>
Cc: <bfields@...>, <jeff@...>, <linux-kernel@...>, <akpm@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 9:57 pm

So, the answer is: if others have actually pulled, it's simply not 
possible.

There simply is no way to undo history that isn't local any more. You just 
*have* to revert, or you need to find every single person that pulled 
(directly or indirectly) and ask them to undo all the work they did on top 
of your bad commit.

This is not git-related, btw. That's just how the world works. It's a bit 
like the internet - if you said something stupid on #IRC and it made it to 
bash.org, there's not a whole lot you can do to "undo" your stupidity. You 

Just delay pushing out. There really is _zero_ downside to this. None at 

Umm. Git doesn't complain about whitespace _except_ when applying patches. 
So if you don't rebase his work, you'll never see the whitespace warnings 
either!

Of course, we'd probably wish that Jeff cared about the whitespace 
warnings and pushed back on them, but the fact is, that warning isn't 
meant for you - because by the time you pull Jeff's tree, it's simply not 
your issue any more. Jeff already applied it. Either he's your trusted 
lietenant or he's not.

Quite frankly, to me it sounds like you're not ready to "let go" and trust 
the people under you. Trust me, it's worth it. It's why your life is easy: 
I have let go and I trust you. 

Also, I'd *much* rather have a few problems in the tree than have people 
screw up history in order to hide them. Sure, we want to keep things 
bisectable, but quite frankly, if you do a reasonable job and compile the 
kernel before you push out, it will be "mostly bisectable".

And yes, mistakes happen. Mistakes will *always* happen. It's ok. Relax. 

Let me put it another way: You're _both_ going to be *much* better off 
pushing back on Jeff, telling him that "I can't pull from you because your 
tree is ugly and doesn't compile", than taking his tree and rebasing it.

Remember? I used to do that all the time. I berated the ACPI people for 
creating monster trees that were horrible and contained fifteen merges ...
To: Linus Torvalds <torvalds@...>
Cc: David Miller <davem@...>, <bfields@...>, <jeff@...>, <linux-kernel@...>, <linville@...>
Date: Tuesday, February 12, 2008 - 10:06 pm

One of the things which linux-next could/should do is to help weed out the
silly build breaks, typos, missing documentation updates, missed checkpatch
opportunities, etc, etc. As well as real bugs.

So it would not be effici