diff options
| -rw-r--r-- | fs/nfs/nfs4proc.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index ee9ca19457ab..1933e6719bb0 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
| @@ -6112,21 +6112,22 @@ nfs4_layoutcommit_done(struct rpc_task *task, void *calldata) | |||
| 6112 | return; | 6112 | return; |
| 6113 | 6113 | ||
| 6114 | switch (task->tk_status) { /* Just ignore these failures */ | 6114 | switch (task->tk_status) { /* Just ignore these failures */ |
| 6115 | case NFS4ERR_DELEG_REVOKED: /* layout was recalled */ | 6115 | case -NFS4ERR_DELEG_REVOKED: /* layout was recalled */ |
| 6116 | case NFS4ERR_BADIOMODE: /* no IOMODE_RW layout for range */ | 6116 | case -NFS4ERR_BADIOMODE: /* no IOMODE_RW layout for range */ |
| 6117 | case NFS4ERR_BADLAYOUT: /* no layout */ | 6117 | case -NFS4ERR_BADLAYOUT: /* no layout */ |
| 6118 | case NFS4ERR_GRACE: /* loca_recalim always false */ | 6118 | case -NFS4ERR_GRACE: /* loca_recalim always false */ |
| 6119 | task->tk_status = 0; | 6119 | task->tk_status = 0; |
| 6120 | } | 6120 | break; |
| 6121 | 6121 | case 0: | |
| 6122 | if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) { | ||
| 6123 | rpc_restart_call_prepare(task); | ||
| 6124 | return; | ||
| 6125 | } | ||
| 6126 | |||
| 6127 | if (task->tk_status == 0) | ||
| 6128 | nfs_post_op_update_inode_force_wcc(data->args.inode, | 6122 | nfs_post_op_update_inode_force_wcc(data->args.inode, |
| 6129 | data->res.fattr); | 6123 | data->res.fattr); |
| 6124 | break; | ||
| 6125 | default: | ||
| 6126 | if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) { | ||
| 6127 | rpc_restart_call_prepare(task); | ||
| 6128 | return; | ||
| 6129 | } | ||
| 6130 | } | ||
| 6130 | } | 6131 | } |
| 6131 | 6132 | ||
| 6132 | static void nfs4_layoutcommit_release(void *calldata) | 6133 | static void nfs4_layoutcommit_release(void *calldata) |
