aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/flexfilelayout/flexfilelayout.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/flexfilelayout/flexfilelayout.c')
-rw-r--r--fs/nfs/flexfilelayout/flexfilelayout.c33
1 files changed, 0 insertions, 33 deletions
diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c
index 23542dc44a25..1f2ac3dd0fe5 100644
--- a/fs/nfs/flexfilelayout/flexfilelayout.c
+++ b/fs/nfs/flexfilelayout/flexfilelayout.c
@@ -1050,34 +1050,10 @@ static int ff_layout_async_handle_error_v4(struct rpc_task *task,
1050{ 1050{
1051 struct pnfs_layout_hdr *lo = lseg->pls_layout; 1051 struct pnfs_layout_hdr *lo = lseg->pls_layout;
1052 struct inode *inode = lo->plh_inode; 1052 struct inode *inode = lo->plh_inode;
1053 struct nfs_server *mds_server = NFS_SERVER(inode);
1054
1055 struct nfs4_deviceid_node *devid = FF_LAYOUT_DEVID_NODE(lseg, idx); 1053 struct nfs4_deviceid_node *devid = FF_LAYOUT_DEVID_NODE(lseg, idx);
1056 struct nfs_client *mds_client = mds_server->nfs_client;
1057 struct nfs4_slot_table *tbl = &clp->cl_session->fc_slot_table; 1054 struct nfs4_slot_table *tbl = &clp->cl_session->fc_slot_table;
1058 1055
1059 switch (task->tk_status) { 1056 switch (task->tk_status) {
1060 /* MDS state errors */
1061 case -NFS4ERR_DELEG_REVOKED:
1062 case -NFS4ERR_ADMIN_REVOKED:
1063 case -NFS4ERR_BAD_STATEID:
1064 if (state == NULL)
1065 break;
1066 nfs_remove_bad_delegation(state->inode, NULL);
1067 case -NFS4ERR_OPENMODE:
1068 if (state == NULL)
1069 break;
1070 if (nfs4_schedule_stateid_recovery(mds_server, state) < 0)
1071 goto out_bad_stateid;
1072 goto wait_on_recovery;
1073 case -NFS4ERR_EXPIRED:
1074 if (state != NULL) {
1075 if (nfs4_schedule_stateid_recovery(mds_server, state) < 0)
1076 goto out_bad_stateid;
1077 }
1078 nfs4_schedule_lease_recovery(mds_client);
1079 goto wait_on_recovery;
1080 /* DS session errors */
1081 case -NFS4ERR_BADSESSION: 1057 case -NFS4ERR_BADSESSION:
1082 case -NFS4ERR_BADSLOT: 1058 case -NFS4ERR_BADSLOT:
1083 case -NFS4ERR_BAD_HIGH_SLOT: 1059 case -NFS4ERR_BAD_HIGH_SLOT:
@@ -1137,17 +1113,8 @@ reset:
1137 task->tk_status); 1113 task->tk_status);
1138 return -NFS4ERR_RESET_TO_MDS; 1114 return -NFS4ERR_RESET_TO_MDS;
1139 } 1115 }
1140out:
1141 task->tk_status = 0; 1116 task->tk_status = 0;
1142 return -EAGAIN; 1117 return -EAGAIN;
1143out_bad_stateid:
1144 task->tk_status = -EIO;
1145 return 0;
1146wait_on_recovery:
1147 rpc_sleep_on(&mds_client->cl_rpcwaitq, task, NULL);
1148 if (test_bit(NFS4CLNT_MANAGER_RUNNING, &mds_client->cl_state) == 0)
1149 rpc_wake_up_queued_task(&mds_client->cl_rpcwaitq, task);
1150 goto out;
1151} 1118}
1152 1119
1153/* Retry all errors through either pNFS or MDS except for -EJUKEBOX */ 1120/* Retry all errors through either pNFS or MDS except for -EJUKEBOX */