ceph-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/6] ceph: print the client global id for debug logs
@ 2023-06-19  7:14 xiubli
  2023-06-19  7:14 ` [PATCH v4 1/6] ceph: add the *_client debug macros support xiubli
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: xiubli @ 2023-06-19  7:14 UTC (permalink / raw)
  To: idryomov, ceph-devel; +Cc: jlayton, vshankar, mchangir, Xiubo Li

From: Xiubo Li <xiubli@redhat.com>

V4:
- s/dout_client()/doutc()/
- Fixed the building errors reported by ceph: print the client global id
for debug logs. Thanks.

Xiubo Li (6):
  ceph: add the *_client debug macros support
  ceph: pass the mdsc to several helpers
  ceph: rename _to_client() to _to_fs_client()
  ceph: move mdsmap.h to fs/ceph/
  ceph: add ceph_inode_to_client() helper support
  ceph: print the client global_id in all the debug logs

 fs/ceph/acl.c                       |   6 +-
 fs/ceph/addr.c                      | 298 ++++++-----
 fs/ceph/cache.c                     |   2 +-
 fs/ceph/caps.c                      | 774 ++++++++++++++++------------
 fs/ceph/crypto.c                    |  41 +-
 fs/ceph/debugfs.c                   |  10 +-
 fs/ceph/dir.c                       | 237 +++++----
 fs/ceph/export.c                    |  49 +-
 fs/ceph/file.c                      | 270 +++++-----
 fs/ceph/inode.c                     | 521 ++++++++++---------
 fs/ceph/ioctl.c                     |  21 +-
 fs/ceph/locks.c                     |  57 +-
 fs/ceph/mds_client.c                | 624 ++++++++++++----------
 fs/ceph/mds_client.h                |   5 +-
 fs/ceph/mdsmap.c                    |  29 +-
 {include/linux => fs}/ceph/mdsmap.h |   5 +-
 fs/ceph/metric.c                    |   5 +-
 fs/ceph/quota.c                     |  29 +-
 fs/ceph/snap.c                      | 192 +++----
 fs/ceph/super.c                     |  92 ++--
 fs/ceph/super.h                     |  19 +-
 fs/ceph/xattr.c                     | 108 ++--
 include/linux/ceph/ceph_debug.h     |  48 +-
 23 files changed, 1976 insertions(+), 1466 deletions(-)
 rename {include/linux => fs}/ceph/mdsmap.h (92%)

-- 
2.40.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 1/6] ceph: add the *_client debug macros support
  2023-06-19  7:14 [PATCH v4 0/6] ceph: print the client global id for debug logs xiubli
@ 2023-06-19  7:14 ` xiubli
  2023-09-04  9:27   ` Milind Changire
  2023-06-19  7:14 ` [PATCH v4 2/6] ceph: pass the mdsc to several helpers xiubli
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: xiubli @ 2023-06-19  7:14 UTC (permalink / raw)
  To: idryomov, ceph-devel
  Cc: jlayton, vshankar, mchangir, Xiubo Li, Patrick Donnelly

From: Xiubo Li <xiubli@redhat.com>

This will help print the fsid and client's global_id in debug logs,
and also print the function names.

URL: https://tracker.ceph.com/issues/61590
Cc: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Signed-off-by: Xiubo Li <xiubli@redhat.com>
---
 include/linux/ceph/ceph_debug.h | 48 ++++++++++++++++++++++++++++++++-
 1 file changed, 47 insertions(+), 1 deletion(-)

diff --git a/include/linux/ceph/ceph_debug.h b/include/linux/ceph/ceph_debug.h
index d5a5da838caf..0b5f210ca977 100644
--- a/include/linux/ceph/ceph_debug.h
+++ b/include/linux/ceph/ceph_debug.h
@@ -19,12 +19,26 @@
 	pr_debug("%.*s %12.12s:%-4d : " fmt,				\
 		 8 - (int)sizeof(KBUILD_MODNAME), "    ",		\
 		 kbasename(__FILE__), __LINE__, ##__VA_ARGS__)
+#  define doutc(client, fmt, ...)					\
+	pr_debug("%.*s %12.12s:%-4d : [%pU %lld] " fmt,			\
+		 8 - (int)sizeof(KBUILD_MODNAME), "    ",		\
+		 kbasename(__FILE__), __LINE__,				\
+		 &client->fsid, client->monc.auth->global_id,		\
+		 ##__VA_ARGS__)
 # else
 /* faux printk call just to see any compiler warnings. */
 #  define dout(fmt, ...)	do {				\
 		if (0)						\
 			printk(KERN_DEBUG fmt, ##__VA_ARGS__);	\
 	} while (0)
+#  define doutc(client, fmt, ...)	do {			\
+		if (0)						\
+			printk(KERN_DEBUG "[%pU %lld] " fmt,	\
+			&client->fsid,				\
+			client->monc.auth->global_id,		\
+			##__VA_ARGS__);				\
+		} while (0)
+
 # endif
 
 #else
@@ -33,7 +47,39 @@
  * or, just wrap pr_debug
  */
 # define dout(fmt, ...)	pr_debug(" " fmt, ##__VA_ARGS__)
-
+# define doutc(client, fmt, ...)					\
+	pr_debug("[%pU %lld] %s: " fmt, &client->fsid,			\
+		 client->monc.auth->global_id, __func__,		\
+		 ##__VA_ARGS__)
 #endif
 
+# define pr_notice_client(client, fmt, ...)				\
+	pr_notice("[%pU %lld] %s: " fmt, &client->fsid,			\
+		  client->monc.auth->global_id, __func__,		\
+		  ##__VA_ARGS__)
+# define pr_info_client(client, fmt, ...)				\
+	pr_info("[%pU %lld] %s: " fmt, &client->fsid,			\
+		client->monc.auth->global_id, __func__,			\
+		##__VA_ARGS__)
+# define pr_warn_client(client, fmt, ...)				\
+	pr_warn("[%pU %lld] %s: " fmt, &client->fsid,			\
+		client->monc.auth->global_id, __func__,			\
+		##__VA_ARGS__)
+# define pr_warn_once_client(client, fmt, ...)				\
+	pr_warn_once("[%pU %lld] %s: " fmt, &client->fsid,		\
+		     client->monc.auth->global_id, __func__,		\
+		     ##__VA_ARGS__)
+# define pr_err_client(client, fmt, ...)				\
+	pr_err("[%pU %lld] %s: " fmt, &client->fsid,			\
+	       client->monc.auth->global_id, __func__,			\
+	       ##__VA_ARGS__)
+# define pr_warn_ratelimited_client(client, fmt, ...)			\
+	pr_warn_ratelimited("[%pU %lld] %s: " fmt, &client->fsid,	\
+			    client->monc.auth->global_id, __func__,	\
+			    ##__VA_ARGS__)
+# define pr_err_ratelimited_client(client, fmt, ...)			\
+	pr_err_ratelimited("[%pU %lld] %s: " fmt, &client->fsid,	\
+			   client->monc.auth->global_id, __func__,	\
+			   ##__VA_ARGS__)
+
 #endif
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 2/6] ceph: pass the mdsc to several helpers
  2023-06-19  7:14 [PATCH v4 0/6] ceph: print the client global id for debug logs xiubli
  2023-06-19  7:14 ` [PATCH v4 1/6] ceph: add the *_client debug macros support xiubli
@ 2023-06-19  7:14 ` xiubli
  2023-09-04  9:28   ` Milind Changire
  2023-06-19  7:14 ` [PATCH v4 3/6] ceph: rename _to_client() to _to_fs_client() xiubli
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: xiubli @ 2023-06-19  7:14 UTC (permalink / raw)
  To: idryomov, ceph-devel
  Cc: jlayton, vshankar, mchangir, Xiubo Li, Patrick Donnelly

From: Xiubo Li <xiubli@redhat.com>

We will use the 'mdsc' to get the global_id in the following commits.

URL: https://tracker.ceph.com/issues/61590
Cc: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Signed-off-by: Xiubo Li <xiubli@redhat.com>
---
 fs/ceph/caps.c              | 15 +++++++++------
 fs/ceph/debugfs.c           |  4 ++--
 fs/ceph/dir.c               |  2 +-
 fs/ceph/file.c              |  2 +-
 fs/ceph/mds_client.c        | 37 +++++++++++++++++++++----------------
 fs/ceph/mds_client.h        |  3 ++-
 fs/ceph/mdsmap.c            |  3 ++-
 fs/ceph/snap.c              |  8 +++++---
 fs/ceph/super.h             |  3 ++-
 include/linux/ceph/mdsmap.h |  5 ++++-
 10 files changed, 49 insertions(+), 33 deletions(-)

diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 59ab5d905ac4..99e805144935 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -1178,7 +1178,8 @@ void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release)
 	}
 }
 
-void ceph_remove_cap(struct ceph_cap *cap, bool queue_release)
+void ceph_remove_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap,
+		     bool queue_release)
 {
 	struct ceph_inode_info *ci = cap->ci;
 	struct ceph_fs_client *fsc;
@@ -1341,6 +1342,8 @@ static void encode_cap_msg(struct ceph_msg *msg, struct cap_msg_args *arg)
  */
 void __ceph_remove_caps(struct ceph_inode_info *ci)
 {
+	struct inode *inode = &ci->netfs.inode;
+	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
 	struct rb_node *p;
 
 	/* lock i_ceph_lock, because ceph_d_revalidate(..., LOOKUP_RCU)
@@ -1350,7 +1353,7 @@ void __ceph_remove_caps(struct ceph_inode_info *ci)
 	while (p) {
 		struct ceph_cap *cap = rb_entry(p, struct ceph_cap, ci_node);
 		p = rb_next(p);
-		ceph_remove_cap(cap, true);
+		ceph_remove_cap(mdsc, cap, true);
 	}
 	spin_unlock(&ci->i_ceph_lock);
 }
@@ -3991,7 +3994,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
 		goto out_unlock;
 
 	if (target < 0) {
-		ceph_remove_cap(cap, false);
+		ceph_remove_cap(mdsc, cap, false);
 		goto out_unlock;
 	}
 
@@ -4026,7 +4029,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
 				change_auth_cap_ses(ci, tcap->session);
 			}
 		}
-		ceph_remove_cap(cap, false);
+		ceph_remove_cap(mdsc, cap, false);
 		goto out_unlock;
 	} else if (tsession) {
 		/* add placeholder for the export tagert */
@@ -4043,7 +4046,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
 			spin_unlock(&mdsc->cap_dirty_lock);
 		}
 
-		ceph_remove_cap(cap, false);
+		ceph_remove_cap(mdsc, cap, false);
 		goto out_unlock;
 	}
 
@@ -4156,7 +4159,7 @@ static void handle_cap_import(struct ceph_mds_client *mdsc,
 					ocap->mseq, mds, le32_to_cpu(ph->seq),
 					le32_to_cpu(ph->mseq));
 		}
-		ceph_remove_cap(ocap, (ph->flags & CEPH_CAP_FLAG_RELEASE));
+		ceph_remove_cap(mdsc, ocap, (ph->flags & CEPH_CAP_FLAG_RELEASE));
 	}
 
 	*old_issued = issued;
diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
index 3904333fa6c3..2f1e7498cd74 100644
--- a/fs/ceph/debugfs.c
+++ b/fs/ceph/debugfs.c
@@ -81,7 +81,7 @@ static int mdsc_show(struct seq_file *s, void *p)
 		if (req->r_inode) {
 			seq_printf(s, " #%llx", ceph_ino(req->r_inode));
 		} else if (req->r_dentry) {
-			path = ceph_mdsc_build_path(req->r_dentry, &pathlen,
+			path = ceph_mdsc_build_path(mdsc, req->r_dentry, &pathlen,
 						    &pathbase, 0);
 			if (IS_ERR(path))
 				path = NULL;
@@ -100,7 +100,7 @@ static int mdsc_show(struct seq_file *s, void *p)
 		}
 
 		if (req->r_old_dentry) {
-			path = ceph_mdsc_build_path(req->r_old_dentry, &pathlen,
+			path = ceph_mdsc_build_path(mdsc, req->r_old_dentry, &pathlen,
 						    &pathbase, 0);
 			if (IS_ERR(path))
 				path = NULL;
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 1b46f2b998c3..5fbcd0d5e5ec 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -1219,7 +1219,7 @@ static void ceph_async_unlink_cb(struct ceph_mds_client *mdsc,
 	if (result) {
 		int pathlen = 0;
 		u64 base = 0;
-		char *path = ceph_mdsc_build_path(dentry, &pathlen,
+		char *path = ceph_mdsc_build_path(mdsc, dentry, &pathlen,
 						  &base, 0);
 
 		/* mark error on parent + clear complete */
diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index e878a462c7c3..04bc4cc8ad9b 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -574,7 +574,7 @@ static void ceph_async_create_cb(struct ceph_mds_client *mdsc,
 	if (result) {
 		int pathlen = 0;
 		u64 base = 0;
-		char *path = ceph_mdsc_build_path(req->r_dentry, &pathlen,
+		char *path = ceph_mdsc_build_path(mdsc, req->r_dentry, &pathlen,
 						  &base, 0);
 
 		pr_warn("async create failure path=(%llx)%s result=%d!\n",
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 0a70a2438cb2..b9c7b6c60357 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -2125,6 +2125,7 @@ static bool drop_negative_children(struct dentry *dentry)
  */
 static int trim_caps_cb(struct inode *inode, int mds, void *arg)
 {
+	struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb);
 	int *remaining = arg;
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	int used, wanted, oissued, mine;
@@ -2172,7 +2173,7 @@ static int trim_caps_cb(struct inode *inode, int mds, void *arg)
 
 	if (oissued) {
 		/* we aren't the only cap.. just remove us */
-		ceph_remove_cap(cap, true);
+		ceph_remove_cap(mdsc, cap, true);
 		(*remaining)--;
 	} else {
 		struct dentry *dentry;
@@ -2633,7 +2634,8 @@ static u8 *get_fscrypt_altname(const struct ceph_mds_request *req, u32 *plen)
  * Encode hidden .snap dirs as a double /, i.e.
  *   foo/.snap/bar -> foo//bar
  */
-char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *pbase, int for_wire)
+char *ceph_mdsc_build_path(struct ceph_mds_client *mdsc, struct dentry *dentry,
+			   int *plen, u64 *pbase, int for_wire)
 {
 	struct dentry *cur;
 	struct inode *inode;
@@ -2748,9 +2750,9 @@ char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *pbase, int for
 	return path + pos;
 }
 
-static int build_dentry_path(struct dentry *dentry, struct inode *dir,
-			     const char **ppath, int *ppathlen, u64 *pino,
-			     bool *pfreepath, bool parent_locked)
+static int build_dentry_path(struct ceph_mds_client *mdsc, struct dentry *dentry,
+			     struct inode *dir, const char **ppath, int *ppathlen,
+			     u64 *pino, bool *pfreepath, bool parent_locked)
 {
 	char *path;
 
@@ -2765,7 +2767,7 @@ static int build_dentry_path(struct dentry *dentry, struct inode *dir,
 		return 0;
 	}
 	rcu_read_unlock();
-	path = ceph_mdsc_build_path(dentry, ppathlen, pino, 1);
+	path = ceph_mdsc_build_path(mdsc, dentry, ppathlen, pino, 1);
 	if (IS_ERR(path))
 		return PTR_ERR(path);
 	*ppath = path;
@@ -2777,6 +2779,7 @@ static int build_inode_path(struct inode *inode,
 			    const char **ppath, int *ppathlen, u64 *pino,
 			    bool *pfreepath)
 {
+	struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb);
 	struct dentry *dentry;
 	char *path;
 
@@ -2786,7 +2789,7 @@ static int build_inode_path(struct inode *inode,
 		return 0;
 	}
 	dentry = d_find_alias(inode);
-	path = ceph_mdsc_build_path(dentry, ppathlen, pino, 1);
+	path = ceph_mdsc_build_path(mdsc, dentry, ppathlen, pino, 1);
 	dput(dentry);
 	if (IS_ERR(path))
 		return PTR_ERR(path);
@@ -2799,10 +2802,11 @@ static int build_inode_path(struct inode *inode,
  * request arguments may be specified via an inode *, a dentry *, or
  * an explicit ino+path.
  */
-static int set_request_path_attr(struct inode *rinode, struct dentry *rdentry,
-				  struct inode *rdiri, const char *rpath,
-				  u64 rino, const char **ppath, int *pathlen,
-				  u64 *ino, bool *freepath, bool parent_locked)
+static int set_request_path_attr(struct ceph_mds_client *mdsc, struct inode *rinode,
+				 struct dentry *rdentry, struct inode *rdiri,
+				 const char *rpath, u64 rino, const char **ppath,
+				 int *pathlen, u64 *ino, bool *freepath,
+				 bool parent_locked)
 {
 	int r = 0;
 
@@ -2811,7 +2815,7 @@ static int set_request_path_attr(struct inode *rinode, struct dentry *rdentry,
 		dout(" inode %p %llx.%llx\n", rinode, ceph_ino(rinode),
 		     ceph_snap(rinode));
 	} else if (rdentry) {
-		r = build_dentry_path(rdentry, rdiri, ppath, pathlen, ino,
+		r = build_dentry_path(mdsc, rdentry, rdiri, ppath, pathlen, ino,
 					freepath, parent_locked);
 		dout(" dentry %p %llx/%.*s\n", rdentry, *ino, *pathlen,
 		     *ppath);
@@ -2883,7 +2887,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
 	int ret;
 	bool legacy = !(session->s_con.peer_features & CEPH_FEATURE_FS_BTIME);
 
-	ret = set_request_path_attr(req->r_inode, req->r_dentry,
+	ret = set_request_path_attr(mdsc, req->r_inode, req->r_dentry,
 			      req->r_parent, req->r_path1, req->r_ino1.ino,
 			      &path1, &pathlen1, &ino1, &freepath1,
 			      test_bit(CEPH_MDS_R_PARENT_LOCKED,
@@ -2897,7 +2901,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
 	if (req->r_old_dentry &&
 	    !(req->r_old_dentry->d_flags & DCACHE_DISCONNECTED))
 		old_dentry = req->r_old_dentry;
-	ret = set_request_path_attr(NULL, old_dentry,
+	ret = set_request_path_attr(mdsc, NULL, old_dentry,
 			      req->r_old_dentry_dir,
 			      req->r_path2, req->r_ino2.ino,
 			      &path2, &pathlen2, &ino2, &freepath2, true);
@@ -4288,6 +4292,7 @@ static struct dentry* d_find_primary(struct inode *inode)
  */
 static int reconnect_caps_cb(struct inode *inode, int mds, void *arg)
 {
+	struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb);
 	union {
 		struct ceph_mds_cap_reconnect v2;
 		struct ceph_mds_cap_reconnect_v1 v1;
@@ -4305,7 +4310,7 @@ static int reconnect_caps_cb(struct inode *inode, int mds, void *arg)
 	dentry = d_find_primary(inode);
 	if (dentry) {
 		/* set pathbase to parent dir when msg_version >= 2 */
-		path = ceph_mdsc_build_path(dentry, &pathlen, &pathbase,
+		path = ceph_mdsc_build_path(mdsc, dentry, &pathlen, &pathbase,
 					    recon_state->msg_version >= 2);
 		dput(dentry);
 		if (IS_ERR(path)) {
@@ -5660,7 +5665,7 @@ void ceph_mdsc_handle_mdsmap(struct ceph_mds_client *mdsc, struct ceph_msg *msg)
 		return;
 	}
 
-	newmap = ceph_mdsmap_decode(&p, end, ceph_msgr2(mdsc->fsc->client));
+	newmap = ceph_mdsmap_decode(mdsc, &p, end, ceph_msgr2(mdsc->fsc->client));
 	if (IS_ERR(newmap)) {
 		err = PTR_ERR(newmap);
 		goto bad_unlock;
diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h
index 351d92f7fc4f..20bcf8d5322e 100644
--- a/fs/ceph/mds_client.h
+++ b/fs/ceph/mds_client.h
@@ -578,7 +578,8 @@ static inline void ceph_mdsc_free_path(char *path, int len)
 		__putname(path - (PATH_MAX - 1 - len));
 }
 
-extern char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *base,
+extern char *ceph_mdsc_build_path(struct ceph_mds_client *mdsc,
+				  struct dentry *dentry, int *plen, u64 *base,
 				  int stop_on_nosnap);
 
 extern void __ceph_mdsc_drop_dentry_lease(struct dentry *dentry);
diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
index 7dac21ee6ce7..6cbec7aed5a0 100644
--- a/fs/ceph/mdsmap.c
+++ b/fs/ceph/mdsmap.c
@@ -114,7 +114,8 @@ static int __decode_and_drop_compat_set(void **p, void* end)
  * Ignore any fields we don't care about (there are quite a few of
  * them).
  */
-struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end, bool msgr2)
+struct ceph_mdsmap *ceph_mdsmap_decode(struct ceph_mds_client *mdsc, void **p,
+				       void *end, bool msgr2)
 {
 	struct ceph_mdsmap *m;
 	const void *start = *p;
diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
index abd52f5b3b0a..5bd47829a005 100644
--- a/fs/ceph/snap.c
+++ b/fs/ceph/snap.c
@@ -451,7 +451,8 @@ static void rebuild_snap_realms(struct ceph_snap_realm *realm,
 			continue;
 		}
 
-		last = build_snap_context(_realm, &realm_queue, dirty_realms);
+		last = build_snap_context(mdsc, _realm, &realm_queue,
+					  dirty_realms);
 		dout("%s %llx %p, %s\n", __func__, _realm->ino, _realm,
 		     last > 0 ? "is deferred" : !last ? "succeeded" : "failed");
 
@@ -709,7 +710,8 @@ int __ceph_finish_cap_snap(struct ceph_inode_info *ci,
  * Queue cap_snaps for snap writeback for this realm and its children.
  * Called under snap_rwsem, so realm topology won't change.
  */
-static void queue_realm_cap_snaps(struct ceph_snap_realm *realm)
+static void queue_realm_cap_snaps(struct ceph_mds_client *mdsc,
+				  struct ceph_snap_realm *realm)
 {
 	struct ceph_inode_info *ci;
 	struct inode *lastinode = NULL;
@@ -874,7 +876,7 @@ int ceph_update_snap_trace(struct ceph_mds_client *mdsc,
 		realm = list_first_entry(&dirty_realms, struct ceph_snap_realm,
 					 dirty_item);
 		list_del_init(&realm->dirty_item);
-		queue_realm_cap_snaps(realm);
+		queue_realm_cap_snaps(mdsc, realm);
 	}
 
 	if (realm_ret)
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 107a9d16a4e8..ab5c0c703eae 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -1223,7 +1223,8 @@ extern void ceph_add_cap(struct inode *inode,
 			 unsigned cap, unsigned seq, u64 realmino, int flags,
 			 struct ceph_cap **new_cap);
 extern void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release);
-extern void ceph_remove_cap(struct ceph_cap *cap, bool queue_release);
+extern void ceph_remove_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap,
+			    bool queue_release);
 extern void __ceph_remove_caps(struct ceph_inode_info *ci);
 extern void ceph_put_cap(struct ceph_mds_client *mdsc,
 			 struct ceph_cap *cap);
diff --git a/include/linux/ceph/mdsmap.h b/include/linux/ceph/mdsmap.h
index 4c3e0648dc27..89f1931f1ba6 100644
--- a/include/linux/ceph/mdsmap.h
+++ b/include/linux/ceph/mdsmap.h
@@ -5,6 +5,8 @@
 #include <linux/bug.h>
 #include <linux/ceph/types.h>
 
+struct ceph_mds_client;
+
 /*
  * mds map - describe servers in the mds cluster.
  *
@@ -65,7 +67,8 @@ static inline bool ceph_mdsmap_is_laggy(struct ceph_mdsmap *m, int w)
 }
 
 extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m);
-struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end, bool msgr2);
+struct ceph_mdsmap *ceph_mdsmap_decode(struct ceph_mds_client *mdsc, void **p,
+				       void *end, bool msgr2);
 extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m);
 extern bool ceph_mdsmap_is_cluster_available(struct ceph_mdsmap *m);
 
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 3/6] ceph: rename _to_client() to _to_fs_client()
  2023-06-19  7:14 [PATCH v4 0/6] ceph: print the client global id for debug logs xiubli
  2023-06-19  7:14 ` [PATCH v4 1/6] ceph: add the *_client debug macros support xiubli
  2023-06-19  7:14 ` [PATCH v4 2/6] ceph: pass the mdsc to several helpers xiubli
@ 2023-06-19  7:14 ` xiubli
  2023-09-04  9:28   ` Milind Changire
  2023-06-19  7:14 ` [PATCH v4 4/6] ceph: move mdsmap.h to fs/ceph/ xiubli
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: xiubli @ 2023-06-19  7:14 UTC (permalink / raw)
  To: idryomov, ceph-devel
  Cc: jlayton, vshankar, mchangir, Xiubo Li, Patrick Donnelly

From: Xiubo Li <xiubli@redhat.com>

We need to covert the inode to ceph_client in the following commit,
and will add one new helper for that, here we rename the old helper
to _fs_client().

URL: https://tracker.ceph.com/issues/61590
Cc: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Signed-off-by: Xiubo Li <xiubli@redhat.com>
---
 fs/ceph/addr.c       | 20 ++++++++++----------
 fs/ceph/cache.c      |  2 +-
 fs/ceph/caps.c       | 40 ++++++++++++++++++++--------------------
 fs/ceph/crypto.c     |  2 +-
 fs/ceph/dir.c        | 22 +++++++++++-----------
 fs/ceph/export.c     | 10 +++++-----
 fs/ceph/file.c       | 24 ++++++++++++------------
 fs/ceph/inode.c      | 14 +++++++-------
 fs/ceph/ioctl.c      |  8 ++++----
 fs/ceph/mds_client.c |  2 +-
 fs/ceph/snap.c       |  2 +-
 fs/ceph/super.c      | 22 +++++++++++-----------
 fs/ceph/super.h      | 10 +++++-----
 fs/ceph/xattr.c      | 12 ++++++------
 14 files changed, 95 insertions(+), 95 deletions(-)

diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index de9b82905f18..e62318b3e13d 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -229,7 +229,7 @@ static void ceph_netfs_expand_readahead(struct netfs_io_request *rreq)
 static bool ceph_netfs_clamp_length(struct netfs_io_subrequest *subreq)
 {
 	struct inode *inode = subreq->rreq->inode;
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	u64 objno, objoff;
 	u32 xlen;
@@ -244,7 +244,7 @@ static bool ceph_netfs_clamp_length(struct netfs_io_subrequest *subreq)
 static void finish_netfs_read(struct ceph_osd_request *req)
 {
 	struct inode *inode = req->r_inode;
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_osd_data *osd_data = osd_req_op_extent_osd_data(req, 0);
 	struct netfs_io_subrequest *subreq = req->r_priv;
 	struct ceph_osd_req_op *op = &req->r_ops[0];
@@ -347,7 +347,7 @@ static void ceph_netfs_issue_read(struct netfs_io_subrequest *subreq)
 	struct netfs_io_request *rreq = subreq->rreq;
 	struct inode *inode = rreq->inode;
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_osd_request *req = NULL;
 	struct ceph_vino vino = ceph_vino(inode);
 	struct iov_iter iter;
@@ -655,7 +655,7 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc)
 	struct folio *folio = page_folio(page);
 	struct inode *inode = page->mapping->host;
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_snap_context *snapc, *oldest;
 	loff_t page_off = page_offset(page);
 	int err;
@@ -799,7 +799,7 @@ static int ceph_writepage(struct page *page, struct writeback_control *wbc)
 	ihold(inode);
 
 	if (wbc->sync_mode == WB_SYNC_NONE &&
-	    ceph_inode_to_client(inode)->write_congested)
+	    ceph_inode_to_fs_client(inode)->write_congested)
 		return AOP_WRITEPAGE_ACTIVATE;
 
 	wait_on_page_fscache(page);
@@ -832,7 +832,7 @@ static void writepages_finish(struct ceph_osd_request *req)
 	int rc = req->r_result;
 	struct ceph_snap_context *snapc = req->r_snapc;
 	struct address_space *mapping = inode->i_mapping;
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	unsigned int len = 0;
 	bool remove_page;
 
@@ -922,7 +922,7 @@ static int ceph_writepages_start(struct address_space *mapping,
 {
 	struct inode *inode = mapping->host;
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_vino vino = ceph_vino(inode);
 	pgoff_t index, start_index, end = -1;
 	struct ceph_snap_context *snapc = NULL, *last_snapc = NULL, *pgsnapc;
@@ -1819,7 +1819,7 @@ int ceph_uninline_data(struct file *file)
 {
 	struct inode *inode = file_inode(file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_osd_request *req = NULL;
 	struct ceph_cap_flush *prealloc_cf = NULL;
 	struct folio *folio = NULL;
@@ -1973,7 +1973,7 @@ enum {
 static int __ceph_pool_perm_get(struct ceph_inode_info *ci,
 				s64 pool, struct ceph_string *pool_ns)
 {
-	struct ceph_fs_client *fsc = ceph_inode_to_client(&ci->netfs.inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(&ci->netfs.inode);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	struct ceph_osd_request *rd_req = NULL, *wr_req = NULL;
 	struct rb_node **p, *parent;
@@ -2164,7 +2164,7 @@ int ceph_pool_perm_check(struct inode *inode, int need)
 		return 0;
 	}
 
-	if (ceph_test_mount_opt(ceph_inode_to_client(inode),
+	if (ceph_test_mount_opt(ceph_inode_to_fs_client(inode),
 				NOPOOLPERM))
 		return 0;
 
diff --git a/fs/ceph/cache.c b/fs/ceph/cache.c
index 177d8e8d73fe..fedb8108c9f5 100644
--- a/fs/ceph/cache.c
+++ b/fs/ceph/cache.c
@@ -15,7 +15,7 @@
 void ceph_fscache_register_inode_cookie(struct inode *inode)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 
 	/* No caching for filesystem? */
 	if (!fsc->fscache)
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 99e805144935..4538c8280c70 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -635,7 +635,7 @@ void ceph_add_cap(struct inode *inode,
 		  unsigned seq, unsigned mseq, u64 realmino, int flags,
 		  struct ceph_cap **new_cap)
 {
-	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_cap *cap;
 	int mds = session->s_mds;
@@ -922,7 +922,7 @@ int __ceph_caps_issued_mask(struct ceph_inode_info *ci, int mask, int touch)
 int __ceph_caps_issued_mask_metric(struct ceph_inode_info *ci, int mask,
 				   int touch)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
 	int r;
 
 	r = __ceph_caps_issued_mask(ci, mask, touch);
@@ -996,7 +996,7 @@ int __ceph_caps_file_wanted(struct ceph_inode_info *ci)
 	const int WR_SHIFT = ffs(CEPH_FILE_MODE_WR);
 	const int LAZY_SHIFT = ffs(CEPH_FILE_MODE_LAZY);
 	struct ceph_mount_options *opt =
-		ceph_inode_to_client(&ci->netfs.inode)->mount_options;
+		ceph_inode_to_fs_client(&ci->netfs.inode)->mount_options;
 	unsigned long used_cutoff = jiffies - opt->caps_wanted_delay_max * HZ;
 	unsigned long idle_cutoff = jiffies - opt->caps_wanted_delay_min * HZ;
 
@@ -1121,7 +1121,7 @@ void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release)
 
 	dout("__ceph_remove_cap %p from %p\n", cap, &ci->netfs.inode);
 
-	mdsc = ceph_inode_to_client(&ci->netfs.inode)->mdsc;
+	mdsc = ceph_inode_to_fs_client(&ci->netfs.inode)->mdsc;
 
 	/* remove from inode's cap rbtree, and clear auth cap */
 	rb_erase(&cap->ci_node, &ci->i_caps);
@@ -1192,7 +1192,7 @@ void ceph_remove_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap,
 
 	lockdep_assert_held(&ci->i_ceph_lock);
 
-	fsc = ceph_inode_to_client(&ci->netfs.inode);
+	fsc = ceph_inode_to_fs_client(&ci->netfs.inode);
 	WARN_ON_ONCE(ci->i_auth_cap == cap &&
 		     !list_empty(&ci->i_dirty_item) &&
 		     !fsc->blocklisted &&
@@ -1343,7 +1343,7 @@ static void encode_cap_msg(struct ceph_msg *msg, struct cap_msg_args *arg)
 void __ceph_remove_caps(struct ceph_inode_info *ci)
 {
 	struct inode *inode = &ci->netfs.inode;
-	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 	struct rb_node *p;
 
 	/* lock i_ceph_lock, because ceph_d_revalidate(..., LOOKUP_RCU)
@@ -1685,7 +1685,7 @@ void ceph_flush_snaps(struct ceph_inode_info *ci,
 		      struct ceph_mds_session **psession)
 {
 	struct inode *inode = &ci->netfs.inode;
-	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 	struct ceph_mds_session *session = NULL;
 	bool need_put = false;
 	int mds;
@@ -1750,7 +1750,7 @@ int __ceph_mark_dirty_caps(struct ceph_inode_info *ci, int mask,
 			   struct ceph_cap_flush **pcf)
 {
 	struct ceph_mds_client *mdsc =
-		ceph_sb_to_client(ci->netfs.inode.i_sb)->mdsc;
+		ceph_sb_to_fs_client(ci->netfs.inode.i_sb)->mdsc;
 	struct inode *inode = &ci->netfs.inode;
 	int was = ci->i_dirty_caps;
 	int dirty = 0;
@@ -1873,7 +1873,7 @@ static u64 __mark_caps_flushing(struct inode *inode,
 				struct ceph_mds_session *session, bool wake,
 				u64 *oldest_flush_tid)
 {
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_cap_flush *cf = NULL;
 	int flushing;
@@ -2233,7 +2233,7 @@ void ceph_check_caps(struct ceph_inode_info *ci, int flags)
  */
 static int try_flush_caps(struct inode *inode, u64 *ptid)
 {
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	int flushing = 0;
 	u64 flush_tid = 0, oldest_flush_tid = 0;
@@ -2311,7 +2311,7 @@ static int caps_are_flushed(struct inode *inode, u64 flush_tid)
  */
 static int flush_mdlog_and_wait_inode_unsafe_requests(struct inode *inode)
 {
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_mds_request *req1 = NULL, *req2 = NULL;
 	int ret, err = 0;
@@ -2494,7 +2494,7 @@ int ceph_write_inode(struct inode *inode, struct writeback_control *wbc)
 				       caps_are_flushed(inode, flush_tid));
 	} else {
 		struct ceph_mds_client *mdsc =
-			ceph_sb_to_client(inode->i_sb)->mdsc;
+			ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 
 		spin_lock(&ci->i_ceph_lock);
 		if (__ceph_caps_dirty(ci))
@@ -2747,7 +2747,7 @@ static int try_get_cap_refs(struct inode *inode, int need, int want,
 			    loff_t endoff, int flags, int *got)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 	int ret = 0;
 	int have, implemented;
 	bool snap_rwsem_locked = false;
@@ -2965,7 +2965,7 @@ int __ceph_get_caps(struct inode *inode, struct ceph_file_info *fi, int need,
 		    int want, loff_t endoff, int *got)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	int ret, _got, flags;
 
 	ret = ceph_pool_perm_check(inode, need);
@@ -3717,7 +3717,7 @@ static void handle_cap_flush_ack(struct inode *inode, u64 flush_tid,
 	__releases(ci->i_ceph_lock)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	struct ceph_cap_flush *cf, *tmp_cf;
 	LIST_HEAD(to_remove);
 	unsigned seq = le32_to_cpu(m->seq);
@@ -3827,7 +3827,7 @@ void __ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap,
 			   bool *wake_ci, bool *wake_mdsc)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	bool ret;
 
 	lockdep_assert_held(&ci->i_ceph_lock);
@@ -3871,7 +3871,7 @@ static void handle_cap_flushsnap_ack(struct inode *inode, u64 flush_tid,
 				     struct ceph_mds_session *session)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	u64 follows = le64_to_cpu(m->snap_follows);
 	struct ceph_cap_snap *capsnap = NULL, *iter;
 	bool wake_ci = false;
@@ -3964,7 +3964,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
 			      struct ceph_mds_cap_peer *ph,
 			      struct ceph_mds_session *session)
 {
-	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 	struct ceph_mds_session *tsession = NULL;
 	struct ceph_cap *cap, *tcap, *new_cap = NULL;
 	struct ceph_inode_info *ci = ceph_inode(inode);
@@ -4672,7 +4672,7 @@ int ceph_drop_caps_for_unlink(struct inode *inode)
 
 		if (__ceph_caps_dirty(ci)) {
 			struct ceph_mds_client *mdsc =
-				ceph_inode_to_client(inode)->mdsc;
+				ceph_inode_to_fs_client(inode)->mdsc;
 			__cap_delay_requeue_front(mdsc, ci);
 		}
 	}
@@ -4855,7 +4855,7 @@ static int remove_capsnaps(struct ceph_mds_client *mdsc, struct inode *inode)
 
 int ceph_purge_inode_cap(struct inode *inode, struct ceph_cap *cap, bool *invalidate)
 {
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	bool is_auth;
diff --git a/fs/ceph/crypto.c b/fs/ceph/crypto.c
index e72bab29d5e1..4b0e9c3a53c8 100644
--- a/fs/ceph/crypto.c
+++ b/fs/ceph/crypto.c
@@ -128,7 +128,7 @@ static bool ceph_crypt_empty_dir(struct inode *inode)
 
 static const union fscrypt_policy *ceph_get_dummy_policy(struct super_block *sb)
 {
-	return ceph_sb_to_client(sb)->fsc_dummy_enc_policy.policy;
+	return ceph_sb_to_fs_client(sb)->fsc_dummy_enc_policy.policy;
 }
 
 static struct fscrypt_operations ceph_fscrypt_ops = {
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 5fbcd0d5e5ec..69906b721992 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -310,7 +310,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx)
 	struct ceph_dir_file_info *dfi = file->private_data;
 	struct inode *inode = file_inode(file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	int i;
 	int err;
@@ -702,7 +702,7 @@ static loff_t ceph_dir_llseek(struct file *file, loff_t offset, int whence)
 struct dentry *ceph_handle_snapdir(struct ceph_mds_request *req,
 				   struct dentry *dentry)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
 	struct inode *parent = d_inode(dentry->d_parent); /* we hold i_rwsem */
 
 	/* .snap dir? */
@@ -770,7 +770,7 @@ static bool is_root_ceph_dentry(struct inode *inode, struct dentry *dentry)
 static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry,
 				  unsigned int flags)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dir->i_sb);
 	struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(dir->i_sb);
 	struct ceph_mds_request *req;
 	int op;
@@ -1192,7 +1192,7 @@ static void ceph_async_unlink_cb(struct ceph_mds_client *mdsc,
 				 struct ceph_mds_request *req)
 {
 	struct dentry *dentry = req->r_dentry;
-	struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
 	struct ceph_dentry_info *di = ceph_dentry(dentry);
 	int result = req->r_err ? req->r_err :
 			le32_to_cpu(req->r_reply_info.head->result);
@@ -1283,7 +1283,7 @@ static int get_caps_for_async_unlink(struct inode *dir, struct dentry *dentry)
  */
 static int ceph_unlink(struct inode *dir, struct dentry *dentry)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dir->i_sb);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	struct inode *inode = d_inode(dentry);
 	struct ceph_mds_request *req;
@@ -1461,7 +1461,7 @@ void __ceph_dentry_lease_touch(struct ceph_dentry_info *di)
 		return;
 	}
 
-	mdsc = ceph_sb_to_client(dn->d_sb)->mdsc;
+	mdsc = ceph_sb_to_fs_client(dn->d_sb)->mdsc;
 	spin_lock(&mdsc->dentry_list_lock);
 	list_move_tail(&di->lease_list, &mdsc->dentry_leases);
 	spin_unlock(&mdsc->dentry_list_lock);
@@ -1508,7 +1508,7 @@ void __ceph_dentry_dir_lease_touch(struct ceph_dentry_info *di)
 		return;
 	}
 
-	mdsc = ceph_sb_to_client(dn->d_sb)->mdsc;
+	mdsc = ceph_sb_to_fs_client(dn->d_sb)->mdsc;
 	spin_lock(&mdsc->dentry_list_lock);
 	__dentry_dir_lease_touch(mdsc, di),
 	spin_unlock(&mdsc->dentry_list_lock);
@@ -1522,7 +1522,7 @@ static void __dentry_lease_unlist(struct ceph_dentry_info *di)
 	if (list_empty(&di->lease_list))
 		return;
 
-	mdsc = ceph_sb_to_client(di->dentry->d_sb)->mdsc;
+	mdsc = ceph_sb_to_fs_client(di->dentry->d_sb)->mdsc;
 	spin_lock(&mdsc->dentry_list_lock);
 	list_del_init(&di->lease_list);
 	spin_unlock(&mdsc->dentry_list_lock);
@@ -1879,7 +1879,7 @@ static int ceph_d_revalidate(struct dentry *dentry, unsigned int flags)
 	dout("d_revalidate %p '%pd' inode %p offset 0x%llx nokey %d\n", dentry,
 	     dentry, inode, ceph_dentry(dentry)->offset, !!(dentry->d_flags & DCACHE_NOKEY_NAME));
 
-	mdsc = ceph_sb_to_client(dir->i_sb)->mdsc;
+	mdsc = ceph_sb_to_fs_client(dir->i_sb)->mdsc;
 
 	/* always trust cached snapped dentries, snapdir dentry */
 	if (ceph_snap(dir) != CEPH_NOSNAP) {
@@ -1986,7 +1986,7 @@ static int ceph_d_delete(const struct dentry *dentry)
 static void ceph_d_release(struct dentry *dentry)
 {
 	struct ceph_dentry_info *di = ceph_dentry(dentry);
-	struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
 
 	dout("d_release %p\n", dentry);
 
@@ -2055,7 +2055,7 @@ static ssize_t ceph_read_dir(struct file *file, char __user *buf, size_t size,
 	int left;
 	const int bufsize = 1024;
 
-	if (!ceph_test_mount_opt(ceph_sb_to_client(inode->i_sb), DIRSTAT))
+	if (!ceph_test_mount_opt(ceph_sb_to_fs_client(inode->i_sb), DIRSTAT))
 		return -EISDIR;
 
 	if (!dfi->dir_info) {
diff --git a/fs/ceph/export.c b/fs/ceph/export.c
index 8559990a59a5..52c4daf2447d 100644
--- a/fs/ceph/export.c
+++ b/fs/ceph/export.c
@@ -123,7 +123,7 @@ static int ceph_encode_fh(struct inode *inode, u32 *rawfh, int *max_len,
 
 static struct inode *__lookup_inode(struct super_block *sb, u64 ino)
 {
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(sb)->mdsc;
 	struct inode *inode;
 	struct ceph_vino vino;
 	int err;
@@ -205,7 +205,7 @@ static struct dentry *__snapfh_to_dentry(struct super_block *sb,
 					  struct ceph_nfs_snapfh *sfh,
 					  bool want_parent)
 {
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(sb)->mdsc;
 	struct ceph_mds_request *req;
 	struct inode *inode;
 	struct ceph_vino vino;
@@ -317,7 +317,7 @@ static struct dentry *ceph_fh_to_dentry(struct super_block *sb,
 static struct dentry *__get_parent(struct super_block *sb,
 				   struct dentry *child, u64 ino)
 {
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(sb)->mdsc;
 	struct ceph_mds_request *req;
 	struct inode *inode;
 	int mask;
@@ -439,7 +439,7 @@ static int __get_snap_name(struct dentry *parent, char *name,
 {
 	struct inode *inode = d_inode(child);
 	struct inode *dir = d_inode(parent);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_mds_request *req = NULL;
 	char *last_name = NULL;
 	unsigned next_offset = 2;
@@ -544,7 +544,7 @@ static int ceph_get_name(struct dentry *parent, char *name,
 	if (ceph_snap(inode) != CEPH_NOSNAP)
 		return __get_snap_name(parent, name, child);
 
-	mdsc = ceph_inode_to_client(inode)->mdsc;
+	mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 	req = ceph_mdsc_create_request(mdsc, CEPH_MDS_OP_LOOKUPNAME,
 				       USE_ANY_MDS);
 	if (IS_ERR(req))
diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index 04bc4cc8ad9b..344f0b6260bd 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -200,7 +200,7 @@ static int ceph_init_file_info(struct inode *inode, struct file *file,
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_mount_options *opt =
-		ceph_inode_to_client(&ci->netfs.inode)->mount_options;
+		ceph_inode_to_fs_client(&ci->netfs.inode)->mount_options;
 	struct ceph_file_info *fi;
 	int ret;
 
@@ -234,7 +234,7 @@ static int ceph_init_file_info(struct inode *inode, struct file *file,
 
 	spin_lock_init(&fi->rw_contexts_lock);
 	INIT_LIST_HEAD(&fi->rw_contexts);
-	fi->filp_gen = READ_ONCE(ceph_inode_to_client(inode)->filp_gen);
+	fi->filp_gen = READ_ONCE(ceph_inode_to_fs_client(inode)->filp_gen);
 
 	if ((file->f_mode & FMODE_WRITE) && ceph_has_inline_data(ci)) {
 		ret = ceph_uninline_data(file);
@@ -352,7 +352,7 @@ int ceph_renew_caps(struct inode *inode, int fmode)
 int ceph_open(struct inode *inode, struct file *file)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	struct ceph_mds_request *req;
 	struct ceph_file_info *fi = file->private_data;
@@ -730,7 +730,7 @@ static int ceph_finish_async_create(struct inode *dir, struct inode *inode,
 int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
 		     struct file *file, unsigned flags, umode_t mode)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dir->i_sb);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	struct ceph_mds_request *req;
 	struct inode *new_inode = NULL;
@@ -959,7 +959,7 @@ ssize_t __ceph_sync_read(struct inode *inode, loff_t *ki_pos,
 			 u64 *last_objver)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_osd_client *osdc = &fsc->client->osdc;
 	ssize_t ret;
 	u64 off = *ki_pos;
@@ -1252,7 +1252,7 @@ static void ceph_aio_complete_req(struct ceph_osd_request *req)
 		if (aio_work) {
 			INIT_WORK(&aio_work->work, ceph_aio_retry_work);
 			aio_work->req = req;
-			queue_work(ceph_inode_to_client(inode)->inode_wq,
+			queue_work(ceph_inode_to_fs_client(inode)->inode_wq,
 				   &aio_work->work);
 			return;
 		}
@@ -1382,7 +1382,7 @@ ceph_direct_read_write(struct kiocb *iocb, struct iov_iter *iter,
 	struct file *file = iocb->ki_filp;
 	struct inode *inode = file_inode(file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_client_metric *metric = &fsc->mdsc->metric;
 	struct ceph_vino vino;
 	struct ceph_osd_request *req;
@@ -1606,7 +1606,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos,
 	struct file *file = iocb->ki_filp;
 	struct inode *inode = file_inode(file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_osd_client *osdc = &fsc->client->osdc;
 	struct ceph_osd_request *req;
 	struct page **pages;
@@ -2159,7 +2159,7 @@ static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from)
 	struct ceph_file_info *fi = file->private_data;
 	struct inode *inode = file_inode(file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_osd_client *osdc = &fsc->client->osdc;
 	struct ceph_cap_flush *prealloc_cf;
 	ssize_t count, written = 0;
@@ -2399,7 +2399,7 @@ static int ceph_zero_partial_object(struct inode *inode,
 				    loff_t offset, loff_t *length)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_osd_request *req;
 	int ret = 0;
 	loff_t zero = 0;
@@ -2782,7 +2782,7 @@ static ssize_t __ceph_copy_file_range(struct file *src_file, loff_t src_off,
 	struct ceph_inode_info *src_ci = ceph_inode(src_inode);
 	struct ceph_inode_info *dst_ci = ceph_inode(dst_inode);
 	struct ceph_cap_flush *prealloc_cf;
-	struct ceph_fs_client *src_fsc = ceph_inode_to_client(src_inode);
+	struct ceph_fs_client *src_fsc = ceph_inode_to_fs_client(src_inode);
 	loff_t size;
 	ssize_t ret = -EIO, bytes;
 	u64 src_objnum, dst_objnum, src_objoff, dst_objoff;
@@ -2790,7 +2790,7 @@ static ssize_t __ceph_copy_file_range(struct file *src_file, loff_t src_off,
 	int src_got = 0, dst_got = 0, err, dirty;
 
 	if (src_inode->i_sb != dst_inode->i_sb) {
-		struct ceph_fs_client *dst_fsc = ceph_inode_to_client(dst_inode);
+		struct ceph_fs_client *dst_fsc = ceph_inode_to_fs_client(dst_inode);
 
 		if (ceph_fsid_compare(&src_fsc->client->fsid,
 				      &dst_fsc->client->fsid)) {
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index fe8adb9d67a6..c283ea632c51 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -1497,7 +1497,7 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req)
 	struct ceph_mds_reply_info_parsed *rinfo = &req->r_reply_info;
 	struct inode *in = NULL;
 	struct ceph_vino tvino, dvino;
-	struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
 	int err = 0;
 
 	dout("fill_trace %p is_dentry %d is_target %d\n", req,
@@ -2087,7 +2087,7 @@ bool ceph_inode_set_size(struct inode *inode, loff_t size)
 
 void ceph_queue_inode_work(struct inode *inode, int work_bit)
 {
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	set_bit(work_bit, &ci->i_work_mask);
 
@@ -2429,7 +2429,7 @@ int __ceph_setattr(struct inode *inode, struct iattr *attr, struct ceph_iattr *c
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	unsigned int ia_valid = attr->ia_valid;
 	struct ceph_mds_request *req;
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	struct ceph_cap_flush *prealloc_cf;
 	loff_t isize = i_size_read(inode);
 	int issued;
@@ -2741,7 +2741,7 @@ int ceph_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
 		 struct iattr *attr)
 {
 	struct inode *inode = d_inode(dentry);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	int err;
 
 	if (ceph_snap(inode) != CEPH_NOSNAP)
@@ -2811,7 +2811,7 @@ int ceph_try_to_choose_auth_mds(struct inode *inode, int mask)
 int __ceph_do_getattr(struct inode *inode, struct page *locked_page,
 		      int mask, bool force)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	struct ceph_mds_request *req;
 	int mode;
@@ -2857,7 +2857,7 @@ int __ceph_do_getattr(struct inode *inode, struct page *locked_page,
 int ceph_do_getvxattr(struct inode *inode, const char *name, void *value,
 		      size_t size)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	struct ceph_mds_request *req;
 	int mode = USE_AUTH_MDS;
@@ -3002,7 +3002,7 @@ int ceph_getattr(struct mnt_idmap *idmap, const struct path *path,
 		stat->dev = ci->i_snapid_map ? ci->i_snapid_map->dev : 0;
 
 	if (S_ISDIR(inode->i_mode)) {
-		if (ceph_test_mount_opt(ceph_sb_to_client(sb), RBYTES)) {
+		if (ceph_test_mount_opt(ceph_sb_to_fs_client(sb), RBYTES)) {
 			stat->size = ci->i_rbytes;
 		} else if (ceph_snap(inode) == CEPH_SNAPDIR) {
 			struct ceph_inode_info *pci;
diff --git a/fs/ceph/ioctl.c b/fs/ceph/ioctl.c
index 679402bd80ba..64d8e34d9f7e 100644
--- a/fs/ceph/ioctl.c
+++ b/fs/ceph/ioctl.c
@@ -65,7 +65,7 @@ static long __validate_layout(struct ceph_mds_client *mdsc,
 static long ceph_ioctl_set_layout(struct file *file, void __user *arg)
 {
 	struct inode *inode = file_inode(file);
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	struct ceph_mds_request *req;
 	struct ceph_ioctl_layout l;
 	struct ceph_inode_info *ci = ceph_inode(file_inode(file));
@@ -140,7 +140,7 @@ static long ceph_ioctl_set_layout_policy (struct file *file, void __user *arg)
 	struct ceph_mds_request *req;
 	struct ceph_ioctl_layout l;
 	int err;
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 
 	/* copy and validate */
 	if (copy_from_user(&l, arg, sizeof(l)))
@@ -183,7 +183,7 @@ static long ceph_ioctl_get_dataloc(struct file *file, void __user *arg)
 	struct inode *inode = file_inode(file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_osd_client *osdc =
-		&ceph_sb_to_client(inode->i_sb)->client->osdc;
+		&ceph_sb_to_fs_client(inode->i_sb)->client->osdc;
 	struct ceph_object_locator oloc;
 	CEPH_DEFINE_OID_ONSTACK(oid);
 	u32 xlen;
@@ -244,7 +244,7 @@ static long ceph_ioctl_lazyio(struct file *file)
 	struct ceph_file_info *fi = file->private_data;
 	struct inode *inode = file_inode(file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 
 	if ((fi->fmode & CEPH_FILE_MODE_LAZY) == 0) {
 		spin_lock(&ci->i_ceph_lock);
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index b9c7b6c60357..a730bd98a4d2 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -829,7 +829,7 @@ static void destroy_reply_info(struct ceph_mds_reply_info_parsed *info)
  */
 int ceph_wait_on_conflict_unlink(struct dentry *dentry)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
 	struct dentry *pdentry = dentry->d_parent;
 	struct dentry *udentry, *found = NULL;
 	struct ceph_dentry_info *di;
diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
index 5bd47829a005..09939ec0d1ee 100644
--- a/fs/ceph/snap.c
+++ b/fs/ceph/snap.c
@@ -963,7 +963,7 @@ static void flush_snaps(struct ceph_mds_client *mdsc)
 void ceph_change_snap_realm(struct inode *inode, struct ceph_snap_realm *realm)
 {
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
 	struct ceph_snap_realm *oldrealm = ci->i_snap_realm;
 
 	lockdep_assert_held(&ci->i_ceph_lock);
diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index 070b3150d267..e0c9ed100767 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -44,7 +44,7 @@ static LIST_HEAD(ceph_fsc_list);
  */
 static void ceph_put_super(struct super_block *s)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(s);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(s);
 
 	dout("put_super\n");
 	ceph_fscrypt_free_dummy_policy(fsc);
@@ -53,7 +53,7 @@ static void ceph_put_super(struct super_block *s)
 
 static int ceph_statfs(struct dentry *dentry, struct kstatfs *buf)
 {
-	struct ceph_fs_client *fsc = ceph_inode_to_client(d_inode(dentry));
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(d_inode(dentry));
 	struct ceph_mon_client *monc = &fsc->client->monc;
 	struct ceph_statfs st;
 	int i, err;
@@ -118,7 +118,7 @@ static int ceph_statfs(struct dentry *dentry, struct kstatfs *buf)
 
 static int ceph_sync_fs(struct super_block *sb, int wait)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
 
 	if (!wait) {
 		dout("sync_fs (non-blocking)\n");
@@ -695,7 +695,7 @@ static int compare_mount_options(struct ceph_mount_options *new_fsopt,
  */
 static int ceph_show_options(struct seq_file *m, struct dentry *root)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(root->d_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(root->d_sb);
 	struct ceph_mount_options *fsopt = fsc->mount_options;
 	size_t pos;
 	int ret;
@@ -1026,7 +1026,7 @@ static void __ceph_umount_begin(struct ceph_fs_client *fsc)
  */
 void ceph_umount_begin(struct super_block *sb)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
 
 	dout("ceph_umount_begin - starting forced umount\n");
 	if (!fsc)
@@ -1236,7 +1236,7 @@ static int ceph_compare_super(struct super_block *sb, struct fs_context *fc)
 	struct ceph_fs_client *new = fc->s_fs_info;
 	struct ceph_mount_options *fsopt = new->mount_options;
 	struct ceph_options *opt = new->client->options;
-	struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
 
 	dout("ceph_compare_super %p\n", sb);
 
@@ -1332,9 +1332,9 @@ static int ceph_get_tree(struct fs_context *fc)
 		goto out;
 	}
 
-	if (ceph_sb_to_client(sb) != fsc) {
+	if (ceph_sb_to_fs_client(sb) != fsc) {
 		destroy_fs_client(fsc);
-		fsc = ceph_sb_to_client(sb);
+		fsc = ceph_sb_to_fs_client(sb);
 		dout("get_sb got existing client %p\n", fsc);
 	} else {
 		dout("get_sb using new client %p\n", fsc);
@@ -1387,7 +1387,7 @@ static int ceph_reconfigure_fc(struct fs_context *fc)
 	struct ceph_parse_opts_ctx *pctx = fc->fs_private;
 	struct ceph_mount_options *fsopt = pctx->opts;
 	struct super_block *sb = fc->root->d_sb;
-	struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
 
 	err = ceph_apply_test_dummy_encryption(sb, fc, fsopt);
 	if (err)
@@ -1526,7 +1526,7 @@ void ceph_dec_osd_stopping_blocker(struct ceph_mds_client *mdsc)
 
 static void ceph_kill_sb(struct super_block *s)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(s);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(s);
 	struct ceph_mds_client *mdsc = fsc->mdsc;
 	bool wait;
 
@@ -1587,7 +1587,7 @@ MODULE_ALIAS_FS("ceph");
 
 int ceph_force_reconnect(struct super_block *sb)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
 	int err = 0;
 
 	fsc->mount_state = CEPH_MOUNT_RECOVER;
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index ab5c0c703eae..9655ea46e6ca 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -490,13 +490,13 @@ ceph_inode(const struct inode *inode)
 }
 
 static inline struct ceph_fs_client *
-ceph_inode_to_client(const struct inode *inode)
+ceph_inode_to_fs_client(const struct inode *inode)
 {
 	return (struct ceph_fs_client *)inode->i_sb->s_fs_info;
 }
 
 static inline struct ceph_fs_client *
-ceph_sb_to_client(const struct super_block *sb)
+ceph_sb_to_fs_client(const struct super_block *sb)
 {
 	return (struct ceph_fs_client *)sb->s_fs_info;
 }
@@ -504,7 +504,7 @@ ceph_sb_to_client(const struct super_block *sb)
 static inline struct ceph_mds_client *
 ceph_sb_to_mdsc(const struct super_block *sb)
 {
-	return (struct ceph_mds_client *)ceph_sb_to_client(sb)->mdsc;
+	return (struct ceph_mds_client *)ceph_sb_to_fs_client(sb)->mdsc;
 }
 
 static inline struct ceph_vino
@@ -560,7 +560,7 @@ static inline u64 ceph_snap(struct inode *inode)
  */
 static inline u64 ceph_present_ino(struct super_block *sb, u64 ino)
 {
-	if (unlikely(ceph_test_mount_opt(ceph_sb_to_client(sb), INO32)))
+	if (unlikely(ceph_test_mount_opt(ceph_sb_to_fs_client(sb), INO32)))
 		return ceph_ino_to_ino32(ino);
 	return ino;
 }
@@ -1106,7 +1106,7 @@ void ceph_inode_shutdown(struct inode *inode);
 static inline bool ceph_inode_is_shutdown(struct inode *inode)
 {
 	unsigned long flags = READ_ONCE(ceph_inode(inode)->i_ceph_flags);
-	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
+	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
 	int state = READ_ONCE(fsc->mount_state);
 
 	return (flags & CEPH_I_SHUTDOWN) || state >= CEPH_MOUNT_SHUTDOWN;
diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c
index 76680e5c2f82..e30ae1032e13 100644
--- a/fs/ceph/xattr.c
+++ b/fs/ceph/xattr.c
@@ -57,7 +57,7 @@ static bool ceph_vxattrcb_layout_exists(struct ceph_inode_info *ci)
 static ssize_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val,
 				    size_t size)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
 	struct ceph_osd_client *osdc = &fsc->client->osdc;
 	struct ceph_string *pool_ns;
 	s64 pool = ci->i_layout.pool_id;
@@ -161,7 +161,7 @@ static ssize_t ceph_vxattrcb_layout_pool(struct ceph_inode_info *ci,
 					 char *val, size_t size)
 {
 	ssize_t ret;
-	struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
 	struct ceph_osd_client *osdc = &fsc->client->osdc;
 	s64 pool = ci->i_layout.pool_id;
 	const char *pool_name;
@@ -313,7 +313,7 @@ static ssize_t ceph_vxattrcb_snap_btime(struct ceph_inode_info *ci, char *val,
 static ssize_t ceph_vxattrcb_cluster_fsid(struct ceph_inode_info *ci,
 					  char *val, size_t size)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
 
 	return ceph_fmt_xattr(val, size, "%pU", &fsc->client->fsid);
 }
@@ -321,7 +321,7 @@ static ssize_t ceph_vxattrcb_cluster_fsid(struct ceph_inode_info *ci,
 static ssize_t ceph_vxattrcb_client_id(struct ceph_inode_info *ci,
 				       char *val, size_t size)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
 
 	return ceph_fmt_xattr(val, size, "client%lld",
 			      ceph_client_gid(fsc->client));
@@ -1093,7 +1093,7 @@ ssize_t ceph_listxattr(struct dentry *dentry, char *names, size_t size)
 static int ceph_sync_setxattr(struct inode *inode, const char *name,
 			      const char *value, size_t size, int flags)
 {
-	struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
+	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_mds_request *req;
 	struct ceph_mds_client *mdsc = fsc->mdsc;
@@ -1163,7 +1163,7 @@ int __ceph_setxattr(struct inode *inode, const char *name,
 {
 	struct ceph_vxattr *vxattr;
 	struct ceph_inode_info *ci = ceph_inode(inode);
-	struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
+	struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
 	struct ceph_cap_flush *prealloc_cf = NULL;
 	struct ceph_buffer *old_blob = NULL;
 	int issued;
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 4/6] ceph: move mdsmap.h to fs/ceph/
  2023-06-19  7:14 [PATCH v4 0/6] ceph: print the client global id for debug logs xiubli
                   ` (2 preceding siblings ...)
  2023-06-19  7:14 ` [PATCH v4 3/6] ceph: rename _to_client() to _to_fs_client() xiubli
@ 2023-06-19  7:14 ` xiubli
  2023-09-04  9:29   ` Milind Changire
  2023-06-19  7:14 ` [PATCH v4 5/6] ceph: add ceph_inode_to_client() helper support xiubli
  2023-06-19  7:20 ` [PATCH v4 0/6] ceph: print the client global id for debug logs Xiubo Li
  5 siblings, 1 reply; 12+ messages in thread
From: xiubli @ 2023-06-19  7:14 UTC (permalink / raw)
  To: idryomov, ceph-devel
  Cc: jlayton, vshankar, mchangir, Xiubo Li, Patrick Donnelly

From: Xiubo Li <xiubli@redhat.com>

The mdsmap.h is only used by the kcephfs and move it to fs/ceph/

URL: https://tracker.ceph.com/issues/61590
Cc: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Signed-off-by: Xiubo Li <xiubli@redhat.com>
---
 fs/ceph/mds_client.h                | 2 +-
 fs/ceph/mdsmap.c                    | 2 +-
 {include/linux => fs}/ceph/mdsmap.h | 0
 3 files changed, 2 insertions(+), 2 deletions(-)
 rename {include/linux => fs}/ceph/mdsmap.h (100%)

diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h
index 20bcf8d5322e..5d02c8c582fd 100644
--- a/fs/ceph/mds_client.h
+++ b/fs/ceph/mds_client.h
@@ -14,9 +14,9 @@
 
 #include <linux/ceph/types.h>
 #include <linux/ceph/messenger.h>
-#include <linux/ceph/mdsmap.h>
 #include <linux/ceph/auth.h>
 
+#include "mdsmap.h"
 #include "metric.h"
 #include "super.h"
 
diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
index 6cbec7aed5a0..d1bc81eecc18 100644
--- a/fs/ceph/mdsmap.c
+++ b/fs/ceph/mdsmap.c
@@ -7,11 +7,11 @@
 #include <linux/slab.h>
 #include <linux/types.h>
 
-#include <linux/ceph/mdsmap.h>
 #include <linux/ceph/messenger.h>
 #include <linux/ceph/decode.h>
 
 #include "super.h"
+#include "mdsmap.h"
 
 #define CEPH_MDS_IS_READY(i, ignore_laggy) \
 	(m->m_info[i].state > 0 && ignore_laggy ? true : !m->m_info[i].laggy)
diff --git a/include/linux/ceph/mdsmap.h b/fs/ceph/mdsmap.h
similarity index 100%
rename from include/linux/ceph/mdsmap.h
rename to fs/ceph/mdsmap.h
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 5/6] ceph: add ceph_inode_to_client() helper support
  2023-06-19  7:14 [PATCH v4 0/6] ceph: print the client global id for debug logs xiubli
                   ` (3 preceding siblings ...)
  2023-06-19  7:14 ` [PATCH v4 4/6] ceph: move mdsmap.h to fs/ceph/ xiubli
@ 2023-06-19  7:14 ` xiubli
  2023-09-04  9:30   ` Milind Changire
  2023-06-19  7:20 ` [PATCH v4 0/6] ceph: print the client global id for debug logs Xiubo Li
  5 siblings, 1 reply; 12+ messages in thread
From: xiubli @ 2023-06-19  7:14 UTC (permalink / raw)
  To: idryomov, ceph-devel
  Cc: jlayton, vshankar, mchangir, Xiubo Li, Patrick Donnelly

From: Xiubo Li <xiubli@redhat.com>

This will covert the inode to ceph_client.

URL: https://tracker.ceph.com/issues/61590
Cc: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Signed-off-by: Xiubo Li <xiubli@redhat.com>
---
 fs/ceph/snap.c  | 8 +++++---
 fs/ceph/super.h | 6 ++++++
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
index 09939ec0d1ee..9dde4b5f513d 100644
--- a/fs/ceph/snap.c
+++ b/fs/ceph/snap.c
@@ -329,7 +329,8 @@ static int cmpu64_rev(const void *a, const void *b)
 /*
  * build the snap context for a given realm.
  */
-static int build_snap_context(struct ceph_snap_realm *realm,
+static int build_snap_context(struct ceph_mds_client *mdsc,
+			      struct ceph_snap_realm *realm,
 			      struct list_head *realm_queue,
 			      struct list_head *dirty_realms)
 {
@@ -425,7 +426,8 @@ static int build_snap_context(struct ceph_snap_realm *realm,
 /*
  * rebuild snap context for the given realm and all of its children.
  */
-static void rebuild_snap_realms(struct ceph_snap_realm *realm,
+static void rebuild_snap_realms(struct ceph_mds_client *mdsc,
+				struct ceph_snap_realm *realm,
 				struct list_head *dirty_realms)
 {
 	LIST_HEAD(realm_queue);
@@ -858,7 +860,7 @@ int ceph_update_snap_trace(struct ceph_mds_client *mdsc,
 
 	/* rebuild_snapcs when we reach the _end_ (root) of the trace */
 	if (realm_to_rebuild && p >= e)
-		rebuild_snap_realms(realm_to_rebuild, &dirty_realms);
+		rebuild_snap_realms(mdsc, realm_to_rebuild, &dirty_realms);
 
 	if (!first_realm)
 		first_realm = realm;
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 9655ea46e6ca..4e78de1be23e 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -507,6 +507,12 @@ ceph_sb_to_mdsc(const struct super_block *sb)
 	return (struct ceph_mds_client *)ceph_sb_to_fs_client(sb)->mdsc;
 }
 
+static inline struct ceph_client *
+ceph_inode_to_client(const struct inode *inode)
+{
+	return (struct ceph_client *)ceph_inode_to_fs_client(inode)->client;
+}
+
 static inline struct ceph_vino
 ceph_vino(const struct inode *inode)
 {
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 0/6] ceph: print the client global id for debug logs
  2023-06-19  7:14 [PATCH v4 0/6] ceph: print the client global id for debug logs xiubli
                   ` (4 preceding siblings ...)
  2023-06-19  7:14 ` [PATCH v4 5/6] ceph: add ceph_inode_to_client() helper support xiubli
@ 2023-06-19  7:20 ` Xiubo Li
  5 siblings, 0 replies; 12+ messages in thread
From: Xiubo Li @ 2023-06-19  7:20 UTC (permalink / raw)
  To: idryomov, ceph-devel; +Cc: jlayton, vshankar, mchangir


On 6/19/23 15:14, xiubli@redhat.com wrote:
> From: Xiubo Li <xiubli@redhat.com>
>
> V4:
> - s/dout_client()/doutc()/
> - Fixed the building errors reported by ceph: print the client global id
> for debug logs. Thanks.

Sorry, it's reported by "kernel test robot <lkp@intel.com>".

- Xiubo

>
> Xiubo Li (6):
>    ceph: add the *_client debug macros support
>    ceph: pass the mdsc to several helpers
>    ceph: rename _to_client() to _to_fs_client()
>    ceph: move mdsmap.h to fs/ceph/
>    ceph: add ceph_inode_to_client() helper support
>    ceph: print the client global_id in all the debug logs
>
>   fs/ceph/acl.c                       |   6 +-
>   fs/ceph/addr.c                      | 298 ++++++-----
>   fs/ceph/cache.c                     |   2 +-
>   fs/ceph/caps.c                      | 774 ++++++++++++++++------------
>   fs/ceph/crypto.c                    |  41 +-
>   fs/ceph/debugfs.c                   |  10 +-
>   fs/ceph/dir.c                       | 237 +++++----
>   fs/ceph/export.c                    |  49 +-
>   fs/ceph/file.c                      | 270 +++++-----
>   fs/ceph/inode.c                     | 521 ++++++++++---------
>   fs/ceph/ioctl.c                     |  21 +-
>   fs/ceph/locks.c                     |  57 +-
>   fs/ceph/mds_client.c                | 624 ++++++++++++----------
>   fs/ceph/mds_client.h                |   5 +-
>   fs/ceph/mdsmap.c                    |  29 +-
>   {include/linux => fs}/ceph/mdsmap.h |   5 +-
>   fs/ceph/metric.c                    |   5 +-
>   fs/ceph/quota.c                     |  29 +-
>   fs/ceph/snap.c                      | 192 +++----
>   fs/ceph/super.c                     |  92 ++--
>   fs/ceph/super.h                     |  19 +-
>   fs/ceph/xattr.c                     | 108 ++--
>   include/linux/ceph/ceph_debug.h     |  48 +-
>   23 files changed, 1976 insertions(+), 1466 deletions(-)
>   rename {include/linux => fs}/ceph/mdsmap.h (92%)
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 1/6] ceph: add the *_client debug macros support
  2023-06-19  7:14 ` [PATCH v4 1/6] ceph: add the *_client debug macros support xiubli
@ 2023-09-04  9:27   ` Milind Changire
  0 siblings, 0 replies; 12+ messages in thread
From: Milind Changire @ 2023-09-04  9:27 UTC (permalink / raw)
  To: xiubli; +Cc: idryomov, ceph-devel, jlayton, vshankar, Patrick Donnelly

Looks good to me.

Tested-by: Milind Changire <mchangir@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Milind Changire <mchangir@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>

On Mon, Jun 19, 2023 at 12:47 PM <xiubli@redhat.com> wrote:
>
> From: Xiubo Li <xiubli@redhat.com>
>
> This will help print the fsid and client's global_id in debug logs,
> and also print the function names.
>
> URL: https://tracker.ceph.com/issues/61590
> Cc: Patrick Donnelly <pdonnell@redhat.com>
> Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
> Signed-off-by: Xiubo Li <xiubli@redhat.com>
> ---
>  include/linux/ceph/ceph_debug.h | 48 ++++++++++++++++++++++++++++++++-
>  1 file changed, 47 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/ceph/ceph_debug.h b/include/linux/ceph/ceph_debug.h
> index d5a5da838caf..0b5f210ca977 100644
> --- a/include/linux/ceph/ceph_debug.h
> +++ b/include/linux/ceph/ceph_debug.h
> @@ -19,12 +19,26 @@
>         pr_debug("%.*s %12.12s:%-4d : " fmt,                            \
>                  8 - (int)sizeof(KBUILD_MODNAME), "    ",               \
>                  kbasename(__FILE__), __LINE__, ##__VA_ARGS__)
> +#  define doutc(client, fmt, ...)                                      \
> +       pr_debug("%.*s %12.12s:%-4d : [%pU %lld] " fmt,                 \
> +                8 - (int)sizeof(KBUILD_MODNAME), "    ",               \
> +                kbasename(__FILE__), __LINE__,                         \
> +                &client->fsid, client->monc.auth->global_id,           \
> +                ##__VA_ARGS__)
>  # else
>  /* faux printk call just to see any compiler warnings. */
>  #  define dout(fmt, ...)       do {                            \
>                 if (0)                                          \
>                         printk(KERN_DEBUG fmt, ##__VA_ARGS__);  \
>         } while (0)
> +#  define doutc(client, fmt, ...)      do {                    \
> +               if (0)                                          \
> +                       printk(KERN_DEBUG "[%pU %lld] " fmt,    \
> +                       &client->fsid,                          \
> +                       client->monc.auth->global_id,           \
> +                       ##__VA_ARGS__);                         \
> +               } while (0)
> +
>  # endif
>
>  #else
> @@ -33,7 +47,39 @@
>   * or, just wrap pr_debug
>   */
>  # define dout(fmt, ...)        pr_debug(" " fmt, ##__VA_ARGS__)
> -
> +# define doutc(client, fmt, ...)                                       \
> +       pr_debug("[%pU %lld] %s: " fmt, &client->fsid,                  \
> +                client->monc.auth->global_id, __func__,                \
> +                ##__VA_ARGS__)
>  #endif
>
> +# define pr_notice_client(client, fmt, ...)                            \
> +       pr_notice("[%pU %lld] %s: " fmt, &client->fsid,                 \
> +                 client->monc.auth->global_id, __func__,               \
> +                 ##__VA_ARGS__)
> +# define pr_info_client(client, fmt, ...)                              \
> +       pr_info("[%pU %lld] %s: " fmt, &client->fsid,                   \
> +               client->monc.auth->global_id, __func__,                 \
> +               ##__VA_ARGS__)
> +# define pr_warn_client(client, fmt, ...)                              \
> +       pr_warn("[%pU %lld] %s: " fmt, &client->fsid,                   \
> +               client->monc.auth->global_id, __func__,                 \
> +               ##__VA_ARGS__)
> +# define pr_warn_once_client(client, fmt, ...)                         \
> +       pr_warn_once("[%pU %lld] %s: " fmt, &client->fsid,              \
> +                    client->monc.auth->global_id, __func__,            \
> +                    ##__VA_ARGS__)
> +# define pr_err_client(client, fmt, ...)                               \
> +       pr_err("[%pU %lld] %s: " fmt, &client->fsid,                    \
> +              client->monc.auth->global_id, __func__,                  \
> +              ##__VA_ARGS__)
> +# define pr_warn_ratelimited_client(client, fmt, ...)                  \
> +       pr_warn_ratelimited("[%pU %lld] %s: " fmt, &client->fsid,       \
> +                           client->monc.auth->global_id, __func__,     \
> +                           ##__VA_ARGS__)
> +# define pr_err_ratelimited_client(client, fmt, ...)                   \
> +       pr_err_ratelimited("[%pU %lld] %s: " fmt, &client->fsid,        \
> +                          client->monc.auth->global_id, __func__,      \
> +                          ##__VA_ARGS__)
> +
>  #endif
> --
> 2.40.1
>


-- 
Milind


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 2/6] ceph: pass the mdsc to several helpers
  2023-06-19  7:14 ` [PATCH v4 2/6] ceph: pass the mdsc to several helpers xiubli
@ 2023-09-04  9:28   ` Milind Changire
  0 siblings, 0 replies; 12+ messages in thread
From: Milind Changire @ 2023-09-04  9:28 UTC (permalink / raw)
  To: xiubli; +Cc: idryomov, ceph-devel, jlayton, vshankar, Patrick Donnelly

Looks good to me.

Tested-by: Milind Changire <mchangir@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Milind Changire <mchangir@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>

On Mon, Jun 19, 2023 at 12:47 PM <xiubli@redhat.com> wrote:
>
> From: Xiubo Li <xiubli@redhat.com>
>
> We will use the 'mdsc' to get the global_id in the following commits.
>
> URL: https://tracker.ceph.com/issues/61590
> Cc: Patrick Donnelly <pdonnell@redhat.com>
> Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
> Signed-off-by: Xiubo Li <xiubli@redhat.com>
> ---
>  fs/ceph/caps.c              | 15 +++++++++------
>  fs/ceph/debugfs.c           |  4 ++--
>  fs/ceph/dir.c               |  2 +-
>  fs/ceph/file.c              |  2 +-
>  fs/ceph/mds_client.c        | 37 +++++++++++++++++++++----------------
>  fs/ceph/mds_client.h        |  3 ++-
>  fs/ceph/mdsmap.c            |  3 ++-
>  fs/ceph/snap.c              |  8 +++++---
>  fs/ceph/super.h             |  3 ++-
>  include/linux/ceph/mdsmap.h |  5 ++++-
>  10 files changed, 49 insertions(+), 33 deletions(-)
>
> diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
> index 59ab5d905ac4..99e805144935 100644
> --- a/fs/ceph/caps.c
> +++ b/fs/ceph/caps.c
> @@ -1178,7 +1178,8 @@ void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release)
>         }
>  }
>
> -void ceph_remove_cap(struct ceph_cap *cap, bool queue_release)
> +void ceph_remove_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap,
> +                    bool queue_release)
>  {
>         struct ceph_inode_info *ci = cap->ci;
>         struct ceph_fs_client *fsc;
> @@ -1341,6 +1342,8 @@ static void encode_cap_msg(struct ceph_msg *msg, struct cap_msg_args *arg)
>   */
>  void __ceph_remove_caps(struct ceph_inode_info *ci)
>  {
> +       struct inode *inode = &ci->netfs.inode;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
>         struct rb_node *p;
>
>         /* lock i_ceph_lock, because ceph_d_revalidate(..., LOOKUP_RCU)
> @@ -1350,7 +1353,7 @@ void __ceph_remove_caps(struct ceph_inode_info *ci)
>         while (p) {
>                 struct ceph_cap *cap = rb_entry(p, struct ceph_cap, ci_node);
>                 p = rb_next(p);
> -               ceph_remove_cap(cap, true);
> +               ceph_remove_cap(mdsc, cap, true);
>         }
>         spin_unlock(&ci->i_ceph_lock);
>  }
> @@ -3991,7 +3994,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
>                 goto out_unlock;
>
>         if (target < 0) {
> -               ceph_remove_cap(cap, false);
> +               ceph_remove_cap(mdsc, cap, false);
>                 goto out_unlock;
>         }
>
> @@ -4026,7 +4029,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
>                                 change_auth_cap_ses(ci, tcap->session);
>                         }
>                 }
> -               ceph_remove_cap(cap, false);
> +               ceph_remove_cap(mdsc, cap, false);
>                 goto out_unlock;
>         } else if (tsession) {
>                 /* add placeholder for the export tagert */
> @@ -4043,7 +4046,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
>                         spin_unlock(&mdsc->cap_dirty_lock);
>                 }
>
> -               ceph_remove_cap(cap, false);
> +               ceph_remove_cap(mdsc, cap, false);
>                 goto out_unlock;
>         }
>
> @@ -4156,7 +4159,7 @@ static void handle_cap_import(struct ceph_mds_client *mdsc,
>                                         ocap->mseq, mds, le32_to_cpu(ph->seq),
>                                         le32_to_cpu(ph->mseq));
>                 }
> -               ceph_remove_cap(ocap, (ph->flags & CEPH_CAP_FLAG_RELEASE));
> +               ceph_remove_cap(mdsc, ocap, (ph->flags & CEPH_CAP_FLAG_RELEASE));
>         }
>
>         *old_issued = issued;
> diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
> index 3904333fa6c3..2f1e7498cd74 100644
> --- a/fs/ceph/debugfs.c
> +++ b/fs/ceph/debugfs.c
> @@ -81,7 +81,7 @@ static int mdsc_show(struct seq_file *s, void *p)
>                 if (req->r_inode) {
>                         seq_printf(s, " #%llx", ceph_ino(req->r_inode));
>                 } else if (req->r_dentry) {
> -                       path = ceph_mdsc_build_path(req->r_dentry, &pathlen,
> +                       path = ceph_mdsc_build_path(mdsc, req->r_dentry, &pathlen,
>                                                     &pathbase, 0);
>                         if (IS_ERR(path))
>                                 path = NULL;
> @@ -100,7 +100,7 @@ static int mdsc_show(struct seq_file *s, void *p)
>                 }
>
>                 if (req->r_old_dentry) {
> -                       path = ceph_mdsc_build_path(req->r_old_dentry, &pathlen,
> +                       path = ceph_mdsc_build_path(mdsc, req->r_old_dentry, &pathlen,
>                                                     &pathbase, 0);
>                         if (IS_ERR(path))
>                                 path = NULL;
> diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
> index 1b46f2b998c3..5fbcd0d5e5ec 100644
> --- a/fs/ceph/dir.c
> +++ b/fs/ceph/dir.c
> @@ -1219,7 +1219,7 @@ static void ceph_async_unlink_cb(struct ceph_mds_client *mdsc,
>         if (result) {
>                 int pathlen = 0;
>                 u64 base = 0;
> -               char *path = ceph_mdsc_build_path(dentry, &pathlen,
> +               char *path = ceph_mdsc_build_path(mdsc, dentry, &pathlen,
>                                                   &base, 0);
>
>                 /* mark error on parent + clear complete */
> diff --git a/fs/ceph/file.c b/fs/ceph/file.c
> index e878a462c7c3..04bc4cc8ad9b 100644
> --- a/fs/ceph/file.c
> +++ b/fs/ceph/file.c
> @@ -574,7 +574,7 @@ static void ceph_async_create_cb(struct ceph_mds_client *mdsc,
>         if (result) {
>                 int pathlen = 0;
>                 u64 base = 0;
> -               char *path = ceph_mdsc_build_path(req->r_dentry, &pathlen,
> +               char *path = ceph_mdsc_build_path(mdsc, req->r_dentry, &pathlen,
>                                                   &base, 0);
>
>                 pr_warn("async create failure path=(%llx)%s result=%d!\n",
> diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
> index 0a70a2438cb2..b9c7b6c60357 100644
> --- a/fs/ceph/mds_client.c
> +++ b/fs/ceph/mds_client.c
> @@ -2125,6 +2125,7 @@ static bool drop_negative_children(struct dentry *dentry)
>   */
>  static int trim_caps_cb(struct inode *inode, int mds, void *arg)
>  {
> +       struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb);
>         int *remaining = arg;
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         int used, wanted, oissued, mine;
> @@ -2172,7 +2173,7 @@ static int trim_caps_cb(struct inode *inode, int mds, void *arg)
>
>         if (oissued) {
>                 /* we aren't the only cap.. just remove us */
> -               ceph_remove_cap(cap, true);
> +               ceph_remove_cap(mdsc, cap, true);
>                 (*remaining)--;
>         } else {
>                 struct dentry *dentry;
> @@ -2633,7 +2634,8 @@ static u8 *get_fscrypt_altname(const struct ceph_mds_request *req, u32 *plen)
>   * Encode hidden .snap dirs as a double /, i.e.
>   *   foo/.snap/bar -> foo//bar
>   */
> -char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *pbase, int for_wire)
> +char *ceph_mdsc_build_path(struct ceph_mds_client *mdsc, struct dentry *dentry,
> +                          int *plen, u64 *pbase, int for_wire)
>  {
>         struct dentry *cur;
>         struct inode *inode;
> @@ -2748,9 +2750,9 @@ char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *pbase, int for
>         return path + pos;
>  }
>
> -static int build_dentry_path(struct dentry *dentry, struct inode *dir,
> -                            const char **ppath, int *ppathlen, u64 *pino,
> -                            bool *pfreepath, bool parent_locked)
> +static int build_dentry_path(struct ceph_mds_client *mdsc, struct dentry *dentry,
> +                            struct inode *dir, const char **ppath, int *ppathlen,
> +                            u64 *pino, bool *pfreepath, bool parent_locked)
>  {
>         char *path;
>
> @@ -2765,7 +2767,7 @@ static int build_dentry_path(struct dentry *dentry, struct inode *dir,
>                 return 0;
>         }
>         rcu_read_unlock();
> -       path = ceph_mdsc_build_path(dentry, ppathlen, pino, 1);
> +       path = ceph_mdsc_build_path(mdsc, dentry, ppathlen, pino, 1);
>         if (IS_ERR(path))
>                 return PTR_ERR(path);
>         *ppath = path;
> @@ -2777,6 +2779,7 @@ static int build_inode_path(struct inode *inode,
>                             const char **ppath, int *ppathlen, u64 *pino,
>                             bool *pfreepath)
>  {
> +       struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb);
>         struct dentry *dentry;
>         char *path;
>
> @@ -2786,7 +2789,7 @@ static int build_inode_path(struct inode *inode,
>                 return 0;
>         }
>         dentry = d_find_alias(inode);
> -       path = ceph_mdsc_build_path(dentry, ppathlen, pino, 1);
> +       path = ceph_mdsc_build_path(mdsc, dentry, ppathlen, pino, 1);
>         dput(dentry);
>         if (IS_ERR(path))
>                 return PTR_ERR(path);
> @@ -2799,10 +2802,11 @@ static int build_inode_path(struct inode *inode,
>   * request arguments may be specified via an inode *, a dentry *, or
>   * an explicit ino+path.
>   */
> -static int set_request_path_attr(struct inode *rinode, struct dentry *rdentry,
> -                                 struct inode *rdiri, const char *rpath,
> -                                 u64 rino, const char **ppath, int *pathlen,
> -                                 u64 *ino, bool *freepath, bool parent_locked)
> +static int set_request_path_attr(struct ceph_mds_client *mdsc, struct inode *rinode,
> +                                struct dentry *rdentry, struct inode *rdiri,
> +                                const char *rpath, u64 rino, const char **ppath,
> +                                int *pathlen, u64 *ino, bool *freepath,
> +                                bool parent_locked)
>  {
>         int r = 0;
>
> @@ -2811,7 +2815,7 @@ static int set_request_path_attr(struct inode *rinode, struct dentry *rdentry,
>                 dout(" inode %p %llx.%llx\n", rinode, ceph_ino(rinode),
>                      ceph_snap(rinode));
>         } else if (rdentry) {
> -               r = build_dentry_path(rdentry, rdiri, ppath, pathlen, ino,
> +               r = build_dentry_path(mdsc, rdentry, rdiri, ppath, pathlen, ino,
>                                         freepath, parent_locked);
>                 dout(" dentry %p %llx/%.*s\n", rdentry, *ino, *pathlen,
>                      *ppath);
> @@ -2883,7 +2887,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
>         int ret;
>         bool legacy = !(session->s_con.peer_features & CEPH_FEATURE_FS_BTIME);
>
> -       ret = set_request_path_attr(req->r_inode, req->r_dentry,
> +       ret = set_request_path_attr(mdsc, req->r_inode, req->r_dentry,
>                               req->r_parent, req->r_path1, req->r_ino1.ino,
>                               &path1, &pathlen1, &ino1, &freepath1,
>                               test_bit(CEPH_MDS_R_PARENT_LOCKED,
> @@ -2897,7 +2901,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
>         if (req->r_old_dentry &&
>             !(req->r_old_dentry->d_flags & DCACHE_DISCONNECTED))
>                 old_dentry = req->r_old_dentry;
> -       ret = set_request_path_attr(NULL, old_dentry,
> +       ret = set_request_path_attr(mdsc, NULL, old_dentry,
>                               req->r_old_dentry_dir,
>                               req->r_path2, req->r_ino2.ino,
>                               &path2, &pathlen2, &ino2, &freepath2, true);
> @@ -4288,6 +4292,7 @@ static struct dentry* d_find_primary(struct inode *inode)
>   */
>  static int reconnect_caps_cb(struct inode *inode, int mds, void *arg)
>  {
> +       struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb);
>         union {
>                 struct ceph_mds_cap_reconnect v2;
>                 struct ceph_mds_cap_reconnect_v1 v1;
> @@ -4305,7 +4310,7 @@ static int reconnect_caps_cb(struct inode *inode, int mds, void *arg)
>         dentry = d_find_primary(inode);
>         if (dentry) {
>                 /* set pathbase to parent dir when msg_version >= 2 */
> -               path = ceph_mdsc_build_path(dentry, &pathlen, &pathbase,
> +               path = ceph_mdsc_build_path(mdsc, dentry, &pathlen, &pathbase,
>                                             recon_state->msg_version >= 2);
>                 dput(dentry);
>                 if (IS_ERR(path)) {
> @@ -5660,7 +5665,7 @@ void ceph_mdsc_handle_mdsmap(struct ceph_mds_client *mdsc, struct ceph_msg *msg)
>                 return;
>         }
>
> -       newmap = ceph_mdsmap_decode(&p, end, ceph_msgr2(mdsc->fsc->client));
> +       newmap = ceph_mdsmap_decode(mdsc, &p, end, ceph_msgr2(mdsc->fsc->client));
>         if (IS_ERR(newmap)) {
>                 err = PTR_ERR(newmap);
>                 goto bad_unlock;
> diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h
> index 351d92f7fc4f..20bcf8d5322e 100644
> --- a/fs/ceph/mds_client.h
> +++ b/fs/ceph/mds_client.h
> @@ -578,7 +578,8 @@ static inline void ceph_mdsc_free_path(char *path, int len)
>                 __putname(path - (PATH_MAX - 1 - len));
>  }
>
> -extern char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *base,
> +extern char *ceph_mdsc_build_path(struct ceph_mds_client *mdsc,
> +                                 struct dentry *dentry, int *plen, u64 *base,
>                                   int stop_on_nosnap);
>
>  extern void __ceph_mdsc_drop_dentry_lease(struct dentry *dentry);
> diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
> index 7dac21ee6ce7..6cbec7aed5a0 100644
> --- a/fs/ceph/mdsmap.c
> +++ b/fs/ceph/mdsmap.c
> @@ -114,7 +114,8 @@ static int __decode_and_drop_compat_set(void **p, void* end)
>   * Ignore any fields we don't care about (there are quite a few of
>   * them).
>   */
> -struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end, bool msgr2)
> +struct ceph_mdsmap *ceph_mdsmap_decode(struct ceph_mds_client *mdsc, void **p,
> +                                      void *end, bool msgr2)
>  {
>         struct ceph_mdsmap *m;
>         const void *start = *p;
> diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
> index abd52f5b3b0a..5bd47829a005 100644
> --- a/fs/ceph/snap.c
> +++ b/fs/ceph/snap.c
> @@ -451,7 +451,8 @@ static void rebuild_snap_realms(struct ceph_snap_realm *realm,
>                         continue;
>                 }
>
> -               last = build_snap_context(_realm, &realm_queue, dirty_realms);
> +               last = build_snap_context(mdsc, _realm, &realm_queue,
> +                                         dirty_realms);
>                 dout("%s %llx %p, %s\n", __func__, _realm->ino, _realm,
>                      last > 0 ? "is deferred" : !last ? "succeeded" : "failed");
>
> @@ -709,7 +710,8 @@ int __ceph_finish_cap_snap(struct ceph_inode_info *ci,
>   * Queue cap_snaps for snap writeback for this realm and its children.
>   * Called under snap_rwsem, so realm topology won't change.
>   */
> -static void queue_realm_cap_snaps(struct ceph_snap_realm *realm)
> +static void queue_realm_cap_snaps(struct ceph_mds_client *mdsc,
> +                                 struct ceph_snap_realm *realm)
>  {
>         struct ceph_inode_info *ci;
>         struct inode *lastinode = NULL;
> @@ -874,7 +876,7 @@ int ceph_update_snap_trace(struct ceph_mds_client *mdsc,
>                 realm = list_first_entry(&dirty_realms, struct ceph_snap_realm,
>                                          dirty_item);
>                 list_del_init(&realm->dirty_item);
> -               queue_realm_cap_snaps(realm);
> +               queue_realm_cap_snaps(mdsc, realm);
>         }
>
>         if (realm_ret)
> diff --git a/fs/ceph/super.h b/fs/ceph/super.h
> index 107a9d16a4e8..ab5c0c703eae 100644
> --- a/fs/ceph/super.h
> +++ b/fs/ceph/super.h
> @@ -1223,7 +1223,8 @@ extern void ceph_add_cap(struct inode *inode,
>                          unsigned cap, unsigned seq, u64 realmino, int flags,
>                          struct ceph_cap **new_cap);
>  extern void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release);
> -extern void ceph_remove_cap(struct ceph_cap *cap, bool queue_release);
> +extern void ceph_remove_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap,
> +                           bool queue_release);
>  extern void __ceph_remove_caps(struct ceph_inode_info *ci);
>  extern void ceph_put_cap(struct ceph_mds_client *mdsc,
>                          struct ceph_cap *cap);
> diff --git a/include/linux/ceph/mdsmap.h b/include/linux/ceph/mdsmap.h
> index 4c3e0648dc27..89f1931f1ba6 100644
> --- a/include/linux/ceph/mdsmap.h
> +++ b/include/linux/ceph/mdsmap.h
> @@ -5,6 +5,8 @@
>  #include <linux/bug.h>
>  #include <linux/ceph/types.h>
>
> +struct ceph_mds_client;
> +
>  /*
>   * mds map - describe servers in the mds cluster.
>   *
> @@ -65,7 +67,8 @@ static inline bool ceph_mdsmap_is_laggy(struct ceph_mdsmap *m, int w)
>  }
>
>  extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m);
> -struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end, bool msgr2);
> +struct ceph_mdsmap *ceph_mdsmap_decode(struct ceph_mds_client *mdsc, void **p,
> +                                      void *end, bool msgr2);
>  extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m);
>  extern bool ceph_mdsmap_is_cluster_available(struct ceph_mdsmap *m);
>
> --
> 2.40.1
>


-- 
Milind


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 3/6] ceph: rename _to_client() to _to_fs_client()
  2023-06-19  7:14 ` [PATCH v4 3/6] ceph: rename _to_client() to _to_fs_client() xiubli
@ 2023-09-04  9:28   ` Milind Changire
  0 siblings, 0 replies; 12+ messages in thread
From: Milind Changire @ 2023-09-04  9:28 UTC (permalink / raw)
  To: xiubli; +Cc: idryomov, ceph-devel, jlayton, vshankar, Patrick Donnelly

Looks good to me.

Tested-by: Milind Changire <mchangir@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Milind Changire <mchangir@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>

On Mon, Jun 19, 2023 at 12:47 PM <xiubli@redhat.com> wrote:
>
> From: Xiubo Li <xiubli@redhat.com>
>
> We need to covert the inode to ceph_client in the following commit,
> and will add one new helper for that, here we rename the old helper
> to _fs_client().
>
> URL: https://tracker.ceph.com/issues/61590
> Cc: Patrick Donnelly <pdonnell@redhat.com>
> Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
> Signed-off-by: Xiubo Li <xiubli@redhat.com>
> ---
>  fs/ceph/addr.c       | 20 ++++++++++----------
>  fs/ceph/cache.c      |  2 +-
>  fs/ceph/caps.c       | 40 ++++++++++++++++++++--------------------
>  fs/ceph/crypto.c     |  2 +-
>  fs/ceph/dir.c        | 22 +++++++++++-----------
>  fs/ceph/export.c     | 10 +++++-----
>  fs/ceph/file.c       | 24 ++++++++++++------------
>  fs/ceph/inode.c      | 14 +++++++-------
>  fs/ceph/ioctl.c      |  8 ++++----
>  fs/ceph/mds_client.c |  2 +-
>  fs/ceph/snap.c       |  2 +-
>  fs/ceph/super.c      | 22 +++++++++++-----------
>  fs/ceph/super.h      | 10 +++++-----
>  fs/ceph/xattr.c      | 12 ++++++------
>  14 files changed, 95 insertions(+), 95 deletions(-)
>
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
> index de9b82905f18..e62318b3e13d 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -229,7 +229,7 @@ static void ceph_netfs_expand_readahead(struct netfs_io_request *rreq)
>  static bool ceph_netfs_clamp_length(struct netfs_io_subrequest *subreq)
>  {
>         struct inode *inode = subreq->rreq->inode;
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         u64 objno, objoff;
>         u32 xlen;
> @@ -244,7 +244,7 @@ static bool ceph_netfs_clamp_length(struct netfs_io_subrequest *subreq)
>  static void finish_netfs_read(struct ceph_osd_request *req)
>  {
>         struct inode *inode = req->r_inode;
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_osd_data *osd_data = osd_req_op_extent_osd_data(req, 0);
>         struct netfs_io_subrequest *subreq = req->r_priv;
>         struct ceph_osd_req_op *op = &req->r_ops[0];
> @@ -347,7 +347,7 @@ static void ceph_netfs_issue_read(struct netfs_io_subrequest *subreq)
>         struct netfs_io_request *rreq = subreq->rreq;
>         struct inode *inode = rreq->inode;
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_osd_request *req = NULL;
>         struct ceph_vino vino = ceph_vino(inode);
>         struct iov_iter iter;
> @@ -655,7 +655,7 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc)
>         struct folio *folio = page_folio(page);
>         struct inode *inode = page->mapping->host;
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_snap_context *snapc, *oldest;
>         loff_t page_off = page_offset(page);
>         int err;
> @@ -799,7 +799,7 @@ static int ceph_writepage(struct page *page, struct writeback_control *wbc)
>         ihold(inode);
>
>         if (wbc->sync_mode == WB_SYNC_NONE &&
> -           ceph_inode_to_client(inode)->write_congested)
> +           ceph_inode_to_fs_client(inode)->write_congested)
>                 return AOP_WRITEPAGE_ACTIVATE;
>
>         wait_on_page_fscache(page);
> @@ -832,7 +832,7 @@ static void writepages_finish(struct ceph_osd_request *req)
>         int rc = req->r_result;
>         struct ceph_snap_context *snapc = req->r_snapc;
>         struct address_space *mapping = inode->i_mapping;
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         unsigned int len = 0;
>         bool remove_page;
>
> @@ -922,7 +922,7 @@ static int ceph_writepages_start(struct address_space *mapping,
>  {
>         struct inode *inode = mapping->host;
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_vino vino = ceph_vino(inode);
>         pgoff_t index, start_index, end = -1;
>         struct ceph_snap_context *snapc = NULL, *last_snapc = NULL, *pgsnapc;
> @@ -1819,7 +1819,7 @@ int ceph_uninline_data(struct file *file)
>  {
>         struct inode *inode = file_inode(file);
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_osd_request *req = NULL;
>         struct ceph_cap_flush *prealloc_cf = NULL;
>         struct folio *folio = NULL;
> @@ -1973,7 +1973,7 @@ enum {
>  static int __ceph_pool_perm_get(struct ceph_inode_info *ci,
>                                 s64 pool, struct ceph_string *pool_ns)
>  {
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(&ci->netfs.inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(&ci->netfs.inode);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         struct ceph_osd_request *rd_req = NULL, *wr_req = NULL;
>         struct rb_node **p, *parent;
> @@ -2164,7 +2164,7 @@ int ceph_pool_perm_check(struct inode *inode, int need)
>                 return 0;
>         }
>
> -       if (ceph_test_mount_opt(ceph_inode_to_client(inode),
> +       if (ceph_test_mount_opt(ceph_inode_to_fs_client(inode),
>                                 NOPOOLPERM))
>                 return 0;
>
> diff --git a/fs/ceph/cache.c b/fs/ceph/cache.c
> index 177d8e8d73fe..fedb8108c9f5 100644
> --- a/fs/ceph/cache.c
> +++ b/fs/ceph/cache.c
> @@ -15,7 +15,7 @@
>  void ceph_fscache_register_inode_cookie(struct inode *inode)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>
>         /* No caching for filesystem? */
>         if (!fsc->fscache)
> diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
> index 99e805144935..4538c8280c70 100644
> --- a/fs/ceph/caps.c
> +++ b/fs/ceph/caps.c
> @@ -635,7 +635,7 @@ void ceph_add_cap(struct inode *inode,
>                   unsigned seq, unsigned mseq, u64 realmino, int flags,
>                   struct ceph_cap **new_cap)
>  {
> -       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         struct ceph_cap *cap;
>         int mds = session->s_mds;
> @@ -922,7 +922,7 @@ int __ceph_caps_issued_mask(struct ceph_inode_info *ci, int mask, int touch)
>  int __ceph_caps_issued_mask_metric(struct ceph_inode_info *ci, int mask,
>                                    int touch)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
>         int r;
>
>         r = __ceph_caps_issued_mask(ci, mask, touch);
> @@ -996,7 +996,7 @@ int __ceph_caps_file_wanted(struct ceph_inode_info *ci)
>         const int WR_SHIFT = ffs(CEPH_FILE_MODE_WR);
>         const int LAZY_SHIFT = ffs(CEPH_FILE_MODE_LAZY);
>         struct ceph_mount_options *opt =
> -               ceph_inode_to_client(&ci->netfs.inode)->mount_options;
> +               ceph_inode_to_fs_client(&ci->netfs.inode)->mount_options;
>         unsigned long used_cutoff = jiffies - opt->caps_wanted_delay_max * HZ;
>         unsigned long idle_cutoff = jiffies - opt->caps_wanted_delay_min * HZ;
>
> @@ -1121,7 +1121,7 @@ void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release)
>
>         dout("__ceph_remove_cap %p from %p\n", cap, &ci->netfs.inode);
>
> -       mdsc = ceph_inode_to_client(&ci->netfs.inode)->mdsc;
> +       mdsc = ceph_inode_to_fs_client(&ci->netfs.inode)->mdsc;
>
>         /* remove from inode's cap rbtree, and clear auth cap */
>         rb_erase(&cap->ci_node, &ci->i_caps);
> @@ -1192,7 +1192,7 @@ void ceph_remove_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap,
>
>         lockdep_assert_held(&ci->i_ceph_lock);
>
> -       fsc = ceph_inode_to_client(&ci->netfs.inode);
> +       fsc = ceph_inode_to_fs_client(&ci->netfs.inode);
>         WARN_ON_ONCE(ci->i_auth_cap == cap &&
>                      !list_empty(&ci->i_dirty_item) &&
>                      !fsc->blocklisted &&
> @@ -1343,7 +1343,7 @@ static void encode_cap_msg(struct ceph_msg *msg, struct cap_msg_args *arg)
>  void __ceph_remove_caps(struct ceph_inode_info *ci)
>  {
>         struct inode *inode = &ci->netfs.inode;
> -       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>         struct rb_node *p;
>
>         /* lock i_ceph_lock, because ceph_d_revalidate(..., LOOKUP_RCU)
> @@ -1685,7 +1685,7 @@ void ceph_flush_snaps(struct ceph_inode_info *ci,
>                       struct ceph_mds_session **psession)
>  {
>         struct inode *inode = &ci->netfs.inode;
> -       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>         struct ceph_mds_session *session = NULL;
>         bool need_put = false;
>         int mds;
> @@ -1750,7 +1750,7 @@ int __ceph_mark_dirty_caps(struct ceph_inode_info *ci, int mask,
>                            struct ceph_cap_flush **pcf)
>  {
>         struct ceph_mds_client *mdsc =
> -               ceph_sb_to_client(ci->netfs.inode.i_sb)->mdsc;
> +               ceph_sb_to_fs_client(ci->netfs.inode.i_sb)->mdsc;
>         struct inode *inode = &ci->netfs.inode;
>         int was = ci->i_dirty_caps;
>         int dirty = 0;
> @@ -1873,7 +1873,7 @@ static u64 __mark_caps_flushing(struct inode *inode,
>                                 struct ceph_mds_session *session, bool wake,
>                                 u64 *oldest_flush_tid)
>  {
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         struct ceph_cap_flush *cf = NULL;
>         int flushing;
> @@ -2233,7 +2233,7 @@ void ceph_check_caps(struct ceph_inode_info *ci, int flags)
>   */
>  static int try_flush_caps(struct inode *inode, u64 *ptid)
>  {
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         int flushing = 0;
>         u64 flush_tid = 0, oldest_flush_tid = 0;
> @@ -2311,7 +2311,7 @@ static int caps_are_flushed(struct inode *inode, u64 flush_tid)
>   */
>  static int flush_mdlog_and_wait_inode_unsafe_requests(struct inode *inode)
>  {
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         struct ceph_mds_request *req1 = NULL, *req2 = NULL;
>         int ret, err = 0;
> @@ -2494,7 +2494,7 @@ int ceph_write_inode(struct inode *inode, struct writeback_control *wbc)
>                                        caps_are_flushed(inode, flush_tid));
>         } else {
>                 struct ceph_mds_client *mdsc =
> -                       ceph_sb_to_client(inode->i_sb)->mdsc;
> +                       ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>
>                 spin_lock(&ci->i_ceph_lock);
>                 if (__ceph_caps_dirty(ci))
> @@ -2747,7 +2747,7 @@ static int try_get_cap_refs(struct inode *inode, int need, int want,
>                             loff_t endoff, int flags, int *got)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>         int ret = 0;
>         int have, implemented;
>         bool snap_rwsem_locked = false;
> @@ -2965,7 +2965,7 @@ int __ceph_get_caps(struct inode *inode, struct ceph_file_info *fi, int need,
>                     int want, loff_t endoff, int *got)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         int ret, _got, flags;
>
>         ret = ceph_pool_perm_check(inode, need);
> @@ -3717,7 +3717,7 @@ static void handle_cap_flush_ack(struct inode *inode, u64 flush_tid,
>         __releases(ci->i_ceph_lock)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         struct ceph_cap_flush *cf, *tmp_cf;
>         LIST_HEAD(to_remove);
>         unsigned seq = le32_to_cpu(m->seq);
> @@ -3827,7 +3827,7 @@ void __ceph_remove_capsnap(struct inode *inode, struct ceph_cap_snap *capsnap,
>                            bool *wake_ci, bool *wake_mdsc)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         bool ret;
>
>         lockdep_assert_held(&ci->i_ceph_lock);
> @@ -3871,7 +3871,7 @@ static void handle_cap_flushsnap_ack(struct inode *inode, u64 flush_tid,
>                                      struct ceph_mds_session *session)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         u64 follows = le64_to_cpu(m->snap_follows);
>         struct ceph_cap_snap *capsnap = NULL, *iter;
>         bool wake_ci = false;
> @@ -3964,7 +3964,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
>                               struct ceph_mds_cap_peer *ph,
>                               struct ceph_mds_session *session)
>  {
> -       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>         struct ceph_mds_session *tsession = NULL;
>         struct ceph_cap *cap, *tcap, *new_cap = NULL;
>         struct ceph_inode_info *ci = ceph_inode(inode);
> @@ -4672,7 +4672,7 @@ int ceph_drop_caps_for_unlink(struct inode *inode)
>
>                 if (__ceph_caps_dirty(ci)) {
>                         struct ceph_mds_client *mdsc =
> -                               ceph_inode_to_client(inode)->mdsc;
> +                               ceph_inode_to_fs_client(inode)->mdsc;
>                         __cap_delay_requeue_front(mdsc, ci);
>                 }
>         }
> @@ -4855,7 +4855,7 @@ static int remove_capsnaps(struct ceph_mds_client *mdsc, struct inode *inode)
>
>  int ceph_purge_inode_cap(struct inode *inode, struct ceph_cap *cap, bool *invalidate)
>  {
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         bool is_auth;
> diff --git a/fs/ceph/crypto.c b/fs/ceph/crypto.c
> index e72bab29d5e1..4b0e9c3a53c8 100644
> --- a/fs/ceph/crypto.c
> +++ b/fs/ceph/crypto.c
> @@ -128,7 +128,7 @@ static bool ceph_crypt_empty_dir(struct inode *inode)
>
>  static const union fscrypt_policy *ceph_get_dummy_policy(struct super_block *sb)
>  {
> -       return ceph_sb_to_client(sb)->fsc_dummy_enc_policy.policy;
> +       return ceph_sb_to_fs_client(sb)->fsc_dummy_enc_policy.policy;
>  }
>
>  static struct fscrypt_operations ceph_fscrypt_ops = {
> diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
> index 5fbcd0d5e5ec..69906b721992 100644
> --- a/fs/ceph/dir.c
> +++ b/fs/ceph/dir.c
> @@ -310,7 +310,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx)
>         struct ceph_dir_file_info *dfi = file->private_data;
>         struct inode *inode = file_inode(file);
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         int i;
>         int err;
> @@ -702,7 +702,7 @@ static loff_t ceph_dir_llseek(struct file *file, loff_t offset, int whence)
>  struct dentry *ceph_handle_snapdir(struct ceph_mds_request *req,
>                                    struct dentry *dentry)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
>         struct inode *parent = d_inode(dentry->d_parent); /* we hold i_rwsem */
>
>         /* .snap dir? */
> @@ -770,7 +770,7 @@ static bool is_root_ceph_dentry(struct inode *inode, struct dentry *dentry)
>  static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry,
>                                   unsigned int flags)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dir->i_sb);
>         struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(dir->i_sb);
>         struct ceph_mds_request *req;
>         int op;
> @@ -1192,7 +1192,7 @@ static void ceph_async_unlink_cb(struct ceph_mds_client *mdsc,
>                                  struct ceph_mds_request *req)
>  {
>         struct dentry *dentry = req->r_dentry;
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
>         struct ceph_dentry_info *di = ceph_dentry(dentry);
>         int result = req->r_err ? req->r_err :
>                         le32_to_cpu(req->r_reply_info.head->result);
> @@ -1283,7 +1283,7 @@ static int get_caps_for_async_unlink(struct inode *dir, struct dentry *dentry)
>   */
>  static int ceph_unlink(struct inode *dir, struct dentry *dentry)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dir->i_sb);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         struct inode *inode = d_inode(dentry);
>         struct ceph_mds_request *req;
> @@ -1461,7 +1461,7 @@ void __ceph_dentry_lease_touch(struct ceph_dentry_info *di)
>                 return;
>         }
>
> -       mdsc = ceph_sb_to_client(dn->d_sb)->mdsc;
> +       mdsc = ceph_sb_to_fs_client(dn->d_sb)->mdsc;
>         spin_lock(&mdsc->dentry_list_lock);
>         list_move_tail(&di->lease_list, &mdsc->dentry_leases);
>         spin_unlock(&mdsc->dentry_list_lock);
> @@ -1508,7 +1508,7 @@ void __ceph_dentry_dir_lease_touch(struct ceph_dentry_info *di)
>                 return;
>         }
>
> -       mdsc = ceph_sb_to_client(dn->d_sb)->mdsc;
> +       mdsc = ceph_sb_to_fs_client(dn->d_sb)->mdsc;
>         spin_lock(&mdsc->dentry_list_lock);
>         __dentry_dir_lease_touch(mdsc, di),
>         spin_unlock(&mdsc->dentry_list_lock);
> @@ -1522,7 +1522,7 @@ static void __dentry_lease_unlist(struct ceph_dentry_info *di)
>         if (list_empty(&di->lease_list))
>                 return;
>
> -       mdsc = ceph_sb_to_client(di->dentry->d_sb)->mdsc;
> +       mdsc = ceph_sb_to_fs_client(di->dentry->d_sb)->mdsc;
>         spin_lock(&mdsc->dentry_list_lock);
>         list_del_init(&di->lease_list);
>         spin_unlock(&mdsc->dentry_list_lock);
> @@ -1879,7 +1879,7 @@ static int ceph_d_revalidate(struct dentry *dentry, unsigned int flags)
>         dout("d_revalidate %p '%pd' inode %p offset 0x%llx nokey %d\n", dentry,
>              dentry, inode, ceph_dentry(dentry)->offset, !!(dentry->d_flags & DCACHE_NOKEY_NAME));
>
> -       mdsc = ceph_sb_to_client(dir->i_sb)->mdsc;
> +       mdsc = ceph_sb_to_fs_client(dir->i_sb)->mdsc;
>
>         /* always trust cached snapped dentries, snapdir dentry */
>         if (ceph_snap(dir) != CEPH_NOSNAP) {
> @@ -1986,7 +1986,7 @@ static int ceph_d_delete(const struct dentry *dentry)
>  static void ceph_d_release(struct dentry *dentry)
>  {
>         struct ceph_dentry_info *di = ceph_dentry(dentry);
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
>
>         dout("d_release %p\n", dentry);
>
> @@ -2055,7 +2055,7 @@ static ssize_t ceph_read_dir(struct file *file, char __user *buf, size_t size,
>         int left;
>         const int bufsize = 1024;
>
> -       if (!ceph_test_mount_opt(ceph_sb_to_client(inode->i_sb), DIRSTAT))
> +       if (!ceph_test_mount_opt(ceph_sb_to_fs_client(inode->i_sb), DIRSTAT))
>                 return -EISDIR;
>
>         if (!dfi->dir_info) {
> diff --git a/fs/ceph/export.c b/fs/ceph/export.c
> index 8559990a59a5..52c4daf2447d 100644
> --- a/fs/ceph/export.c
> +++ b/fs/ceph/export.c
> @@ -123,7 +123,7 @@ static int ceph_encode_fh(struct inode *inode, u32 *rawfh, int *max_len,
>
>  static struct inode *__lookup_inode(struct super_block *sb, u64 ino)
>  {
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(sb)->mdsc;
>         struct inode *inode;
>         struct ceph_vino vino;
>         int err;
> @@ -205,7 +205,7 @@ static struct dentry *__snapfh_to_dentry(struct super_block *sb,
>                                           struct ceph_nfs_snapfh *sfh,
>                                           bool want_parent)
>  {
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(sb)->mdsc;
>         struct ceph_mds_request *req;
>         struct inode *inode;
>         struct ceph_vino vino;
> @@ -317,7 +317,7 @@ static struct dentry *ceph_fh_to_dentry(struct super_block *sb,
>  static struct dentry *__get_parent(struct super_block *sb,
>                                    struct dentry *child, u64 ino)
>  {
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(sb)->mdsc;
>         struct ceph_mds_request *req;
>         struct inode *inode;
>         int mask;
> @@ -439,7 +439,7 @@ static int __get_snap_name(struct dentry *parent, char *name,
>  {
>         struct inode *inode = d_inode(child);
>         struct inode *dir = d_inode(parent);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_mds_request *req = NULL;
>         char *last_name = NULL;
>         unsigned next_offset = 2;
> @@ -544,7 +544,7 @@ static int ceph_get_name(struct dentry *parent, char *name,
>         if (ceph_snap(inode) != CEPH_NOSNAP)
>                 return __get_snap_name(parent, name, child);
>
> -       mdsc = ceph_inode_to_client(inode)->mdsc;
> +       mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>         req = ceph_mdsc_create_request(mdsc, CEPH_MDS_OP_LOOKUPNAME,
>                                        USE_ANY_MDS);
>         if (IS_ERR(req))
> diff --git a/fs/ceph/file.c b/fs/ceph/file.c
> index 04bc4cc8ad9b..344f0b6260bd 100644
> --- a/fs/ceph/file.c
> +++ b/fs/ceph/file.c
> @@ -200,7 +200,7 @@ static int ceph_init_file_info(struct inode *inode, struct file *file,
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         struct ceph_mount_options *opt =
> -               ceph_inode_to_client(&ci->netfs.inode)->mount_options;
> +               ceph_inode_to_fs_client(&ci->netfs.inode)->mount_options;
>         struct ceph_file_info *fi;
>         int ret;
>
> @@ -234,7 +234,7 @@ static int ceph_init_file_info(struct inode *inode, struct file *file,
>
>         spin_lock_init(&fi->rw_contexts_lock);
>         INIT_LIST_HEAD(&fi->rw_contexts);
> -       fi->filp_gen = READ_ONCE(ceph_inode_to_client(inode)->filp_gen);
> +       fi->filp_gen = READ_ONCE(ceph_inode_to_fs_client(inode)->filp_gen);
>
>         if ((file->f_mode & FMODE_WRITE) && ceph_has_inline_data(ci)) {
>                 ret = ceph_uninline_data(file);
> @@ -352,7 +352,7 @@ int ceph_renew_caps(struct inode *inode, int fmode)
>  int ceph_open(struct inode *inode, struct file *file)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         struct ceph_mds_request *req;
>         struct ceph_file_info *fi = file->private_data;
> @@ -730,7 +730,7 @@ static int ceph_finish_async_create(struct inode *dir, struct inode *inode,
>  int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
>                      struct file *file, unsigned flags, umode_t mode)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dir->i_sb);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         struct ceph_mds_request *req;
>         struct inode *new_inode = NULL;
> @@ -959,7 +959,7 @@ ssize_t __ceph_sync_read(struct inode *inode, loff_t *ki_pos,
>                          u64 *last_objver)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_osd_client *osdc = &fsc->client->osdc;
>         ssize_t ret;
>         u64 off = *ki_pos;
> @@ -1252,7 +1252,7 @@ static void ceph_aio_complete_req(struct ceph_osd_request *req)
>                 if (aio_work) {
>                         INIT_WORK(&aio_work->work, ceph_aio_retry_work);
>                         aio_work->req = req;
> -                       queue_work(ceph_inode_to_client(inode)->inode_wq,
> +                       queue_work(ceph_inode_to_fs_client(inode)->inode_wq,
>                                    &aio_work->work);
>                         return;
>                 }
> @@ -1382,7 +1382,7 @@ ceph_direct_read_write(struct kiocb *iocb, struct iov_iter *iter,
>         struct file *file = iocb->ki_filp;
>         struct inode *inode = file_inode(file);
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_client_metric *metric = &fsc->mdsc->metric;
>         struct ceph_vino vino;
>         struct ceph_osd_request *req;
> @@ -1606,7 +1606,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos,
>         struct file *file = iocb->ki_filp;
>         struct inode *inode = file_inode(file);
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_osd_client *osdc = &fsc->client->osdc;
>         struct ceph_osd_request *req;
>         struct page **pages;
> @@ -2159,7 +2159,7 @@ static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from)
>         struct ceph_file_info *fi = file->private_data;
>         struct inode *inode = file_inode(file);
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_osd_client *osdc = &fsc->client->osdc;
>         struct ceph_cap_flush *prealloc_cf;
>         ssize_t count, written = 0;
> @@ -2399,7 +2399,7 @@ static int ceph_zero_partial_object(struct inode *inode,
>                                     loff_t offset, loff_t *length)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_osd_request *req;
>         int ret = 0;
>         loff_t zero = 0;
> @@ -2782,7 +2782,7 @@ static ssize_t __ceph_copy_file_range(struct file *src_file, loff_t src_off,
>         struct ceph_inode_info *src_ci = ceph_inode(src_inode);
>         struct ceph_inode_info *dst_ci = ceph_inode(dst_inode);
>         struct ceph_cap_flush *prealloc_cf;
> -       struct ceph_fs_client *src_fsc = ceph_inode_to_client(src_inode);
> +       struct ceph_fs_client *src_fsc = ceph_inode_to_fs_client(src_inode);
>         loff_t size;
>         ssize_t ret = -EIO, bytes;
>         u64 src_objnum, dst_objnum, src_objoff, dst_objoff;
> @@ -2790,7 +2790,7 @@ static ssize_t __ceph_copy_file_range(struct file *src_file, loff_t src_off,
>         int src_got = 0, dst_got = 0, err, dirty;
>
>         if (src_inode->i_sb != dst_inode->i_sb) {
> -               struct ceph_fs_client *dst_fsc = ceph_inode_to_client(dst_inode);
> +               struct ceph_fs_client *dst_fsc = ceph_inode_to_fs_client(dst_inode);
>
>                 if (ceph_fsid_compare(&src_fsc->client->fsid,
>                                       &dst_fsc->client->fsid)) {
> diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
> index fe8adb9d67a6..c283ea632c51 100644
> --- a/fs/ceph/inode.c
> +++ b/fs/ceph/inode.c
> @@ -1497,7 +1497,7 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req)
>         struct ceph_mds_reply_info_parsed *rinfo = &req->r_reply_info;
>         struct inode *in = NULL;
>         struct ceph_vino tvino, dvino;
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
>         int err = 0;
>
>         dout("fill_trace %p is_dentry %d is_target %d\n", req,
> @@ -2087,7 +2087,7 @@ bool ceph_inode_set_size(struct inode *inode, loff_t size)
>
>  void ceph_queue_inode_work(struct inode *inode, int work_bit)
>  {
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         set_bit(work_bit, &ci->i_work_mask);
>
> @@ -2429,7 +2429,7 @@ int __ceph_setattr(struct inode *inode, struct iattr *attr, struct ceph_iattr *c
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         unsigned int ia_valid = attr->ia_valid;
>         struct ceph_mds_request *req;
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         struct ceph_cap_flush *prealloc_cf;
>         loff_t isize = i_size_read(inode);
>         int issued;
> @@ -2741,7 +2741,7 @@ int ceph_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
>                  struct iattr *attr)
>  {
>         struct inode *inode = d_inode(dentry);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         int err;
>
>         if (ceph_snap(inode) != CEPH_NOSNAP)
> @@ -2811,7 +2811,7 @@ int ceph_try_to_choose_auth_mds(struct inode *inode, int mask)
>  int __ceph_do_getattr(struct inode *inode, struct page *locked_page,
>                       int mask, bool force)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         struct ceph_mds_request *req;
>         int mode;
> @@ -2857,7 +2857,7 @@ int __ceph_do_getattr(struct inode *inode, struct page *locked_page,
>  int ceph_do_getvxattr(struct inode *inode, const char *name, void *value,
>                       size_t size)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         struct ceph_mds_request *req;
>         int mode = USE_AUTH_MDS;
> @@ -3002,7 +3002,7 @@ int ceph_getattr(struct mnt_idmap *idmap, const struct path *path,
>                 stat->dev = ci->i_snapid_map ? ci->i_snapid_map->dev : 0;
>
>         if (S_ISDIR(inode->i_mode)) {
> -               if (ceph_test_mount_opt(ceph_sb_to_client(sb), RBYTES)) {
> +               if (ceph_test_mount_opt(ceph_sb_to_fs_client(sb), RBYTES)) {
>                         stat->size = ci->i_rbytes;
>                 } else if (ceph_snap(inode) == CEPH_SNAPDIR) {
>                         struct ceph_inode_info *pci;
> diff --git a/fs/ceph/ioctl.c b/fs/ceph/ioctl.c
> index 679402bd80ba..64d8e34d9f7e 100644
> --- a/fs/ceph/ioctl.c
> +++ b/fs/ceph/ioctl.c
> @@ -65,7 +65,7 @@ static long __validate_layout(struct ceph_mds_client *mdsc,
>  static long ceph_ioctl_set_layout(struct file *file, void __user *arg)
>  {
>         struct inode *inode = file_inode(file);
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         struct ceph_mds_request *req;
>         struct ceph_ioctl_layout l;
>         struct ceph_inode_info *ci = ceph_inode(file_inode(file));
> @@ -140,7 +140,7 @@ static long ceph_ioctl_set_layout_policy (struct file *file, void __user *arg)
>         struct ceph_mds_request *req;
>         struct ceph_ioctl_layout l;
>         int err;
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>
>         /* copy and validate */
>         if (copy_from_user(&l, arg, sizeof(l)))
> @@ -183,7 +183,7 @@ static long ceph_ioctl_get_dataloc(struct file *file, void __user *arg)
>         struct inode *inode = file_inode(file);
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         struct ceph_osd_client *osdc =
> -               &ceph_sb_to_client(inode->i_sb)->client->osdc;
> +               &ceph_sb_to_fs_client(inode->i_sb)->client->osdc;
>         struct ceph_object_locator oloc;
>         CEPH_DEFINE_OID_ONSTACK(oid);
>         u32 xlen;
> @@ -244,7 +244,7 @@ static long ceph_ioctl_lazyio(struct file *file)
>         struct ceph_file_info *fi = file->private_data;
>         struct inode *inode = file_inode(file);
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>
>         if ((fi->fmode & CEPH_FILE_MODE_LAZY) == 0) {
>                 spin_lock(&ci->i_ceph_lock);
> diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
> index b9c7b6c60357..a730bd98a4d2 100644
> --- a/fs/ceph/mds_client.c
> +++ b/fs/ceph/mds_client.c
> @@ -829,7 +829,7 @@ static void destroy_reply_info(struct ceph_mds_reply_info_parsed *info)
>   */
>  int ceph_wait_on_conflict_unlink(struct dentry *dentry)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(dentry->d_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(dentry->d_sb);
>         struct dentry *pdentry = dentry->d_parent;
>         struct dentry *udentry, *found = NULL;
>         struct ceph_dentry_info *di;
> diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
> index 5bd47829a005..09939ec0d1ee 100644
> --- a/fs/ceph/snap.c
> +++ b/fs/ceph/snap.c
> @@ -963,7 +963,7 @@ static void flush_snaps(struct ceph_mds_client *mdsc)
>  void ceph_change_snap_realm(struct inode *inode, struct ceph_snap_realm *realm)
>  {
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_inode_to_fs_client(inode)->mdsc;
>         struct ceph_snap_realm *oldrealm = ci->i_snap_realm;
>
>         lockdep_assert_held(&ci->i_ceph_lock);
> diff --git a/fs/ceph/super.c b/fs/ceph/super.c
> index 070b3150d267..e0c9ed100767 100644
> --- a/fs/ceph/super.c
> +++ b/fs/ceph/super.c
> @@ -44,7 +44,7 @@ static LIST_HEAD(ceph_fsc_list);
>   */
>  static void ceph_put_super(struct super_block *s)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(s);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(s);
>
>         dout("put_super\n");
>         ceph_fscrypt_free_dummy_policy(fsc);
> @@ -53,7 +53,7 @@ static void ceph_put_super(struct super_block *s)
>
>  static int ceph_statfs(struct dentry *dentry, struct kstatfs *buf)
>  {
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(d_inode(dentry));
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(d_inode(dentry));
>         struct ceph_mon_client *monc = &fsc->client->monc;
>         struct ceph_statfs st;
>         int i, err;
> @@ -118,7 +118,7 @@ static int ceph_statfs(struct dentry *dentry, struct kstatfs *buf)
>
>  static int ceph_sync_fs(struct super_block *sb, int wait)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
>
>         if (!wait) {
>                 dout("sync_fs (non-blocking)\n");
> @@ -695,7 +695,7 @@ static int compare_mount_options(struct ceph_mount_options *new_fsopt,
>   */
>  static int ceph_show_options(struct seq_file *m, struct dentry *root)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(root->d_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(root->d_sb);
>         struct ceph_mount_options *fsopt = fsc->mount_options;
>         size_t pos;
>         int ret;
> @@ -1026,7 +1026,7 @@ static void __ceph_umount_begin(struct ceph_fs_client *fsc)
>   */
>  void ceph_umount_begin(struct super_block *sb)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
>
>         dout("ceph_umount_begin - starting forced umount\n");
>         if (!fsc)
> @@ -1236,7 +1236,7 @@ static int ceph_compare_super(struct super_block *sb, struct fs_context *fc)
>         struct ceph_fs_client *new = fc->s_fs_info;
>         struct ceph_mount_options *fsopt = new->mount_options;
>         struct ceph_options *opt = new->client->options;
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
>
>         dout("ceph_compare_super %p\n", sb);
>
> @@ -1332,9 +1332,9 @@ static int ceph_get_tree(struct fs_context *fc)
>                 goto out;
>         }
>
> -       if (ceph_sb_to_client(sb) != fsc) {
> +       if (ceph_sb_to_fs_client(sb) != fsc) {
>                 destroy_fs_client(fsc);
> -               fsc = ceph_sb_to_client(sb);
> +               fsc = ceph_sb_to_fs_client(sb);
>                 dout("get_sb got existing client %p\n", fsc);
>         } else {
>                 dout("get_sb using new client %p\n", fsc);
> @@ -1387,7 +1387,7 @@ static int ceph_reconfigure_fc(struct fs_context *fc)
>         struct ceph_parse_opts_ctx *pctx = fc->fs_private;
>         struct ceph_mount_options *fsopt = pctx->opts;
>         struct super_block *sb = fc->root->d_sb;
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
>
>         err = ceph_apply_test_dummy_encryption(sb, fc, fsopt);
>         if (err)
> @@ -1526,7 +1526,7 @@ void ceph_dec_osd_stopping_blocker(struct ceph_mds_client *mdsc)
>
>  static void ceph_kill_sb(struct super_block *s)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(s);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(s);
>         struct ceph_mds_client *mdsc = fsc->mdsc;
>         bool wait;
>
> @@ -1587,7 +1587,7 @@ MODULE_ALIAS_FS("ceph");
>
>  int ceph_force_reconnect(struct super_block *sb)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
>         int err = 0;
>
>         fsc->mount_state = CEPH_MOUNT_RECOVER;
> diff --git a/fs/ceph/super.h b/fs/ceph/super.h
> index ab5c0c703eae..9655ea46e6ca 100644
> --- a/fs/ceph/super.h
> +++ b/fs/ceph/super.h
> @@ -490,13 +490,13 @@ ceph_inode(const struct inode *inode)
>  }
>
>  static inline struct ceph_fs_client *
> -ceph_inode_to_client(const struct inode *inode)
> +ceph_inode_to_fs_client(const struct inode *inode)
>  {
>         return (struct ceph_fs_client *)inode->i_sb->s_fs_info;
>  }
>
>  static inline struct ceph_fs_client *
> -ceph_sb_to_client(const struct super_block *sb)
> +ceph_sb_to_fs_client(const struct super_block *sb)
>  {
>         return (struct ceph_fs_client *)sb->s_fs_info;
>  }
> @@ -504,7 +504,7 @@ ceph_sb_to_client(const struct super_block *sb)
>  static inline struct ceph_mds_client *
>  ceph_sb_to_mdsc(const struct super_block *sb)
>  {
> -       return (struct ceph_mds_client *)ceph_sb_to_client(sb)->mdsc;
> +       return (struct ceph_mds_client *)ceph_sb_to_fs_client(sb)->mdsc;
>  }
>
>  static inline struct ceph_vino
> @@ -560,7 +560,7 @@ static inline u64 ceph_snap(struct inode *inode)
>   */
>  static inline u64 ceph_present_ino(struct super_block *sb, u64 ino)
>  {
> -       if (unlikely(ceph_test_mount_opt(ceph_sb_to_client(sb), INO32)))
> +       if (unlikely(ceph_test_mount_opt(ceph_sb_to_fs_client(sb), INO32)))
>                 return ceph_ino_to_ino32(ino);
>         return ino;
>  }
> @@ -1106,7 +1106,7 @@ void ceph_inode_shutdown(struct inode *inode);
>  static inline bool ceph_inode_is_shutdown(struct inode *inode)
>  {
>         unsigned long flags = READ_ONCE(ceph_inode(inode)->i_ceph_flags);
> -       struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> +       struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
>         int state = READ_ONCE(fsc->mount_state);
>
>         return (flags & CEPH_I_SHUTDOWN) || state >= CEPH_MOUNT_SHUTDOWN;
> diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c
> index 76680e5c2f82..e30ae1032e13 100644
> --- a/fs/ceph/xattr.c
> +++ b/fs/ceph/xattr.c
> @@ -57,7 +57,7 @@ static bool ceph_vxattrcb_layout_exists(struct ceph_inode_info *ci)
>  static ssize_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val,
>                                     size_t size)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
>         struct ceph_osd_client *osdc = &fsc->client->osdc;
>         struct ceph_string *pool_ns;
>         s64 pool = ci->i_layout.pool_id;
> @@ -161,7 +161,7 @@ static ssize_t ceph_vxattrcb_layout_pool(struct ceph_inode_info *ci,
>                                          char *val, size_t size)
>  {
>         ssize_t ret;
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
>         struct ceph_osd_client *osdc = &fsc->client->osdc;
>         s64 pool = ci->i_layout.pool_id;
>         const char *pool_name;
> @@ -313,7 +313,7 @@ static ssize_t ceph_vxattrcb_snap_btime(struct ceph_inode_info *ci, char *val,
>  static ssize_t ceph_vxattrcb_cluster_fsid(struct ceph_inode_info *ci,
>                                           char *val, size_t size)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
>
>         return ceph_fmt_xattr(val, size, "%pU", &fsc->client->fsid);
>  }
> @@ -321,7 +321,7 @@ static ssize_t ceph_vxattrcb_cluster_fsid(struct ceph_inode_info *ci,
>  static ssize_t ceph_vxattrcb_client_id(struct ceph_inode_info *ci,
>                                        char *val, size_t size)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(ci->netfs.inode.i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(ci->netfs.inode.i_sb);
>
>         return ceph_fmt_xattr(val, size, "client%lld",
>                               ceph_client_gid(fsc->client));
> @@ -1093,7 +1093,7 @@ ssize_t ceph_listxattr(struct dentry *dentry, char *names, size_t size)
>  static int ceph_sync_setxattr(struct inode *inode, const char *name,
>                               const char *value, size_t size, int flags)
>  {
> -       struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb);
> +       struct ceph_fs_client *fsc = ceph_sb_to_fs_client(inode->i_sb);
>         struct ceph_inode_info *ci = ceph_inode(inode);
>         struct ceph_mds_request *req;
>         struct ceph_mds_client *mdsc = fsc->mdsc;
> @@ -1163,7 +1163,7 @@ int __ceph_setxattr(struct inode *inode, const char *name,
>  {
>         struct ceph_vxattr *vxattr;
>         struct ceph_inode_info *ci = ceph_inode(inode);
> -       struct ceph_mds_client *mdsc = ceph_sb_to_client(inode->i_sb)->mdsc;
> +       struct ceph_mds_client *mdsc = ceph_sb_to_fs_client(inode->i_sb)->mdsc;
>         struct ceph_cap_flush *prealloc_cf = NULL;
>         struct ceph_buffer *old_blob = NULL;
>         int issued;
> --
> 2.40.1
>


-- 
Milind


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 4/6] ceph: move mdsmap.h to fs/ceph/
  2023-06-19  7:14 ` [PATCH v4 4/6] ceph: move mdsmap.h to fs/ceph/ xiubli
@ 2023-09-04  9:29   ` Milind Changire
  0 siblings, 0 replies; 12+ messages in thread
From: Milind Changire @ 2023-09-04  9:29 UTC (permalink / raw)
  To: xiubli; +Cc: idryomov, ceph-devel, jlayton, vshankar, Patrick Donnelly

Looks good to me.

Tested-by: Milind Changire <mchangir@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Milind Changire <mchangir@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>

On Mon, Jun 19, 2023 at 12:47 PM <xiubli@redhat.com> wrote:
>
> From: Xiubo Li <xiubli@redhat.com>
>
> The mdsmap.h is only used by the kcephfs and move it to fs/ceph/
>
> URL: https://tracker.ceph.com/issues/61590
> Cc: Patrick Donnelly <pdonnell@redhat.com>
> Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
> Signed-off-by: Xiubo Li <xiubli@redhat.com>
> ---
>  fs/ceph/mds_client.h                | 2 +-
>  fs/ceph/mdsmap.c                    | 2 +-
>  {include/linux => fs}/ceph/mdsmap.h | 0
>  3 files changed, 2 insertions(+), 2 deletions(-)
>  rename {include/linux => fs}/ceph/mdsmap.h (100%)
>
> diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h
> index 20bcf8d5322e..5d02c8c582fd 100644
> --- a/fs/ceph/mds_client.h
> +++ b/fs/ceph/mds_client.h
> @@ -14,9 +14,9 @@
>
>  #include <linux/ceph/types.h>
>  #include <linux/ceph/messenger.h>
> -#include <linux/ceph/mdsmap.h>
>  #include <linux/ceph/auth.h>
>
> +#include "mdsmap.h"
>  #include "metric.h"
>  #include "super.h"
>
> diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
> index 6cbec7aed5a0..d1bc81eecc18 100644
> --- a/fs/ceph/mdsmap.c
> +++ b/fs/ceph/mdsmap.c
> @@ -7,11 +7,11 @@
>  #include <linux/slab.h>
>  #include <linux/types.h>
>
> -#include <linux/ceph/mdsmap.h>
>  #include <linux/ceph/messenger.h>
>  #include <linux/ceph/decode.h>
>
>  #include "super.h"
> +#include "mdsmap.h"
>
>  #define CEPH_MDS_IS_READY(i, ignore_laggy) \
>         (m->m_info[i].state > 0 && ignore_laggy ? true : !m->m_info[i].laggy)
> diff --git a/include/linux/ceph/mdsmap.h b/fs/ceph/mdsmap.h
> similarity index 100%
> rename from include/linux/ceph/mdsmap.h
> rename to fs/ceph/mdsmap.h
> --
> 2.40.1
>


-- 
Milind


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 5/6] ceph: add ceph_inode_to_client() helper support
  2023-06-19  7:14 ` [PATCH v4 5/6] ceph: add ceph_inode_to_client() helper support xiubli
@ 2023-09-04  9:30   ` Milind Changire
  0 siblings, 0 replies; 12+ messages in thread
From: Milind Changire @ 2023-09-04  9:30 UTC (permalink / raw)
  To: xiubli; +Cc: idryomov, ceph-devel, jlayton, vshankar, Patrick Donnelly

Looks good to me.

Tested-by: Milind Changire <mchangir@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Milind Changire <mchangir@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>

On Mon, Jun 19, 2023 at 12:47 PM <xiubli@redhat.com> wrote:
>
> From: Xiubo Li <xiubli@redhat.com>
>
> This will covert the inode to ceph_client.
>
> URL: https://tracker.ceph.com/issues/61590
> Cc: Patrick Donnelly <pdonnell@redhat.com>
> Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
> Signed-off-by: Xiubo Li <xiubli@redhat.com>
> ---
>  fs/ceph/snap.c  | 8 +++++---
>  fs/ceph/super.h | 6 ++++++
>  2 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
> index 09939ec0d1ee..9dde4b5f513d 100644
> --- a/fs/ceph/snap.c
> +++ b/fs/ceph/snap.c
> @@ -329,7 +329,8 @@ static int cmpu64_rev(const void *a, const void *b)
>  /*
>   * build the snap context for a given realm.
>   */
> -static int build_snap_context(struct ceph_snap_realm *realm,
> +static int build_snap_context(struct ceph_mds_client *mdsc,
> +                             struct ceph_snap_realm *realm,
>                               struct list_head *realm_queue,
>                               struct list_head *dirty_realms)
>  {
> @@ -425,7 +426,8 @@ static int build_snap_context(struct ceph_snap_realm *realm,
>  /*
>   * rebuild snap context for the given realm and all of its children.
>   */
> -static void rebuild_snap_realms(struct ceph_snap_realm *realm,
> +static void rebuild_snap_realms(struct ceph_mds_client *mdsc,
> +                               struct ceph_snap_realm *realm,
>                                 struct list_head *dirty_realms)
>  {
>         LIST_HEAD(realm_queue);
> @@ -858,7 +860,7 @@ int ceph_update_snap_trace(struct ceph_mds_client *mdsc,
>
>         /* rebuild_snapcs when we reach the _end_ (root) of the trace */
>         if (realm_to_rebuild && p >= e)
> -               rebuild_snap_realms(realm_to_rebuild, &dirty_realms);
> +               rebuild_snap_realms(mdsc, realm_to_rebuild, &dirty_realms);
>
>         if (!first_realm)
>                 first_realm = realm;
> diff --git a/fs/ceph/super.h b/fs/ceph/super.h
> index 9655ea46e6ca..4e78de1be23e 100644
> --- a/fs/ceph/super.h
> +++ b/fs/ceph/super.h
> @@ -507,6 +507,12 @@ ceph_sb_to_mdsc(const struct super_block *sb)
>         return (struct ceph_mds_client *)ceph_sb_to_fs_client(sb)->mdsc;
>  }
>
> +static inline struct ceph_client *
> +ceph_inode_to_client(const struct inode *inode)
> +{
> +       return (struct ceph_client *)ceph_inode_to_fs_client(inode)->client;
> +}
> +
>  static inline struct ceph_vino
>  ceph_vino(const struct inode *inode)
>  {
> --
> 2.40.1
>


-- 
Milind


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-09-04  9:32 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-19  7:14 [PATCH v4 0/6] ceph: print the client global id for debug logs xiubli
2023-06-19  7:14 ` [PATCH v4 1/6] ceph: add the *_client debug macros support xiubli
2023-09-04  9:27   ` Milind Changire
2023-06-19  7:14 ` [PATCH v4 2/6] ceph: pass the mdsc to several helpers xiubli
2023-09-04  9:28   ` Milind Changire
2023-06-19  7:14 ` [PATCH v4 3/6] ceph: rename _to_client() to _to_fs_client() xiubli
2023-09-04  9:28   ` Milind Changire
2023-06-19  7:14 ` [PATCH v4 4/6] ceph: move mdsmap.h to fs/ceph/ xiubli
2023-09-04  9:29   ` Milind Changire
2023-06-19  7:14 ` [PATCH v4 5/6] ceph: add ceph_inode_to_client() helper support xiubli
2023-09-04  9:30   ` Milind Changire
2023-06-19  7:20 ` [PATCH v4 0/6] ceph: print the client global id for debug logs Xiubo Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).