Merge tag 'nfsd-4.15' of git://linux-nfs.org/~bfields/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Nov 2017 19:22:04 +0000 (11:22 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Nov 2017 19:22:04 +0000 (11:22 -0800)
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
  ...

1  2 
fs/lockd/svc.c
fs/nfsd/fault_inject.c
fs/nfsd/nfs3xdr.c
fs/nfsd/nfs4layouts.c
fs/nfsd/nfs4proc.c
fs/nfsd/nfssvc.c
include/linux/fs.h
include/linux/sunrpc/svc.h
include/trace/events/sunrpc.h
net/sunrpc/svc_xprt.c
net/sunrpc/xprtrdma/svc_rdma_backchannel.c

diff --cc fs/lockd/svc.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -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))
  );
  
Simple merge