Re: [PULL REQUEST] Please pull rdma.git

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jan 24, 2016 at 8:19 AM, Or Gerlitz <ogerlitz@xxxxxxxxxxxx> wrote:
>
> It's possible that for a given merge cycle, we have networking changes that
> require core changes and RDMA changes which require different core changes.

Yes.

However, you should synchronize it some way at least _internally_.
Maybe by using a git tree inside Mellanox, so that the pain of your
two development groups doesn't then hit people who don't know the
hardware and can't test.

> So I'd like to clarify with you a point re linux-next.
>
> From my experience working under few maintainers (Dave, Roland, Doug) over
> the years...what the maintainer has to do is (A) register their for-next
> tree/branch to linux-next merge tests and (B) respond to the linux-next
> maintainer when he identifies conflicts and resolves them.

Yes. And as far as I can tell, this conflict _was_ in linux-next.

However, the fact that it got resolved in linux-next is purely
informational. It doesn't "fix" the conflict - it just means that both
sides should have gotten informed about it. That doesn't mean that the
conflict goes away or becomes better.

So what linux-next conflicts should have resulted in was that people
were aware of it before it even hit my tree, and there might be
mitigating efforts taken (where "mitigation" might be just informing
me about it in the pull request, which didn't even happen).

And Stephen is actually really really good at handling merge conflicts
these days (he's probably the _one_ person who does more merges than I
do), but at the same time, he tends to have a "merge and forget" model
- not only does he use "git rerere" so that he never has to worry
about the merge later, he doesn't tend to care very much about the end
result and think about it.

For example, I doubt Stephen spent a lot of time worrying about the
byte offsets in that header file - he cares about getting things to
compile. Or did he notice and notify people that the offsets were
crap?

In contrast, when I do a merge, I end up trying to see what the
background for the conflict is. And that's not just about the code,
it's explicitly about things like "why did these two trees conflict in
the first place".

Because _I_ care about not just trying to get things to compile, and
not just about getting the right merge result, but in fact things like
"is there some problem in code maintenance that causes this conflict -
should we maybe split development some way?" is very much a primary
concern for me.

In 99% of all conflicts, the answer is "it's a trivial conflict, both
sides did the rigth thing, I'm just fixing things up".

But sometimes the conflicts are about fundamental problems. The ARM
SoC updates were one such area a few years ago, where the insane
devicetree people continually stepped on each others toes and it got
annoying conflicts many times.

I told the ARM people that their model wasn't working, and the ARM
situation has improved tremendously.

Now I'm telling you guys. There's something rotten in the state of
Mellanox. It needs to be fixed.

> A2nd question here, AFAIK, git rerere assumes some ordering... is it okay
> we'll assume that you will always pull the networking changes and only later
> the rdma changes?

No.

Also note that I do not use "rerere" myself. I do not import the state
from linux-next, although I _use_ linux-next to see what I still have
to merge, and sometimes to look at whether things had been resolved
there (which is why I know at least _some_ of the Mellanox issues
already showed up in linux-next).

So linux-next merging is very different. The merge I do is independent
of linux-next, and it's often done in a different order.

> And this brings me to the last point, merge tests should be done before
> sending you pull requests. I know Dave is doing that... we will be
> discussing this with Doug to agree on the details.

The thing is, merge tests are all god, and I appreciate them as a
heads-up. Some groups do pre-merges to verify that nothing bad
happened, and also to give pointers about what is going on when they
do happen. The ARM team does that, for example, probable exactly
because of the historical issues they used to have.

But at the same time I do *not* appreciate submaintainer pre-merging
the end result in order to hide problems in the development model. I
don't want to see "I did a merge for you because it was nasty". I'm
not trying to push the pain of merging onto Doug, just so that I don't
need to know about it. Because I _do_ need to know about it, because
problems during the merge are important information for me. They are a
sign that something is not right, and two groups are stomping on each
others feet.

Problematic merges often cause problems later. Sometimes they cause
problems for immediate reasons - the merge resulted in bugs, and it's
*really* nasty when mis-merges cause issues, because there is often
not a very legible patch to blame. But at other times, the merge is
fine, but it hides the conflict of people working on the same code,
which will just cause problems later when it happens again.

So no, "merge things right" is not the answer. Well, not the whole
answer. I really want your two groups to be aware of each other. Talk
before-hand. When you work on the same thing, TALK TO EACH OTHER - so
that you share the same end result, so that it gets testing in both
your groups.

              Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux