Skip to content
  1. Apr 26, 2021
  2. Apr 14, 2021
    • Chris Dion's avatar
      SUNRPC: Handle major timeout in xprt_adjust_timeout() · 09252177
      Chris Dion authored
      
      
      Currently if a major timeout value is reached, but the minor value has
      not been reached, an ETIMEOUT will not be sent back to the caller.
      This can occur if the v4 server is not responding to requests and
      retrans is configured larger than the default of two.
      
      For example, A TCP mount with a configured timeout value of 50 and a
      retransmission count of 3 to a v4 server which is not responding:
      
      1. Initial value and increment set to 5s, maxval set to 20s, retries at 3
      2. Major timeout is set to 20s, minor timeout set to 5s initially
      3. xport_adjust_timeout() is called after 5s, retry with 10s timeout,
         minor timeout is bumped to 10s
      4. And again after another 10s, 15s total time with minor timeout set
         to 15s
      5. After 20s total time xport_adjust_timeout is called as major timeout is
         reached, but skipped because the minor timeout is not reached
             - After this time the cpu spins continually calling
             	 xport_adjust_timeout() and returning 0 for 10 seconds.
      	 As seen on perf sched:
         	 39243.913182 [0005]  mount.nfs[3794] 4607.938      0.017   9746.863
      6. This continues until the 15s minor timeout condition is reached (in
         this case for 10 seconds). After which the ETIMEOUT is processed
         back to the caller, the cpu spinning stops, and normal operations
         continue
      
      Fixes: 7de62bc0 ("SUNRPC dont update timeout value on connection reset")
      Signed-off-by: default avatarChris Dion <Christopher.Dion@dell.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      09252177
    • Chuck Lever's avatar
      SUNRPC: Remove trace_xprt_transmit_queued · 6cf23783
      Chuck Lever authored
      
      
      This tracepoint can crash when dereferencing snd_task because
      when some transports connect, they put a cookie in that field
      instead of a pointer to an rpc_task.
      
      BUG: KASAN: use-after-free in trace_event_raw_event_xprt_writelock_event+0x141/0x18e [sunrpc]
      Read of size 2 at addr ffff8881a83bd3a0 by task git/331872
      
      CPU: 11 PID: 331872 Comm: git Tainted: G S                5.12.0-rc2-00007-g3ab6e585a7f9 #1453
      Hardware name: Supermicro SYS-6028R-T/X10DRi, BIOS 1.1a 10/16/2015
      Call Trace:
       dump_stack+0x9c/0xcf
       print_address_description.constprop.0+0x18/0x239
       kasan_report+0x174/0x1b0
       trace_event_raw_event_xprt_writelock_event+0x141/0x18e [sunrpc]
       xprt_prepare_transmit+0x8e/0xc1 [sunrpc]
       call_transmit+0x4d/0xc6 [sunrpc]
      
      Fixes: 9ce07ae5 ("SUNRPC: Replace dprintk() call site in xprt_prepare_transmit")
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      6cf23783
    • Chuck Lever's avatar
      SUNRPC: Add tracepoint that fires when an RPC is retransmitted · e936a597
      Chuck Lever authored
      
      
      A separate tracepoint can be left enabled all the time to capture
      rare but important retransmission events. So for example:
      
      kworker/u26:3-568   [009]   156.967933: xprt_retransmit:      task:44093@5 xid=0xa25dbc79 nfsv3 WRITE ntrans=2
      
      Or, for example, enable all nfs and nfs4 tracepoints, and set up a
      trigger to disable tracing when xprt_retransmit fires to capture
      everything that leads up to it.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      e936a597
    • Chuck Lever's avatar
      SUNRPC: Move fault injection call sites · 7638e0bf
      Chuck Lever authored
      
      
      I've hit some crashes that occur in the xprt_rdma_inject_disconnect
      path. It appears that, for some provides, rdma_disconnect() can
      take so long that the transport can disconnect and release its
      hardware resources while rdma_disconnect() is still running,
      resulting in a UAF in the provider.
      
      The transport's fault injection method may depend on the stability
      of transport data structures. That means it needs to be invoked
      only from contexts that hold the transport write lock.
      
      Fixes: 4a068258 ("SUNRPC: Transport fault injection")
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      7638e0bf
  3. Apr 05, 2021
  4. Mar 11, 2021
    • Chuck Lever's avatar
      svcrdma: Revert "svcrdma: Reduce Receive doorbell rate" · bade4be6
      Chuck Lever authored
      
      
      I tested commit 43042b90 ("svcrdma: Reduce Receive doorbell
      rate") with mlx4 (IB) and software iWARP and didn't find any
      issues. However, I recently got my hardware iWARP setup back on
      line (FastLinQ) and it's crashing hard on this commit (confirmed
      via bisect).
      
      The failure mode is complex.
       - After a connection is established, the first Receive completes
         normally.
       - But the second and third Receives have garbage in their Receive
         buffers. The server responds with ERR_VERS as a result.
       - When the client tears down the connection to retry, a couple
         of posted Receives flush twice, and that corrupts the recv_ctxt
         free list.
       - __svc_rdma_free then faults or loops infinitely while destroying
         the xprt's recv_ctxts.
      
      Since 43042b90 ("svcrdma: Reduce Receive doorbell rate") does
      not fix a bug but is a scalability enhancement, it's safe and
      appropriate to revert it while working on a replacement.
      
      Fixes: 43042b90 ("svcrdma: Reduce Receive doorbell rate")
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      bade4be6
  5. Mar 08, 2021
  6. Mar 06, 2021
    • J. Bruce Fields's avatar
      rpc: fix NULL dereference on kmalloc failure · 0ddc9423
      J. Bruce Fields authored
      
      
      I think this is unlikely but possible:
      
      svc_authenticate sets rq_authop and calls svcauth_gss_accept.  The
      kmalloc(sizeof(*svcdata), GFP_KERNEL) fails, leaving rq_auth_data NULL,
      and returning SVC_DENIED.
      
      This causes svc_process_common to go to err_bad_auth, and eventually
      call svc_authorise.  That calls ->release == svcauth_gss_release, which
      tries to dereference rq_auth_data.
      
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Link: https://lore.kernel.org/linux-nfs/3F1B347F-B809-478F-A1E9-0BE98E22B0F0@oracle.com/T/#t
      
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      0ddc9423
    • Daniel Kobras's avatar
      sunrpc: fix refcount leak for rpc auth modules · f1442d63
      Daniel Kobras authored
      
      
      If an auth module's accept op returns SVC_CLOSE, svc_process_common()
      enters a call path that does not call svc_authorise() before leaving the
      function, and thus leaks a reference on the auth module's refcount. Hence,
      make sure calls to svc_authenticate() and svc_authorise() are paired for
      all call paths, to make sure rpc auth modules can be unloaded.
      
      Signed-off-by: default avatarDaniel Kobras <kobras@puzzle-itc.de>
      Fixes: 4d712ef1 ("svcauth_gss: Close connection when dropping an incoming message")
      Link: https://lore.kernel.org/linux-nfs/3F1B347F-B809-478F-A1E9-0BE98E22B0F0@oracle.com/T/#t
      
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      f1442d63
    • Joe Korty's avatar
      NFSD: Repair misuse of sv_lock in 5.10.16-rt30. · c7de87ff
      Joe Korty authored
      
      
      [ This problem is in mainline, but only rt has the chops to be
      able to detect it. ]
      
      Lockdep reports a circular lock dependency between serv->sv_lock and
      softirq_ctl.lock on system shutdown, when using a kernel built with
      CONFIG_PREEMPT_RT=y, and a nfs mount exists.
      
      This is due to the definition of spin_lock_bh on rt:
      
      	local_bh_disable();
      	rt_spin_lock(lock);
      
      which forces a softirq_ctl.lock -> serv->sv_lock dependency.  This is
      not a problem as long as _every_ lock of serv->sv_lock is a:
      
      	spin_lock_bh(&serv->sv_lock);
      
      but there is one of the form:
      
      	spin_lock(&serv->sv_lock);
      
      This is what is causing the circular dependency splat.  The spin_lock()
      grabs the lock without first grabbing softirq_ctl.lock via local_bh_disable.
      If later on in the critical region,  someone does a local_bh_disable, we
      get a serv->sv_lock -> softirq_ctrl.lock dependency established.  Deadlock.
      
      Fix is to make serv->sv_lock be locked with spin_lock_bh everywhere, no
      exceptions.
      
      [  OK  ] Stopped target NFS client services.
               Stopping Logout off all iSCSI sessions on shutdown...
               Stopping NFS server and services...
      [  109.442380]
      [  109.442385] ======================================================
      [  109.442386] WARNING: possible circular locking dependency detected
      [  109.442387] 5.10.16-rt30 #1 Not tainted
      [  109.442389] ------------------------------------------------------
      [  109.442390] nfsd/1032 is trying to acquire lock:
      [  109.442392] ffff994237617f60 ((softirq_ctrl.lock).lock){+.+.}-{2:2}, at: __local_bh_disable_ip+0xd9/0x270
      [  109.442405]
      [  109.442405] but task is already holding lock:
      [  109.442406] ffff994245cb00b0 (&serv->sv_lock){+.+.}-{0:0}, at: svc_close_list+0x1f/0x90
      [  109.442415]
      [  109.442415] which lock already depends on the new lock.
      [  109.442415]
      [  109.442416]
      [  109.442416] the existing dependency chain (in reverse order) is:
      [  109.442417]
      [  109.442417] -> #1 (&serv->sv_lock){+.+.}-{0:0}:
      [  109.442421]        rt_spin_lock+0x2b/0xc0
      [  109.442428]        svc_add_new_perm_xprt+0x42/0xa0
      [  109.442430]        svc_addsock+0x135/0x220
      [  109.442434]        write_ports+0x4b3/0x620
      [  109.442438]        nfsctl_transaction_write+0x45/0x80
      [  109.442440]        vfs_write+0xff/0x420
      [  109.442444]        ksys_write+0x4f/0xc0
      [  109.442446]        do_syscall_64+0x33/0x40
      [  109.442450]        entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  109.442454]
      [  109.442454] -> #0 ((softirq_ctrl.lock).lock){+.+.}-{2:2}:
      [  109.442457]        __lock_acquire+0x1264/0x20b0
      [  109.442463]        lock_acquire+0xc2/0x400
      [  109.442466]        rt_spin_lock+0x2b/0xc0
      [  109.442469]        __local_bh_disable_ip+0xd9/0x270
      [  109.442471]        svc_xprt_do_enqueue+0xc0/0x4d0
      [  109.442474]        svc_close_list+0x60/0x90
      [  109.442476]        svc_close_net+0x49/0x1a0
      [  109.442478]        svc_shutdown_net+0x12/0x40
      [  109.442480]        nfsd_destroy+0xc5/0x180
      [  109.442482]        nfsd+0x1bc/0x270
      [  109.442483]        kthread+0x194/0x1b0
      [  109.442487]        ret_from_fork+0x22/0x30
      [  109.442492]
      [  109.442492] other info that might help us debug this:
      [  109.442492]
      [  109.442493]  Possible unsafe locking scenario:
      [  109.442493]
      [  109.442493]        CPU0                    CPU1
      [  109.442494]        ----                    ----
      [  109.442495]   lock(&serv->sv_lock);
      [  109.442496]                                lock((softirq_ctrl.lock).lock);
      [  109.442498]                                lock(&serv->sv_lock);
      [  109.442499]   lock((softirq_ctrl.lock).lock);
      [  109.442501]
      [  109.442501]  *** DEADLOCK ***
      [  109.442501]
      [  109.442501] 3 locks held by nfsd/1032:
      [  109.442503]  #0: ffffffff93b49258 (nfsd_mutex){+.+.}-{3:3}, at: nfsd+0x19a/0x270
      [  109.442508]  #1: ffff994245cb00b0 (&serv->sv_lock){+.+.}-{0:0}, at: svc_close_list+0x1f/0x90
      [  109.442512]  #2: ffffffff93a81b20 (rcu_read_lock){....}-{1:2}, at: rt_spin_lock+0x5/0xc0
      [  109.442518]
      [  109.442518] stack backtrace:
      [  109.442519] CPU: 0 PID: 1032 Comm: nfsd Not tainted 5.10.16-rt30 #1
      [  109.442522] Hardware name: Supermicro X9DRL-3F/iF/X9DRL-3F/iF, BIOS 3.2 09/22/2015
      [  109.442524] Call Trace:
      [  109.442527]  dump_stack+0x77/0x97
      [  109.442533]  check_noncircular+0xdc/0xf0
      [  109.442546]  __lock_acquire+0x1264/0x20b0
      [  109.442553]  lock_acquire+0xc2/0x400
      [  109.442564]  rt_spin_lock+0x2b/0xc0
      [  109.442570]  __local_bh_disable_ip+0xd9/0x270
      [  109.442573]  svc_xprt_do_enqueue+0xc0/0x4d0
      [  109.442577]  svc_close_list+0x60/0x90
      [  109.442581]  svc_close_net+0x49/0x1a0
      [  109.442585]  svc_shutdown_net+0x12/0x40
      [  109.442588]  nfsd_destroy+0xc5/0x180
      [  109.442590]  nfsd+0x1bc/0x270
      [  109.442595]  kthread+0x194/0x1b0
      [  109.442600]  ret_from_fork+0x22/0x30
      [  109.518225] nfsd: last server has exited, flushing export cache
      [  OK  ] Stopped NFSv4 ID-name mapping service.
      [  OK  ] Stopped GSSAPI Proxy Daemon.
      [  OK  ] Stopped NFS Mount Daemon.
      [  OK  ] Stopped NFS status monitor for NFSv2/3 locking..
      
      Fixes: 719f8bcc ("svcrpc: fix xpt_list traversal locking on shutdown")
      Signed-off-by: default avatarJoe Korty <joe.korty@concurrent-rt.com>
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      c7de87ff
    • Timo Rothenpieler's avatar
      svcrdma: disable timeouts on rdma backchannel · 6820bf77
      Timo Rothenpieler authored
      
      
      This brings it in line with the regular tcp backchannel, which also has
      all those timeouts disabled.
      
      Prevents the backchannel from timing out, getting some async operations
      like server side copying getting stuck indefinitely on the client side.
      
      Signed-off-by: default avatarTimo Rothenpieler <timo@rothenpieler.org>
      Fixes: 5d252f90 ("svcrdma: Add class for RDMA backwards direction transport")
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      6820bf77
  7. Feb 16, 2021
  8. Feb 15, 2021
  9. Feb 05, 2021
    • Chuck Lever's avatar
      xprtrdma: Clean up rpcrdma_prepare_readch() · 586a0787
      Chuck Lever authored
      
      
      Since commit 9ed5af26 ("SUNRPC: Clean up the handling of page
      padding in rpc_prepare_reply_pages()") [Dec 2020] the NFS client
      passes payload data to the transport with the padding in xdr->pages
      instead of in the send buffer's tail kvec. There's no need for the
      extra logic to advance the base of the tail kvec because the upper
      layer no longer places XDR padding there.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      586a0787
    • Chuck Lever's avatar
      xprtrdma: Pad optimization, revisited · 2324fbed
      Chuck Lever authored
      
      
      The NetApp Linux team discovered that with NFS/RDMA servers that do
      not support RFC 8797, the Linux client is forming NFSv4.x WRITE
      requests incorrectly.
      
      In this case, the Linux NFS client disables implicit chunk round-up
      for odd-length Read and Write chunks. The goal was to support old
      servers that needed that padding to be sent explicitly by clients.
      
      In that case the Linux NFS included the tail kvec in the Read chunk,
      since the tail contains any needed padding. That meant a separate
      memory registration is needed for the tail kvec, adding to the cost
      of forming such requests. To avoid that cost for a mere 3 bytes of
      zeroes that are always ignored by receivers, we try to use implicit
      roundup when possible.
      
      For NFSv4.x, the tail kvec also sometimes contains a trailing
      GETATTR operation. The Linux NFS client unintentionally includes
      that GETATTR operation in the Read chunk as well as inline.
      
      The fix is simply to /never/ include the tail kvec when forming a
      data payload Read chunk. The padding is thus now always present.
      
      Note that since commit 9ed5af26 ("SUNRPC: Clean up the handling
      of page padding in rpc_prepare_reply_pages()") [Dec 2020] the NFS
      client passes payload data to the transport with the padding in
      xdr->pages instead of in the send buffer's tail kvec. So now the
      Linux NFS client appends XDR padding to all odd-sized Read chunks.
      This shouldn't be a problem because:
      
       - RFC 8166-compliant servers are supposed to work with or without
         that XDR padding in Read chunks.
      
       - Since the padding is now in the same memory region as the data
         payload, a separate memory registration is not needed. In
         addition, the link layer extends data in RDMA Read responses to
         4-byte boundaries anyway. Thus there is now no savings when the
         padding is not included.
      
      Because older kernels include the payload's XDR padding in the
      tail kvec, a fix there will be more complicated. Thus backporting
      this patch is not recommended.
      
      Reported by: Olga Kornievskaia <Olga.Kornievskaia@netapp.com>
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Reviewed-by: default avatarTom Talpey <tom@talpey.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      2324fbed
    • Chuck Lever's avatar
      rpcrdma: Fix comments about reverse-direction operation · 84dff5eb
      Chuck Lever authored
      
      
      During the final stages of publication of RFC 8167, reviewers
      requested that we use the term "reverse direction" rather than
      "backwards direction". Update comments to reflect this preference.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Reviewed-by: default avatarTom Talpey <tom@talpey.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      84dff5eb
    • Chuck Lever's avatar
      xprtrdma: Refactor invocations of offset_in_page() · 67b16625
      Chuck Lever authored
      
      
      Clean up so that offset_in_page() is invoked less often in the
      most common case, which is mapping xdr->pages.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Reviewed-by: default avatarTom Talpey <tom@talpey.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      67b16625
    • Chuck Lever's avatar
      xprtrdma: Simplify rpcrdma_convert_kvec() and frwr_map() · 54e6aec5
      Chuck Lever authored
      
      
      Clean up.
      
      Remove a conditional branch from the SGL set-up loop in frwr_map():
      Instead of using either sg_set_page() or sg_set_buf(), initialize
      the mr_page field properly when rpcrdma_convert_kvec() converts the
      kvec to an SGL entry. frwr_map() can then invoke sg_set_page()
      unconditionally.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Reviewed-by: default avatarTom Talpey <tom@talpey.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      54e6aec5
    • Chuck Lever's avatar
      xprtrdma: Remove FMR support in rpcrdma_convert_iovs() · 9929f4ad
      Chuck Lever authored
      
      
      Support for FMR was removed by commit ba69cd12 ("xprtrdma:
      Remove support for FMR memory registration") [Dec 2018]. That means
      the buffer-splitting behavior of rpcrdma_convert_kvec(), added by
      commit 821c791a ("xprtrdma: Segment head and tail XDR buffers
      on page boundaries") [Mar 2016], is no longer necessary. FRWR
      memory registration handles this case with aplomb.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
      9929f4ad
  10. Feb 01, 2021
  11. Jan 25, 2021
    • Dave Wysochanski's avatar
      SUNRPC: Handle 0 length opaque XDR object data properly · e4a7d1f7
      Dave Wysochanski authored
      
      
      When handling an auth_gss downcall, it's possible to get 0-length
      opaque object for the acceptor.  In the case of a 0-length XDR
      object, make sure simple_get_netobj() fills in dest->data = NULL,
      and does not continue to kmemdup() which will set
      dest->data = ZERO_SIZE_PTR for the acceptor.
      
      The trace event code can handle NULL but not ZERO_SIZE_PTR for a
      string, and so without this patch the rpcgss_context trace event
      will crash the kernel as follows:
      
      [  162.887992] BUG: kernel NULL pointer dereference, address: 0000000000000010
      [  162.898693] #PF: supervisor read access in kernel mode
      [  162.900830] #PF: error_code(0x0000) - not-present page
      [  162.902940] PGD 0 P4D 0
      [  162.904027] Oops: 0000 [#1] SMP PTI
      [  162.905493] CPU: 4 PID: 4321 Comm: rpc.gssd Kdump: loaded Not tainted 5.10.0 #133
      [  162.908548] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
      [  162.910978] RIP: 0010:strlen+0x0/0x20
      [  162.912505] Code: 48 89 f9 74 09 48 83 c1 01 80 39 00 75 f7 31 d2 44 0f b6 04 16 44 88 04 11 48 83 c2 01 45 84 c0 75 ee c3 0f 1f 80 00 00 00 00 <80> 3f 00 74 10 48 89 f8 48 83 c0 01 80 38 00 75 f7 48 29 f8 c3 31
      [  162.920101] RSP: 0018:ffffaec900c77d90 EFLAGS: 00010202
      [  162.922263] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00000000fffde697
      [  162.925158] RDX: 000000000000002f RSI: 0000000000000080 RDI: 0000000000000010
      [  162.928073] RBP: 0000000000000010 R08: 0000000000000e10 R09: 0000000000000000
      [  162.930976] R10: ffff8e698a590cb8 R11: 0000000000000001 R12: 0000000000000e10
      [  162.933883] R13: 00000000fffde697 R14: 000000010034d517 R15: 0000000000070028
      [  162.936777] FS:  00007f1e1eb93700(0000) GS:ffff8e6ab7d00000(0000) knlGS:0000000000000000
      [  162.940067] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  162.942417] CR2: 0000000000000010 CR3: 0000000104eba000 CR4: 00000000000406e0
      [  162.945300] Call Trace:
      [  162.946428]  trace_event_raw_event_rpcgss_context+0x84/0x140 [auth_rpcgss]
      [  162.949308]  ? __kmalloc_track_caller+0x35/0x5a0
      [  162.951224]  ? gss_pipe_downcall+0x3a3/0x6a0 [auth_rpcgss]
      [  162.953484]  gss_pipe_downcall+0x585/0x6a0 [auth_rpcgss]
      [  162.955953]  rpc_pipe_write+0x58/0x70 [sunrpc]
      [  162.957849]  vfs_write+0xcb/0x2c0
      [  162.959264]  ksys_write+0x68/0xe0
      [  162.960706]  do_syscall_64+0x33/0x40
      [  162.962238]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  162.964346] RIP: 0033:0x7f1e1f1e57df
      
      Signed-off-by: default avatarDave Wysochanski <dwysocha@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      e4a7d1f7
    • Dave Wysochanski's avatar
      SUNRPC: Move simple_get_bytes and simple_get_netobj into private header · ba6dfce4
      Dave Wysochanski authored
      
      
      Remove duplicated helper functions to parse opaque XDR objects
      and place inside new file net/sunrpc/auth_gss/auth_gss_internal.h.
      In the new file carry the license and copyright from the source file
      net/sunrpc/auth_gss/auth_gss.c.  Finally, update the comment inside
      include/linux/sunrpc/xdr.h since lockd is not the only user of
      struct xdr_netobj.
      
      Signed-off-by: default avatarDave Wysochanski <dwysocha@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      ba6dfce4
    • Chuck Lever's avatar
      SUNRPC: Correct a comment · 4ff923ce
      Chuck Lever authored
      
      
      Clean up: The rq_argpages field was removed from struct svc_rqst in
      the pre-git era.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      4ff923ce
    • Chuck Lever's avatar
      svcrdma: DMA-sync the receive buffer in svc_rdma_recvfrom() · dd2d055b
      Chuck Lever authored
      
      
      The Receive completion handler doesn't look at the contents of the
      Receive buffer. The DMA sync isn't terribly expensive but it's one
      less thing that needs to be done by the Receive completion handler,
      which is single-threaded (per svc_xprt). This helps scalability.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      dd2d055b
    • Chuck Lever's avatar
      svcrdma: Reduce Receive doorbell rate · 43042b90
      Chuck Lever authored
      
      
      This is similar to commit e340c2d6 ("xprtrdma: Reduce the
      doorbell rate (Receive)") which added Receive batching to the
      client.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      43042b90
    • Chuck Lever's avatar
      svcrdma: Deprecate stat variables that are no longer used · c6226ff9
      Chuck Lever authored
      
      
      Clean up. We are not permitted to remove old proc files. Instead,
      convert these variables to stubs that are only ever allowed to
      display a value of zero.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      c6226ff9
Loading