Commit 3ff3600e authored by J. Bruce Fields's avatar J. Bruce Fields

nfsd4: simplify nfsd4_cb_prepare

Remove handling for a nonexistant case (status && !-EAGAIN).
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 14a24e99
...@@ -613,24 +613,14 @@ void nfsd4_change_callback(struct nfs4_client *clp, struct nfs4_cb_conn *conn) ...@@ -613,24 +613,14 @@ void nfsd4_change_callback(struct nfs4_client *clp, struct nfs4_cb_conn *conn)
* If the slot is available, then mark it busy. Otherwise, set the * If the slot is available, then mark it busy. Otherwise, set the
* thread for sleeping on the callback RPC wait queue. * thread for sleeping on the callback RPC wait queue.
*/ */
static int nfsd41_cb_setup_sequence(struct nfs4_client *clp, static bool nfsd41_cb_get_slot(struct nfs4_client *clp, struct rpc_task *task)
struct rpc_task *task)
{ {
u32 *ptr = (u32 *)clp->cl_cb_session->se_sessionid.data;
int status = 0;
dprintk("%s: %u:%u:%u:%u\n", __func__,
ptr[0], ptr[1], ptr[2], ptr[3]);
if (test_and_set_bit(0, &clp->cl_cb_slot_busy) != 0) { if (test_and_set_bit(0, &clp->cl_cb_slot_busy) != 0) {
rpc_sleep_on(&clp->cl_cb_waitq, task, NULL); rpc_sleep_on(&clp->cl_cb_waitq, task, NULL);
dprintk("%s slot is busy\n", __func__); dprintk("%s slot is busy\n", __func__);
status = -EAGAIN; return false;
goto out;
} }
out: return true;
dprintk("%s status=%d\n", __func__, status);
return status;
} }
/* /*
...@@ -643,19 +633,11 @@ static void nfsd4_cb_prepare(struct rpc_task *task, void *calldata) ...@@ -643,19 +633,11 @@ static void nfsd4_cb_prepare(struct rpc_task *task, void *calldata)
struct nfs4_delegation *dp = container_of(cb, struct nfs4_delegation, dl_recall); struct nfs4_delegation *dp = container_of(cb, struct nfs4_delegation, dl_recall);
struct nfs4_client *clp = dp->dl_client; struct nfs4_client *clp = dp->dl_client;
u32 minorversion = clp->cl_minorversion; u32 minorversion = clp->cl_minorversion;
int status = 0;
cb->cb_minorversion = minorversion; cb->cb_minorversion = minorversion;
if (minorversion) { if (minorversion) {
status = nfsd41_cb_setup_sequence(clp, task); if (!nfsd41_cb_get_slot(clp, task))
if (status) {
if (status != -EAGAIN) {
/* terminate rpc task */
task->tk_status = status;
task->tk_action = NULL;
}
return; return;
}
} }
rpc_call_start(task); rpc_call_start(task);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment