FAILED: patch "[PATCH] NFS: Avoid RCU usage in tracepoints" failed to apply to 3.18-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 3.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
3944369db701f075092357b511fd9f5755771585Mon Sep 17 00:00:00 2001
From: Anna Schumaker <[email protected]>
Date: Wed, 1 Nov 2017 15:48:43 -0400
Subject: [PATCH] NFS: Avoid RCU usage in tracepoints
There isn't an obvious way to acquire and release the RCU lock during a tracepoint, so we can't use the rpc_peeraddr2str() function here. Instead, rely on the client's cl_hostname, which should have similar enough information without needing an rcu_dereference().
fs/nfs/nfs4trace.h +6 -18
@@ -201,17 +201,13 @@ DECLARE_EVENT_CLASS(nfs4_clientid_event,TP_ARGS (clp, error),TP_STRUCT__entry ( - __string(dstaddr, - rpc_peeraddr2str(clp->cl_rpcclient, - RPC_DISPLAY_ADDR)) + __string(dstaddr, clp->cl_hostname)__field (int, error) ),TP_fast_assign ( __entry->error = error; -__assign_str (dstaddr, -rpc_peeraddr2str (clp->cl_rpcclient, -RPC_DISPLAY_ADDR )); +__assign_str (dstaddr, clp->cl_hostname); ), TP_printk(
@@ -1132,9 +1128,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_callback_event, __field(dev_t, dev) __field(u32, fhandle) __field(u64, fileid) -__string (dstaddr, clp ? -rpc_peeraddr2str (clp->cl_rpcclient, -RPC_DISPLAY_ADDR ) :"unknown" ) +__string (dstaddr, clp ? clp->cl_hostname :"unknown" ) ), TP_fast_assign(
@@ -1147,9 +1141,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_callback_event, __entry->fileid =0 ; __entry->dev =0 ; } -__assign_str (dstaddr, clp ? -rpc_peeraddr2str (clp->cl_rpcclient, -RPC_DISPLAY_ADDR ) :"unknown" ) +__assign_str (dstaddr, clp ? clp->cl_hostname :"unknown" ) ), TP_printk(
@@ -1191,9 +1183,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_stateid_callback_event, __field(dev_t, dev) __field(u32, fhandle) __field(u64, fileid) -__string (dstaddr, clp ? -rpc_peeraddr2str (clp->cl_rpcclient, - RPC_DISPLAY_ADDR) : "unknown") + __string(dstaddr, clp ? clp->cl_hostname : "unknown") __field(int, stateid_seq)__field (u32, stateid_hash) ),
@@ -1208,9 +1198,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_stateid_callback_event, __entry->fileid =0 ; __entry->dev =0 ; } -__assign_str (dstaddr, clp ? -rpc_peeraddr2str (clp->cl_rpcclient, -RPC_DISPLAY_ADDR ) :"unknown" ) +__assign_str (dstaddr, clp ? clp->cl_hostname :"unknown" ) __entry->stateid_seq =be32_to_cpu (stateid->seqid); __entry->stateid_hash =