NFSv4: Clean up nfs4_delegreturn_done

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
Trond Myklebust 2017-11-06 15:28:10 -05:00 коммит произвёл Anna Schumaker
Родитель 91b30d2e7f
Коммит 140087fdf6
1 изменённых файлов: 14 добавлений и 18 удалений

Просмотреть файл

@ -5777,11 +5777,8 @@ static void nfs4_delegreturn_done(struct rpc_task *task, void *calldata)
break; break;
case -NFS4ERR_OLD_STATEID: case -NFS4ERR_OLD_STATEID:
if (nfs4_refresh_layout_stateid(&data->args.lr_args->stateid, if (nfs4_refresh_layout_stateid(&data->args.lr_args->stateid,
data->inode)) { data->inode))
data->res.lr_ret = 0; goto lr_restart;
rpc_restart_call_prepare(task);
return;
}
/* Fallthrough */ /* Fallthrough */
case -NFS4ERR_ADMIN_REVOKED: case -NFS4ERR_ADMIN_REVOKED:
case -NFS4ERR_DELEG_REVOKED: case -NFS4ERR_DELEG_REVOKED:
@ -5791,9 +5788,7 @@ static void nfs4_delegreturn_done(struct rpc_task *task, void *calldata)
case -NFS4ERR_WRONG_CRED: case -NFS4ERR_WRONG_CRED:
data->args.lr_args = NULL; data->args.lr_args = NULL;
data->res.lr_res = NULL; data->res.lr_res = NULL;
data->res.lr_ret = 0; goto lr_restart;
rpc_restart_call_prepare(task);
return;
} }
} }
@ -5813,29 +5808,30 @@ static void nfs4_delegreturn_done(struct rpc_task *task, void *calldata)
task->tk_status = 0; task->tk_status = 0;
break; break;
case -NFS4ERR_OLD_STATEID: case -NFS4ERR_OLD_STATEID:
if (nfs4_refresh_delegation_stateid(&data->stateid, data->inode)) { if (nfs4_refresh_delegation_stateid(&data->stateid, data->inode))
task->tk_status = 0; goto out_restart;
rpc_restart_call_prepare(task);
return;
}
task->tk_status = 0; task->tk_status = 0;
break; break;
case -NFS4ERR_ACCESS: case -NFS4ERR_ACCESS:
if (data->args.bitmask) { if (data->args.bitmask) {
data->args.bitmask = NULL; data->args.bitmask = NULL;
data->res.fattr = NULL; data->res.fattr = NULL;
task->tk_status = 0; goto out_restart;
rpc_restart_call_prepare(task);
return;
} }
/* Fallthrough */
default: default:
if (nfs4_async_handle_error(task, data->res.server, if (nfs4_async_handle_error(task, data->res.server,
NULL, NULL) == -EAGAIN) { NULL, NULL) == -EAGAIN) {
rpc_restart_call_prepare(task); goto out_restart;
return;
} }
} }
data->rpc_status = task->tk_status; data->rpc_status = task->tk_status;
return;
lr_restart:
data->res.lr_ret = 0;
out_restart:
task->tk_status = 0;
rpc_restart_call_prepare(task);
} }
static void nfs4_delegreturn_release(void *calldata) static void nfs4_delegreturn_release(void *calldata)