NFSD: Add nfsd4_send_cb_offload()
[ Upstream commit e72f9bc006c08841c46d27747a4debc747a8fe13 ] Refactor for legibility. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
d87486acbd
commit
e1d1b6574e
@@ -1753,6 +1753,27 @@ static void cleanup_async_copy(struct nfsd4_copy *copy)
|
|||||||
nfs4_put_copy(copy);
|
nfs4_put_copy(copy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nfsd4_send_cb_offload(struct nfsd4_copy *copy)
|
||||||
|
{
|
||||||
|
struct nfsd4_copy *cb_copy;
|
||||||
|
|
||||||
|
cb_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);
|
||||||
|
if (!cb_copy)
|
||||||
|
return;
|
||||||
|
|
||||||
|
refcount_set(&cb_copy->refcount, 1);
|
||||||
|
memcpy(&cb_copy->cp_res, ©->cp_res, sizeof(copy->cp_res));
|
||||||
|
cb_copy->cp_clp = copy->cp_clp;
|
||||||
|
cb_copy->nfserr = copy->nfserr;
|
||||||
|
memcpy(&cb_copy->fh, ©->fh, sizeof(copy->fh));
|
||||||
|
|
||||||
|
nfsd4_init_cb(&cb_copy->cp_cb, cb_copy->cp_clp,
|
||||||
|
&nfsd4_cb_offload_ops, NFSPROC4_CLNT_CB_OFFLOAD);
|
||||||
|
trace_nfsd_cb_offload(copy->cp_clp, ©->cp_res.cb_stateid,
|
||||||
|
©->fh, copy->cp_count, copy->nfserr);
|
||||||
|
nfsd4_run_cb(&cb_copy->cp_cb);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nfsd4_do_async_copy - kthread function for background server-side COPY
|
* nfsd4_do_async_copy - kthread function for background server-side COPY
|
||||||
* @data: arguments for COPY operation
|
* @data: arguments for COPY operation
|
||||||
@@ -1763,7 +1784,6 @@ static void cleanup_async_copy(struct nfsd4_copy *copy)
|
|||||||
static int nfsd4_do_async_copy(void *data)
|
static int nfsd4_do_async_copy(void *data)
|
||||||
{
|
{
|
||||||
struct nfsd4_copy *copy = (struct nfsd4_copy *)data;
|
struct nfsd4_copy *copy = (struct nfsd4_copy *)data;
|
||||||
struct nfsd4_copy *cb_copy;
|
|
||||||
|
|
||||||
if (nfsd4_ssc_is_inter(copy)) {
|
if (nfsd4_ssc_is_inter(copy)) {
|
||||||
struct file *filp;
|
struct file *filp;
|
||||||
@@ -1785,20 +1805,7 @@ static int nfsd4_do_async_copy(void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
do_callback:
|
do_callback:
|
||||||
cb_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);
|
nfsd4_send_cb_offload(copy);
|
||||||
if (!cb_copy)
|
|
||||||
goto out;
|
|
||||||
refcount_set(&cb_copy->refcount, 1);
|
|
||||||
memcpy(&cb_copy->cp_res, ©->cp_res, sizeof(copy->cp_res));
|
|
||||||
cb_copy->cp_clp = copy->cp_clp;
|
|
||||||
cb_copy->nfserr = copy->nfserr;
|
|
||||||
memcpy(&cb_copy->fh, ©->fh, sizeof(copy->fh));
|
|
||||||
nfsd4_init_cb(&cb_copy->cp_cb, cb_copy->cp_clp,
|
|
||||||
&nfsd4_cb_offload_ops, NFSPROC4_CLNT_CB_OFFLOAD);
|
|
||||||
trace_nfsd_cb_offload(copy->cp_clp, ©->cp_res.cb_stateid,
|
|
||||||
©->fh, copy->cp_count, copy->nfserr);
|
|
||||||
nfsd4_run_cb(&cb_copy->cp_cb);
|
|
||||||
out:
|
|
||||||
cleanup_async_copy(copy);
|
cleanup_async_copy(copy);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user