From: Linus Torvalds Date: Thu, 20 Jan 2022 11:46:20 +0000 (+0200) Subject: Merge tag 'ceph-for-5.17-rc1' of git://github.com/ceph/ceph-client X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=64f29d8856a9e0d1fcdc5344f76e70c364b941cb;p=linux.git Merge tag 'ceph-for-5.17-rc1' of git://github.com/ceph/ceph-client Pull ceph updates from Ilya Dryomov: "The highlight is the new mount "device" string syntax implemented by Venky Shankar. It solves some long-standing issues with using different auth entities and/or mounting different CephFS filesystems from the same cluster, remounting and also misleading /proc/mounts contents. The existing syntax of course remains to be maintained. On top of that, there is a couple of fixes for edge cases in quota and a new mount option for turning on unbuffered I/O mode globally instead of on a per-file basis with ioctl(CEPH_IOC_SYNCIO)" * tag 'ceph-for-5.17-rc1' of git://github.com/ceph/ceph-client: ceph: move CEPH_SUPER_MAGIC definition to magic.h ceph: remove redundant Lsx caps check ceph: add new "nopagecache" option ceph: don't check for quotas on MDS stray dirs ceph: drop send metrics debug message rbd: make const pointer spaces a static const array ceph: Fix incorrect statfs report for small quota ceph: mount syntax module parameter doc: document new CephFS mount device syntax ceph: record updated mon_addr on remount ceph: new device mount syntax libceph: rename parse_fsid() to ceph_parse_fsid() and export libceph: generalize addr/ip parsing based on delimiter --- 64f29d8856a9e0d1fcdc5344f76e70c364b941cb diff --cc include/linux/ceph/libceph.h index 309acbcb5a8a1,644f224eccf75..6a89ea410e439 --- a/include/linux/ceph/libceph.h +++ b/include/linux/ceph/libceph.h @@@ -295,6 -295,8 +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 9441b4a4912b0,decae43b4262d..ecc400a0b7bbf --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c @@@ -190,7 -190,34 +190,7 @@@ int ceph_compare_options(struct ceph_op } EXPORT_SYMBOL(ceph_compare_options); - static int parse_fsid(const char *str, struct ceph_fsid *fsid) -/* - * 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; -} - + int ceph_parse_fsid(const char *str, struct ceph_fsid *fsid) { int i = 0; char tmp[3];