[lustre-devel] [PATCH 8/8] lustre: obd: add md_stats to MDC and LMV devices

James Simmons jsimmons at infradead.org
Mon Sep 17 10:31:21 PDT 2018


From: "John L. Hammond" <jhammond at whamcloud.com>

Enable md_stats for MDC and LMV devices. These stats track usage of
the md_ops methods (from the OBD layer, not to be confused with
md_device methods) and are exported through the files
/sys/fs/lustre/{lmv,mdc}/*/md_stats.

Rename m_sync to m_fsync making the counter name (fsync) more
intuitive. The operations counted are close, create, enqueue,
getattr, intent_lock, link, rename, setattr, fsync, readpage, unlink,
setxattr, getxattr, intent_getattr_async, and revalidate_lock.

Signed-off-by: John L. Hammond <jhammond at whamcloud.com>
WC-bug-id: https://jira.whamcloud.com/browse/LU-2484
Reviewed-on: http://review.whamcloud.com/4827
Reviewed-by: Andreas Dilger <adilger at whamcloud.com>
Reviewed-by: wangdi <di.wang at intel.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
 drivers/staging/lustre/lustre/include/obd.h       | 4 ++--
 drivers/staging/lustre/lustre/include/obd_class.h | 6 +++---
 drivers/staging/lustre/lustre/llite/file.c        | 2 +-
 drivers/staging/lustre/lustre/lmv/lmv_obd.c       | 9 +++++----
 drivers/staging/lustre/lustre/lmv/lproc_lmv.c     | 6 ++++++
 drivers/staging/lustre/lustre/mdc/lproc_mdc.c     | 7 +++++++
 drivers/staging/lustre/lustre/mdc/mdc_request.c   | 8 +++++---
 7 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h
index 6e78c50..11e7ae8 100644
--- a/drivers/staging/lustre/lustre/include/obd.h
+++ b/drivers/staging/lustre/lustre/include/obd.h
@@ -942,8 +942,8 @@ struct md_ops {
 		      struct ptlrpc_request **);
 	int (*setattr)(struct obd_export *, struct md_op_data *, void *,
 		       size_t, struct ptlrpc_request **);
-	int (*sync)(struct obd_export *, const struct lu_fid *,
-		    struct ptlrpc_request **);
+	int (*fsync)(struct obd_export *, const struct lu_fid *,
+		     struct ptlrpc_request **);
 	int (*read_page)(struct obd_export *, struct md_op_data *,
 			 struct md_callback *cb_op, __u64 hash_offset,
 			 struct page **ppage);
diff --git a/drivers/staging/lustre/lustre/include/obd_class.h b/drivers/staging/lustre/lustre/include/obd_class.h
index 2514b39..824d378 100644
--- a/drivers/staging/lustre/lustre/include/obd_class.h
+++ b/drivers/staging/lustre/lustre/include/obd_class.h
@@ -1350,8 +1350,8 @@ static inline int md_setattr(struct obd_export *exp, struct md_op_data *op_data,
 	return MDP(exp->exp_obd, setattr)(exp, op_data, ea, ealen, request);
 }
 
-static inline int md_sync(struct obd_export *exp, const struct lu_fid *fid,
-			  struct ptlrpc_request **request)
+static inline int md_fsync(struct obd_export *exp, const struct lu_fid *fid,
+			   struct ptlrpc_request **request)
 {
 	int rc;
 
@@ -1362,7 +1362,7 @@ static inline int md_sync(struct obd_export *exp, const struct lu_fid *fid,
 	lprocfs_counter_incr(exp->exp_obd->obd_md_stats,
 			     LPROC_MD_FSYNC);
 
-	return MDP(exp->exp_obd, sync)(exp, fid, request);
+	return MDP(exp->exp_obd, fsync)(exp, fid, request);
 }
 
 static inline int md_read_page(struct obd_export *exp,
diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c
index 94760eb..092fa99 100644
--- a/drivers/staging/lustre/lustre/llite/file.c
+++ b/drivers/staging/lustre/lustre/llite/file.c
@@ -2656,7 +2656,7 @@ int ll_fsync(struct file *file, loff_t start, loff_t end, int datasync)
 		}
 	}
 
-	err = md_sync(ll_i2sbi(inode)->ll_md_exp, ll_inode2fid(inode), &req);
+	err = md_fsync(ll_i2sbi(inode)->ll_md_exp, ll_inode2fid(inode), &req);
 	if (!rc)
 		rc = err;
 	if (!err)
diff --git a/drivers/staging/lustre/lustre/lmv/lmv_obd.c b/drivers/staging/lustre/lustre/lmv/lmv_obd.c
index cf2a4c6..71bd843 100644
--- a/drivers/staging/lustre/lustre/lmv/lmv_obd.c
+++ b/drivers/staging/lustre/lustre/lmv/lmv_obd.c
@@ -1989,8 +1989,8 @@ static int lmv_setattr(struct obd_export *exp, struct md_op_data *op_data,
 	return md_setattr(tgt->ltd_exp, op_data, ea, ealen, request);
 }
 
-static int lmv_sync(struct obd_export *exp, const struct lu_fid *fid,
-		    struct ptlrpc_request **request)
+static int lmv_fsync(struct obd_export *exp, const struct lu_fid *fid,
+		     struct ptlrpc_request **request)
 {
 	struct obd_device	 *obd = exp->exp_obd;
 	struct lmv_obd	    *lmv = &obd->u.lmv;
@@ -2000,7 +2000,7 @@ static int lmv_sync(struct obd_export *exp, const struct lu_fid *fid,
 	if (IS_ERR(tgt))
 		return PTR_ERR(tgt);
 
-	return md_sync(tgt->ltd_exp, fid, request);
+	return md_fsync(tgt->ltd_exp, fid, request);
 }
 
 /**
@@ -2502,6 +2502,7 @@ static int lmv_precleanup(struct obd_device *obd)
 {
 	fld_client_debugfs_fini(&obd->u.lmv.lmv_fld);
 	lprocfs_obd_cleanup(obd);
+	ldebugfs_free_md_stats(obd);
 	return 0;
 }
 
@@ -3079,7 +3080,7 @@ static int lmv_merge_attr(struct obd_export *exp,
 	.rename			= lmv_rename,
 	.setattr		= lmv_setattr,
 	.setxattr		= lmv_setxattr,
-	.sync			= lmv_sync,
+	.fsync			= lmv_fsync,
 	.read_page		= lmv_read_page,
 	.unlink			= lmv_unlink,
 	.init_ea_size		= lmv_init_ea_size,
diff --git a/drivers/staging/lustre/lustre/lmv/lproc_lmv.c b/drivers/staging/lustre/lustre/lmv/lproc_lmv.c
index efc12ad..4e30026 100644
--- a/drivers/staging/lustre/lustre/lmv/lproc_lmv.c
+++ b/drivers/staging/lustre/lustre/lmv/lproc_lmv.c
@@ -168,6 +168,12 @@ int lmv_tunables_init(struct obd_device *obd)
 	if (rc)
 		return rc;
 
+	rc = ldebugfs_alloc_md_stats(obd, 0);
+	if (rc) {
+		lprocfs_obd_cleanup(obd);
+		return rc;
+	}
+
 	debugfs_create_file("target_obd", 0444, obd->obd_debugfs_entry, obd,
 			    &lmv_debugfs_target_fops);
 
diff --git a/drivers/staging/lustre/lustre/mdc/lproc_mdc.c b/drivers/staging/lustre/lustre/mdc/lproc_mdc.c
index a205c61..ffc1085 100644
--- a/drivers/staging/lustre/lustre/mdc/lproc_mdc.c
+++ b/drivers/staging/lustre/lustre/mdc/lproc_mdc.c
@@ -210,8 +210,15 @@ int mdc_tunables_init(struct obd_device *obd)
 	if (rc)
 		return rc;
 
+	rc = ldebugfs_alloc_md_stats(obd, 0);
+	if (rc) {
+		lprocfs_obd_cleanup(obd);
+		return rc;
+	}
+
 	rc = sptlrpc_lprocfs_cliobd_attach(obd);
 	if (rc) {
+		ldebugfs_free_md_stats(obd);
 		lprocfs_obd_cleanup(obd);
 		return rc;
 	}
diff --git a/drivers/staging/lustre/lustre/mdc/mdc_request.c b/drivers/staging/lustre/lustre/mdc/mdc_request.c
index 2108877..8f8e3d2 100644
--- a/drivers/staging/lustre/lustre/mdc/mdc_request.c
+++ b/drivers/staging/lustre/lustre/mdc/mdc_request.c
@@ -2487,8 +2487,8 @@ static int mdc_get_info(const struct lu_env *env, struct obd_export *exp,
 	return rc;
 }
 
-static int mdc_sync(struct obd_export *exp, const struct lu_fid *fid,
-		    struct ptlrpc_request **request)
+static int mdc_fsync(struct obd_export *exp, const struct lu_fid *fid,
+		     struct ptlrpc_request **request)
 {
 	struct ptlrpc_request *req;
 	int		    rc;
@@ -2677,6 +2677,7 @@ static int mdc_setup(struct obd_device *obd, struct lustre_cfg *cfg)
 	return 0;
 
 err_llog_cleanup:
+	ldebugfs_free_md_stats(obd);
 	ptlrpc_lprocfs_unregister_obd(obd);
 err_osc_cleanup:
 	client_obd_cleanup(obd);
@@ -2716,6 +2717,7 @@ static int mdc_precleanup(struct obd_device *obd)
 	obd_cleanup_client_import(obd);
 	ptlrpc_lprocfs_unregister_obd(obd);
 	lprocfs_obd_cleanup(obd);
+	ldebugfs_free_md_stats(obd);
 	mdc_llog_finish(obd);
 	return 0;
 }
@@ -2772,7 +2774,7 @@ static int mdc_process_config(struct obd_device *obd, u32 len, void *buf)
 	.setattr		= mdc_setattr,
 	.setxattr		= mdc_setxattr,
 	.getxattr		= mdc_getxattr,
-	.sync			= mdc_sync,
+	.fsync			= mdc_fsync,
 	.read_page		= mdc_read_page,
 	.unlink			= mdc_unlink,
 	.cancel_unused		= mdc_cancel_unused,
-- 
1.8.3.1



More information about the lustre-devel mailing list