Subject: Re: linux-next: manual merge of the akpm-current tree with the ceph tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 17 Jan 2022 08:57:00 +1100

Hi all,

On Fri, 14 Jan 2022 14:55:02 +1100 Stephen Rothwell <[email-masked]> wrote:
>
> Today's linux-next merge of the akpm-current tree got conflicts in:
> 
>   include/linux/ceph/libceph.h
>   net/ceph/ceph_common.c
> 
> between commit:
> 
>   4153c7fc937a ("libceph: rename parse_fsid() to ceph_parse_fsid() and export")
> 
> from the ceph tree and commit:
> 
>   f9126de5849a ("mm: allow !GFP_KERNEL allocations for kvmalloc")
> 
> from the akpm-current tree.
> 
> I fixed it up (see below) 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.
> 
> 
> diff --cc include/linux/ceph/libceph.h
> index 644f224eccf7,309acbcb5a8a..000000000000
> --- a/include/linux/ceph/libceph.h
> +++ b/include/linux/ceph/libceph.h
> @@@ -295,8 -295,6 +295,7 @@@ extern bool libceph_compatible(void *da
>   
>   extern const char *ceph_msg_type_name(int type);
>   extern int ceph_check_fsid(struct ceph_client *client, struct ceph_fsid *fsid);
> - extern void *ceph_kvmalloc(size_t size, gfp_t flags);
>  +extern int ceph_parse_fsid(const char *str, struct ceph_fsid *fsid);
>   
>   struct fs_parameter;
>   struct fc_log;
> diff --cc net/ceph/ceph_common.c
> index decae43b4262,9441b4a4912b..000000000000
> --- a/net/ceph/ceph_common.c
> +++ b/net/ceph/ceph_common.c
> @@@ -190,34 -190,7 +190,7 @@@ int ceph_compare_options(struct ceph_op
>   }
>   EXPORT_SYMBOL(ceph_compare_options);
>   
> - /*
> -  * kvmalloc() doesn't fall back to the vmalloc allocator unless flags are
> -  * compatible with (a superset of) GFP_KERNEL.  This is because while the
> -  * actual pages are allocated with the specified flags, the page table pages
> -  * are always allocated with GFP_KERNEL.
> -  *
> -  * ceph_kvmalloc() may be called with GFP_KERNEL, GFP_NOFS or GFP_NOIO.
> -  */
> - void *ceph_kvmalloc(size_t size, gfp_t flags)
> - {
> - 	void *p;
> - 
> - 	if ((flags & (__GFP_IO | __GFP_FS)) == (__GFP_IO | __GFP_FS)) {
> - 		p = kvmalloc(size, flags);
> - 	} else if ((flags & (__GFP_IO | __GFP_FS)) == __GFP_IO) {
> - 		unsigned int nofs_flag = memalloc_nofs_save();
> - 		p = kvmalloc(size, GFP_KERNEL);
> - 		memalloc_nofs_restore(nofs_flag);
> - 	} else {
> - 		unsigned int noio_flag = memalloc_noio_save();
> - 		p = kvmalloc(size, GFP_KERNEL);
> - 		memalloc_noio_restore(noio_flag);
> - 	}
> - 
> - 	return p;
> - }
> - 
>  -static int parse_fsid(const char *str, struct ceph_fsid *fsid)
>  +int ceph_parse_fsid(const char *str, struct ceph_fsid *fsid)
>   {
>   	int i = 0;
>   	char tmp[3];

This is now a conflict between the ceph tree and Linus' tree.

-- 
Cheers,
Stephen Rothwell