From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Sat, 18 Nov 2017 19:22:04 +0000 (-0800)
Subject: Merge tag 'nfsd-4.15' of git://linux-nfs.org/~bfields/linux
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4dd3c2e5a4225e3df85afc6033e62ce8b09f0ed2;p=linux.git

Merge tag 'nfsd-4.15' of git://linux-nfs.org/~bfields/linux

Pull nfsd updates from Bruce Fields:
 "Lots of good bugfixes, including:

   -  fix a number of races in the NFSv4+ state code

   -  fix some shutdown crashes in multiple-network-namespace cases

   -  relax our 4.1 session limits; if you've an artificially low limit
      to the number of 4.1 clients that can mount simultaneously, try
      upgrading"

* tag 'nfsd-4.15' of git://linux-nfs.org/~bfields/linux: (22 commits)
  SUNRPC: Improve ordering of transport processing
  nfsd: deal with revoked delegations appropriately
  svcrdma: Enqueue after setting XPT_CLOSE in completion handlers
  nfsd: use nfs->ns.inum as net ID
  rpc: remove some BUG()s
  svcrdma: Preserve CB send buffer across retransmits
  nfds: avoid gettimeofday for nfssvc_boot time
  fs, nfsd: convert nfs4_file.fi_ref from atomic_t to refcount_t
  fs, nfsd: convert nfs4_cntl_odstate.co_odcount from atomic_t to refcount_t
  fs, nfsd: convert nfs4_stid.sc_count from atomic_t to refcount_t
  lockd: double unregister of inetaddr notifiers
  nfsd4: catch some false session retries
  nfsd4: fix cached replies to solo SEQUENCE compounds
  sunrcp: make function _svc_create_xprt static
  SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status
  nfsd: use ARRAY_SIZE
  nfsd: give out fewer session slots as limit approaches
  nfsd: increase DRC cache limit
  nfsd: remove unnecessary nofilehandle checks
  nfs_common: convert int to bool
  ...
---

4dd3c2e5a4225e3df85afc6033e62ce8b09f0ed2
diff --cc include/trace/events/sunrpc.h
index ecbdbfe86eb66,8a13e3903839f..8c153f68509e2
--- a/include/trace/events/sunrpc.h
+++ b/include/trace/events/sunrpc.h
@@@ -486,21 -455,23 +486,23 @@@ TRACE_EVENT(svc_recv
  	TP_ARGS(rqst, status),
  
  	TP_STRUCT__entry(
- 		__field(struct sockaddr *, addr)
 -		__field(__be32, xid)
 +		__field(u32, xid)
  		__field(int, status)
  		__field(unsigned long, flags)
+ 		__dynamic_array(unsigned char, addr, rqst->rq_addrlen)
  	),
  
  	TP_fast_assign(
- 		__entry->addr = (struct sockaddr *)&rqst->rq_addr;
 -		__entry->xid = status > 0 ? rqst->rq_xid : 0;
 +		__entry->xid = status > 0 ? be32_to_cpu(rqst->rq_xid) : 0;
  		__entry->status = status;
  		__entry->flags = rqst->rq_flags;
+ 		memcpy(__get_dynamic_array(addr),
+ 			&rqst->rq_addr, rqst->rq_addrlen);
  	),
  
- 	TP_printk("addr=%pIScp xid=0x%08x status=%d flags=%s", __entry->addr,
 -	TP_printk("addr=%pIScp xid=0x%x status=%d flags=%s",
++	TP_printk("addr=%pIScp xid=0x%08x status=%d flags=%s",
+ 			(struct sockaddr *)__get_dynamic_array(addr),
 -			be32_to_cpu(__entry->xid), __entry->status,
 +			__entry->xid, __entry->status,
  			show_rqstp_flags(__entry->flags))
  );
  
@@@ -544,22 -515,23 +546,23 @@@ DECLARE_EVENT_CLASS(svc_rqst_status
  	TP_ARGS(rqst, status),
  
  	TP_STRUCT__entry(
- 		__field(struct sockaddr *, addr)
 -		__field(__be32, xid)
 +		__field(u32, xid)
- 		__field(int, dropme)
  		__field(int, status)
  		__field(unsigned long, flags)
+ 		__dynamic_array(unsigned char, addr, rqst->rq_addrlen)
  	),
  
  	TP_fast_assign(
- 		__entry->addr = (struct sockaddr *)&rqst->rq_addr;
 -		__entry->xid = rqst->rq_xid;
 +		__entry->xid = be32_to_cpu(rqst->rq_xid);
  		__entry->status = status;
  		__entry->flags = rqst->rq_flags;
+ 		memcpy(__get_dynamic_array(addr),
+ 			&rqst->rq_addr, rqst->rq_addrlen);
  	),
  
 -	TP_printk("addr=%pIScp rq_xid=0x%x status=%d flags=%s",
 +	TP_printk("addr=%pIScp rq_xid=0x%08x status=%d flags=%s",
- 		__entry->addr, __entry->xid,
+ 		(struct sockaddr *)__get_dynamic_array(addr),
 -		be32_to_cpu(__entry->xid),
++		__entry->xid,
  		__entry->status, show_rqstp_flags(__entry->flags))
  );