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

From: Stephen Rothwell <[email-masked]>
Date: Fri, 14 Jan 2022 14:55:02 +1100

Hi all,

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.

-- 
Cheers,
Stephen Rothwell

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];