From 5cb722c384077dd2469763a4f70a72bed555c8db Mon Sep 17 00:00:00 2001 From: Patrick Farrell Date: Wed, 9 Feb 2022 16:25:10 -0500 Subject: [PATCH] LU-15317 osc: Add RPC to iotrace Add RPCs to iotrace debugging. To avoid creating too much debug output, this debug ignores the possiblity that an RPC contains non-contiguous extents. Thus the eventual visualization will act as though the RPC is a continuous whole. I judge this to be superior to the amount of log data and complexity of capturing each extent separately. If that level of detail is needed, a higher debug level can be used. Test-parameters: trivial Signed-off-by: Patrick Farrell Change-Id: I6fe416ba44be5572f130704ba9d3e9b85d09c656 Reviewed-on: https://review.whamcloud.com/45894 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Sebastien Buisson Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- lustre/osc/osc_request.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index d80a4a4..abf2fcc 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -2644,6 +2644,7 @@ int osc_build_rpc(const struct lu_env *env, struct client_obd *cli, spin_lock(&cli->cl_loi_list_lock); starting_offset >>= PAGE_SHIFT; + ending_offset >>= PAGE_SHIFT; if (cmd == OBD_BRW_READ) { cli->cl_r_in_flight++; lprocfs_oh_tally_log2(&cli->cl_read_page_hist, page_count); @@ -2660,8 +2661,19 @@ int osc_build_rpc(const struct lu_env *env, struct client_obd *cli, spin_unlock(&cli->cl_loi_list_lock); DEBUG_REQ(D_INODE, req, "%d pages, aa %p, now %ur/%uw in flight", - page_count, aa, cli->cl_r_in_flight, - cli->cl_w_in_flight); + page_count, aa, cli->cl_r_in_flight, cli->cl_w_in_flight); + if (libcfs_debug & D_IOTRACE) { + struct lu_fid fid; + + fid.f_seq = crattr->cra_oa->o_parent_seq; + fid.f_oid = crattr->cra_oa->o_parent_oid; + fid.f_ver = crattr->cra_oa->o_parent_ver; + CDEBUG(D_IOTRACE, + DFID": %d %s pages, start %lld, end %lld, now %ur/%uw in flight\n", + PFID(&fid), page_count, + cmd == OBD_BRW_READ ? "read" : "write", starting_offset, + ending_offset, cli->cl_r_in_flight, cli->cl_w_in_flight); + } OBD_FAIL_TIMEOUT(OBD_FAIL_OSC_DELAY_IO, cfs_fail_val); ptlrpcd_add_req(req); -- 1.8.3.1