1. 17 Feb, 2017 3 commits
  2. 14 Nov, 2016 1 commit
  3. 26 Sep, 2016 1 commit
  4. 16 Sep, 2016 1 commit
  5. 15 Jun, 2016 1 commit
  6. 23 Dec, 2015 1 commit
    • J. Bruce Fields's avatar
      nfsd: don't base cl_cb_status on stale information · d4f72cb7
      J. Bruce Fields authored
      
      
      The rpc client we use to send callbacks may change occasionally.  (In
      the 4.0 case, the client can use setclientid/setclientid_confirm to
      update the callback parameters.  In the 4.1+ case, sessions and
      connections can come and go.)
      
      The update is done from the callback thread by nfsd4_process_cb_update,
      which shuts down the old rpc client and then creates a new one.
      
      The client shutdown kills any ongoing rpc calls.  There won't be any new
      ones till the new one's created and the callback thread moves on.
      
      When an rpc encounters a problem that may suggest callback rpc's
      aren't working any longer, it normally sets NFSD4_CB_DOWN, so the server
      can tell the client something's wrong.
      
      But if the rpc notices CB_UPDATE is set, then the failure may just be a
      normal result of shutting down the callback client.  Or it could just be
      a coincidence, but in any case, it means we're runing with the old
      about-to-be-discarded client, so the failure's not interesting.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      d4f72cb7
  7. 23 Nov, 2015 1 commit
  8. 13 Aug, 2015 1 commit
  9. 04 Jun, 2015 2 commits
    • Kinglong Mee's avatar
      nfsd: Update callback sequnce id only CB_SEQUENCE success · 276f03e3
      Kinglong Mee authored
      
      
      When testing pnfs layout, nfsd got error NFS4ERR_SEQ_MISORDERED.
      It is caused by nfs return NFS4ERR_DELAY before validate_seqid(),
      don't update the sequnce id, but nfsd updates the sequnce id !!!
      
      According to RFC5661 20.9.3,
      " If CB_SEQUENCE returns an error, then the state of the slot
      (sequence ID, cached reply) MUST NOT change. "
      Signed-off-by: default avatarKinglong Mee <kinglongmee@gmail.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      276f03e3
    • Kinglong Mee's avatar
      nfsd: Reset cb_status in nfsd4_cb_prepare() at retrying · 4399396e
      Kinglong Mee authored
      
      
      nfsd enters a infinite loop and prints message every 10 seconds:
      
      May 31 18:33:52 test-server kernel: Error sending entire callback!
      May 31 18:34:01 test-server kernel: Error sending entire callback!
      
      This is caused by a cb_layoutreturn getting error -10008
      (NFS4ERR_DELAY), the client crashing, and then nfsd entering the
      infinite loop:
      
        bc_sendto --> call_timeout --> nfsd4_cb_done --> nfsd4_cb_layout_done
        with error -10008 --> rpc_delay(task, HZ/100) --> bc_sendto ...
      
      Reproduced using xfstests 074 with nfs client's kdump on,
      CONFIG_DEFAULT_HUNG_TASK_TIMEOUT set, and client's blkmapd down:
      
      1. nfs client's write operation will get the layout of file,
         and then send getdeviceinfo,
      2. but layout segment is not recorded by client because blkmapd is down,
      3. client writes data by sending WRITE to server,
      4. nfs server recalls the layout of the file before WRITE,
      5. network error causes the client reset the session and return NFS4ERR_DELAY,
      6. so client's WRITE operation is waiting the reply.
         If the task hangs 120s, the client will crash.
      7. so that, the next bc_sendto will fail with TIMEOUT,
         and cb_status is NFS4ERR_DELAY.
      Signed-off-by: default avatarKinglong Mee <kinglongmee@gmail.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      4399396e
  10. 04 May, 2015 3 commits
  11. 02 Feb, 2015 1 commit
    • Christoph Hellwig's avatar
      nfsd: implement pNFS layout recalls · c5c707f9
      Christoph Hellwig authored
      
      
      Add support to issue layout recalls to clients.  For now we only support
      full-file recalls to get a simple and stable implementation.  This allows
      to embedd a nfsd4_callback structure in the layout_state and thus avoid
      any memory allocations under spinlocks during a recall.  For normal
      use cases that do not intent to share a single file between multiple
      clients this implementation is fully sufficient.
      
      To ensure layouts are recalled on local filesystem access each layout
      state registers a new FL_LAYOUT lease with the kernel file locking code,
      which filesystems that support pNFS exports that require recalls need
      to break on conflicting access patterns.
      
      The XDR code is based on the old pNFS server implementation by
      Andy Adamson, Benny Halevy, Boaz Harrosh, Dean Hildebrand, Fred Isaman,
      Marc Eshel, Mike Sager and Ricardo Labiaga.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      c5c707f9
  12. 19 Nov, 2014 1 commit
  13. 01 Oct, 2014 1 commit
  14. 26 Sep, 2014 6 commits
  15. 31 Jul, 2014 2 commits
  16. 29 Jul, 2014 1 commit
  17. 23 Jul, 2014 1 commit
  18. 18 Jul, 2014 1 commit
  19. 17 Jul, 2014 1 commit
  20. 16 Jul, 2014 1 commit
  21. 18 Apr, 2014 1 commit
  22. 30 Mar, 2014 1 commit
  23. 09 Apr, 2013 1 commit
  24. 04 Apr, 2013 1 commit
  25. 28 Nov, 2012 1 commit
  26. 15 Nov, 2012 1 commit
  27. 14 Nov, 2012 1 commit
  28. 08 Nov, 2012 2 commits