Re: [patch 004/131] mm/gup: refactor and de-duplicate gup_fast() code

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

 



On Wed, Jun 3, 2020 at 3:56 PM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> From: John Hubbard <jhubbard@xxxxxxxxxx>
> Subject: mm/gup: refactor and de-duplicate gup_fast() code
>
> There were two nearly identical sets of code for gup_fast() style of
> walking the page tables with interrupts disabled.  This has lead to the
> usual maintenance problems that arise from having duplicated code.

Andrew, this is actually an example of why you absolutely should *not*
rebase your series in the middle of the development tree.

Now you've rebased it on top of my commit 17839856fd58 ("gup: document
and work around "COW can break either way" issue") and in the process
you broke the result completely for read-only pages.

Now it uses FOLL_WRITE (because that's what
internal_get_user_pages_fast() does), which will disallow read-only
pages (in order to handle them properly for COW in the slow path), and
then the fact that the slow-path is entirely disabled for this case
means that it doesn't work at all.

This "rebase onto whatever random base Linus has today" absolutely has
*got* to stop.

It's not ok for git trees, but it's not ok for these patch-queues
either. It means that all the testing your patch queue got in
linux-next is completely worthless, because what you send me is
something very different from what was tested. Exactly as with the git
trees, where I tell people constantly not to rebase their patches.

Give me a base that it has been tested on, and a series that has
actually been tested. Not this "rebased for your convenience" thing.

I'd _much_ rather get a merge conflict when your patch series changes
something that somebody else also changed.

Because then I know something clashed, and if I screw up the merge, I
only have myself to blame. If it's a very complex merge, I'll ask for
help.

That would be much better than getting a patch-bomb with 131 patches
that all _look_ sane and build cleanly, but can be randomly broken
because they got rebased hours before with no testing.

The "let me fix things up onto a daily snapshot" really is a
completely broken model. You are making it _harder_ for me, not
easier, because now I have to look for subtle issues in every single
commit rather than the big honking clue of "oh, I got a merge error,
I'll need to really look at it".

It so happened that with this one, I was very aware of the rebase,
because you rebased on a patch that I wrote so when I looked through
the patches I went "Hmm.."

What about all the other times when I wouldn't have noticed and been
so aware of what changed recently?

Again: merge conflicts are *much* better than silently rebasing and
hiding problems.

                   Linus




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux