1. 25 10月, 2010 20 次提交
  2. 24 10月, 2010 18 次提交
  3. 20 10月, 2010 2 次提交
    • T
      NFSv4: Don't call nfs4_reclaim_complete() on receiving NFS4ERR_STALE_CLIENTID · 6eaa6149
      Trond Myklebust 提交于
      If the server sends us an NFS4ERR_STALE_CLIENTID while the state management
      thread is busy reclaiming state, we do want to treat all state that wasn't
      reclaimed before the STALE_CLIENTID as if a network partition occurred (see
      the edge conditions described in RFC3530 and RFC5661).
      What we do not want to do is to send an nfs4_reclaim_complete(), since we
      haven't yet even started reclaiming state after the server rebooted.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: stable@kernel.org
      6eaa6149
    • T
      NFSv4: Don't call nfs4_state_mark_reclaim_reboot() from error handlers · ae1007d3
      Trond Myklebust 提交于
      In the case of a server reboot, the state recovery thread starts by calling
      nfs4_state_end_reclaim_reboot() in order to avoid edge conditions when
      the server reboots while the client is in the middle of recovery.
      
      However, if the client has already marked the nfs4_state as requiring
      reboot recovery, then the above behaviour will cause the recovery thread to
      treat the open as if it was part of such an edge condition: the open will
      be recovered as if it was part of a lease expiration (and all the locks
      will be lost).
      Fix is to remove the call to nfs4_state_mark_reclaim_reboot from
      nfs4_async_handle_error(), and nfs4_handle_exception(). Instead we leave it
      to the recovery thread to do this for us.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: stable@kernel.org
      ae1007d3