NFSv4.1: Ensure that we handle _all_ SEQUENCE status bits.
Currently, the code assumes that the SEQUENCE status bits are mutually exclusive. They are not... Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Cc: stable@vger.kernel.org [>= 2.6.34]
This commit is contained in:
parent
4f38e4aadc
commit
111d489f0f
|
@ -1530,16 +1530,16 @@ void nfs41_handle_sequence_flag_errors(struct nfs_client *clp, u32 flags)
|
||||||
{
|
{
|
||||||
if (!flags)
|
if (!flags)
|
||||||
return;
|
return;
|
||||||
else if (flags & SEQ4_STATUS_RESTART_RECLAIM_NEEDED)
|
if (flags & SEQ4_STATUS_RESTART_RECLAIM_NEEDED)
|
||||||
nfs41_handle_server_reboot(clp);
|
nfs41_handle_server_reboot(clp);
|
||||||
else if (flags & (SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED |
|
if (flags & (SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED |
|
||||||
SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED |
|
SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED |
|
||||||
SEQ4_STATUS_ADMIN_STATE_REVOKED |
|
SEQ4_STATUS_ADMIN_STATE_REVOKED |
|
||||||
SEQ4_STATUS_LEASE_MOVED))
|
SEQ4_STATUS_LEASE_MOVED))
|
||||||
nfs41_handle_state_revoked(clp);
|
nfs41_handle_state_revoked(clp);
|
||||||
else if (flags & SEQ4_STATUS_RECALLABLE_STATE_REVOKED)
|
if (flags & SEQ4_STATUS_RECALLABLE_STATE_REVOKED)
|
||||||
nfs41_handle_recallable_state_revoked(clp);
|
nfs41_handle_recallable_state_revoked(clp);
|
||||||
else if (flags & (SEQ4_STATUS_CB_PATH_DOWN |
|
if (flags & (SEQ4_STATUS_CB_PATH_DOWN |
|
||||||
SEQ4_STATUS_BACKCHANNEL_FAULT |
|
SEQ4_STATUS_BACKCHANNEL_FAULT |
|
||||||
SEQ4_STATUS_CB_PATH_DOWN_SESSION))
|
SEQ4_STATUS_CB_PATH_DOWN_SESSION))
|
||||||
nfs41_handle_cb_path_down(clp);
|
nfs41_handle_cb_path_down(clp);
|
||||||
|
|
Loading…
Reference in New Issue