Patch "SUNRPC: Don't allocate a full sockaddr_storage for tracing" has been added to the 4.7-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
SUNRPC: Don't allocate a full sockaddr_storage for tracing
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sunrpc-don-t-allocate-a-full-sockaddr_storage-for-tracing.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
db1bb44c4c7e8d49ed674dc59e5222d99c698088Mon Sep 17 00:00:00 2001
From: Trond Myklebust <[email protected]>
Date: Fri, 24 Jun 2016 10:55:44 -0400
Subject: SUNRPC: Don't allocate a full sockaddr_storage for tracing
From: Trond Myklebust <[email protected]>
commit db1bb44c4c7e8d49ed674dc59e5222d99c698088 upstream.
We're always tracing IPv4 or IPv6 addresses, so we can save a lot of space on the ringbuffer by allocating the correct sockaddr size.
--- include/trace/events/sunrpc.h | 47 ++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 13 deletions(-)
include/trace/events/sunrpc.h +34 -13
@@ -529,20 +529,27 @@ TRACE_EVENT(svc_xprt_do_enqueue,TP_STRUCT__entry (__field (struct svc_xprt *,xprt ) - __field_struct(struct sockaddr_storage, ss)__field (int, pid) __field(unsigned long, flags) + __dynamic_array(unsigned char, addr, xprt != NULL ? + xprt->xpt_remotelen : 0) ),TP_fast_assign ( __entry->xprt = xprt; - xprt ?memcpy (&__entry->ss, &xprt->xpt_remote,sizeof (__entry->ss)) :memset (&__entry->ss,0 ,sizeof (__entry->ss)); __entry->pid = rqst? rqst->rq_task->pid :0 ; - __entry->flags = xprt ? xprt->xpt_flags :0 ; +if (xprt) { +memcpy (__get_dynamic_array (addr), + &xprt->xpt_remote, + xprt->xpt_remotelen); + __entry->flags = xprt->xpt_flags; + }else + __entry->flags =0 ; ),TP_printk ("xprt=0x%p addr=%pIScp pid=%d flags=%s" , __entry->xprt, - (struct sockaddr *)&__entry->ss, +__get_dynamic_array_len (addr) !=0 ? + (struct sockaddr *)__get_dynamic_array (addr) :NULL , __entry->pid,show_svc_xprt_flags (__entry->flags)) );
@@ -553,18 +560,25 @@ TRACE_EVENT(svc_xprt_dequeue,TP_STRUCT__entry (__field (struct svc_xprt *,xprt ) - __field_struct(struct sockaddr_storage, ss) __field(unsigned long, flags) + __dynamic_array(unsigned char, addr, xprt != NULL ? + xprt->xpt_remotelen : 0) ),TP_fast_assign ( - __entry->xprt = xprt, - xprt ? memcpy(&__entry->ss, &xprt->xpt_remote, sizeof(__entry->ss)) : memset(&__entry->ss, 0, sizeof(__entry->ss)); - __entry->flags = xprt ? xprt->xpt_flags :0 ; + __entry->xprt = xprt; +if (xprt) { +memcpy (__get_dynamic_array (addr), + &xprt->xpt_remote, + xprt->xpt_remotelen); + __entry->flags = xprt->xpt_flags; + }else + __entry->flags =0 ; ),TP_printk ("xprt=0x%p addr=%pIScp flags=%s" , __entry->xprt, - (struct sockaddr *)&__entry->ss, +__get_dynamic_array_len (addr) !=0 ? + (struct sockaddr *)__get_dynamic_array (addr) :NULL ,show_svc_xprt_flags (__entry->flags)) );
@@ -592,19 +606,26 @@ TRACE_EVENT(svc_handle_xprt,TP_STRUCT__entry (__field (struct svc_xprt *,xprt )__field (int, len) - __field_struct(struct sockaddr_storage, ss) __field(unsigned long, flags) + __dynamic_array(unsigned char, addr, xprt != NULL ? + xprt->xpt_remotelen : 0) ),TP_fast_assign ( __entry->xprt = xprt; - xprt ?memcpy (&__entry->ss, &xprt->xpt_remote,sizeof (__entry->ss)) :memset (&__entry->ss,0 ,sizeof (__entry->ss)); __entry->len = len; - __entry->flags = xprt ? xprt->xpt_flags :0 ; +if (xprt) { +memcpy (__get_dynamic_array (addr), + &xprt->xpt_remote, + xprt->xpt_remotelen); + __entry->flags = xprt->xpt_flags; + }else + __entry->flags =0 ; ),TP_printk ("xprt=0x%p addr=%pIScp len=%d flags=%s" , __entry->xprt, - (struct sockaddr *)&__entry->ss, +__get_dynamic_array_len (addr) !=0 ? + (struct sockaddr *)__get_dynamic_array (addr) :NULL , __entry->len,show_svc_xprt_flags (__entry->flags)) );#endif /* _TRACE_SUNRPC_H */
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/nfs-don-t-create-zero-length-requests.patch queue-4.7/pnfs-separate-handling-of-nfs4err_layouttrylater-and-recallconflict.patch queue-4.7/pnfs-handle-nfs4err_recallconflict-correctly-in-layoutget.patch queue-4.7/pnfs-fix-layoutget-handling-of-nfs4err_bad_stateid-and-nfs4err_expired.patch queue-4.7/pnfs-fix-post-layoutget-error-handling-in-pnfs_update_layout.patch queue-4.7/sunrpc-don-t-allocate-a-full-sockaddr_storage-for-tracing.patch