Subject: Re: linux-next: manual merge of the block tree with the fscrypt tree

From: Ming Lei <[email-masked]>
Date: Fri, 18 Jan 2019 10:45:24 +0800

On Wed, Jan 16, 2019 at 07:27:25AM -0700, Jens Axboe wrote:
> On 1/16/19 12:39 AM, Ming Lei wrote:
> > On Tue, Jan 15, 2019 at 08:17:36PM -0700, Jens Axboe wrote:
> >> On 1/15/19 8:13 PM, Ming Lei wrote:
> >>> On Tue, Jan 15, 2019 at 07:55:39PM -0700, Jens Axboe wrote:
> >>>> On 1/15/19 7:25 PM, Stephen Rothwell wrote:
> >>>>> Hi all,
> >>>>>
> >>>>> Today's linux-next merge of the block tree got a conflict in:
> >>>>>
> >>>>>   fs/ext4/readpage.c
> >>>>>
> >>>>> between commit:
> >>>>>
> >>>>>   acc9eb0a6073 ("ext4: add fs-verity read support")
> >>>>>
> >>>>> from the fscrypt tree and commit:
> >>>>>
> >>>>>   eb754eb2a953 ("block: allow bio_for_each_segment_all() to iterate over multi-page bvec")
> >>>>>
> >>>>> from the block tree.
> >>>>>
> >>>>> I fixed it up (see below - the former moved the code modified by the
> >>>>> latter) and can carry the fix as necessary. This is now fixed as far as
> >>>>> linux-next is concerned, but any non trivial conflicts should be mentioned
> >>>>> to your upstream maintainer when your tree is submitted for merging.
> >>>>> You may also want to consider cooperating with the maintainer of the
> >>>>> conflicting tree to minimise any particularly complex conflicts.
> >>>>
> >>>> Ming, I'm pulling this, I thought we agreed none of these bullshit
> >>>> renames? The fact that a patch looks like this:
> >>>>
> >>>> -               for_each_bvec(bv, (it)->bvecs, __cur_iter, __cur_iter)        \
> >>>> +               for_each_segment(bv, (it)->bvecs, __cur_iter, __cur_iter)     \
> >>>>
> >>>> is SUPER annoying and does NOTHING but to cause merge conflicts.
> >>>>
> >>>> Resend it without that.
> >>>
> >>> We need to differentiate 'segment' with 'bvec' in bvec helpers, which is
> >>> usually seldom used by drivers. For example, only two in-tree users(ceph, iov_iter).
> >>> That is why I rename it, and seems Christoph prefers to do it too.
> >>
> >> If you want to do a rename, then we do it after. I don't want to deal with
> >> weeks and weeks of fallout from this. Write a rename script that we can
> >> then run at the end of the next merge window. You're going to be playing
> >> catch-up until that happens if we go the current route, and honestly
> >> I'm not at all interested in the fallout from that.
> >>
> >> I know exactly what will happen until 5.1-rc opens, and what my tree will
> >> look like from having to deal with this. And then I know exactly what Linus
> >> is going to say, and I can't even argue against it, since he'll be totally
> >> right.
> >>
> >> Hence it's not going to happen this way.
> > 
> > I can remove the renaming in patch 'block: rename bvec helpers', but
> > change on bio_for_each_segment_all() is inevitable, and it is still an
> > API change, so merge conflict can't avoid too.
> 
> That's not what I'm complaining about, API changes are inevitable for
> something like this. What I'm complaining about is the very example
> I posted above, and which has already caused issues. That's a frivolous
> name change. Don't do it.

Hi Jens,

I may avoid the rename for avoiding merge conflict.

However, given we have been back and forth for this naming thing several
times, I'd rather explain the story one more time:

In V13's patch4, we rename:

    for_each_bvec
    bvec_iter_bvec
    bvec_iter_len
    bvec_iter_page
    bvec_iter_offset

into:
    for_each_segment
    segment_iter_bvec
    segment_iter_len
    segment_iter_page
    segment_iter_offset

so that these helpers named with 'segment' only deal with single-page
bvec, or called segment. We re-introduce helpers named with 'bvec'
for multi-page bvec, as suggested by Christoph.

If the above renaming has to be avoided, we need one new name
for multi-page bvec helpers, previous I name it as 'mp_bvec', such as:

    for_each_mp_bvec
    mp_bvec_iter_bvec
    mp_bvec_iter_len
    mp_bvec_iter_page
    mp_bvec_iter_offset

However, Christoph were not very happy with the above name.

Given you mentioned one more rename after the patches are merged should
be fine, I understand the new name of 'mp_bvec' should be fine for you
because it is just short-life.

Please confirm or provide another better name, so that we can move on.

Thanks,
Ming