nfsd: create xdr_netobj_dup helper
Move some repeated code to a common helper. No change in behavior. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
89c905becc
commit
6f4859b8a7
|
@ -1857,7 +1857,7 @@ static struct nfs4_client *alloc_client(struct xdr_netobj name)
|
||||||
clp = kmem_cache_zalloc(client_slab, GFP_KERNEL);
|
clp = kmem_cache_zalloc(client_slab, GFP_KERNEL);
|
||||||
if (clp == NULL)
|
if (clp == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
clp->cl_name.data = kmemdup(name.data, name.len, GFP_KERNEL);
|
xdr_netobj_dup(&clp->cl_name, &name, GFP_KERNEL);
|
||||||
if (clp->cl_name.data == NULL)
|
if (clp->cl_name.data == NULL)
|
||||||
goto err_no_name;
|
goto err_no_name;
|
||||||
clp->cl_ownerstr_hashtbl = kmalloc_array(OWNER_HASH_SIZE,
|
clp->cl_ownerstr_hashtbl = kmalloc_array(OWNER_HASH_SIZE,
|
||||||
|
@ -1867,7 +1867,6 @@ static struct nfs4_client *alloc_client(struct xdr_netobj name)
|
||||||
goto err_no_hashtbl;
|
goto err_no_hashtbl;
|
||||||
for (i = 0; i < OWNER_HASH_SIZE; i++)
|
for (i = 0; i < OWNER_HASH_SIZE; i++)
|
||||||
INIT_LIST_HEAD(&clp->cl_ownerstr_hashtbl[i]);
|
INIT_LIST_HEAD(&clp->cl_ownerstr_hashtbl[i]);
|
||||||
clp->cl_name.len = name.len;
|
|
||||||
INIT_LIST_HEAD(&clp->cl_sessions);
|
INIT_LIST_HEAD(&clp->cl_sessions);
|
||||||
idr_init(&clp->cl_stateids);
|
idr_init(&clp->cl_stateids);
|
||||||
atomic_set(&clp->cl_rpc_users, 0);
|
atomic_set(&clp->cl_rpc_users, 0);
|
||||||
|
@ -4000,12 +3999,11 @@ static inline void *alloc_stateowner(struct kmem_cache *slab, struct xdr_netobj
|
||||||
if (!sop)
|
if (!sop)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
sop->so_owner.data = kmemdup(owner->data, owner->len, GFP_KERNEL);
|
xdr_netobj_dup(&sop->so_owner, owner, GFP_KERNEL);
|
||||||
if (!sop->so_owner.data) {
|
if (!sop->so_owner.data) {
|
||||||
kmem_cache_free(slab, sop);
|
kmem_cache_free(slab, sop);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
sop->so_owner.len = owner->len;
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&sop->so_stateids);
|
INIT_LIST_HEAD(&sop->so_stateids);
|
||||||
sop->so_client = clp;
|
sop->so_client = clp;
|
||||||
|
@ -6093,12 +6091,11 @@ nfs4_set_lock_denied(struct file_lock *fl, struct nfsd4_lock_denied *deny)
|
||||||
|
|
||||||
if (fl->fl_lmops == &nfsd_posix_mng_ops) {
|
if (fl->fl_lmops == &nfsd_posix_mng_ops) {
|
||||||
lo = (struct nfs4_lockowner *) fl->fl_owner;
|
lo = (struct nfs4_lockowner *) fl->fl_owner;
|
||||||
deny->ld_owner.data = kmemdup(lo->lo_owner.so_owner.data,
|
xdr_netobj_dup(&deny->ld_owner, &lo->lo_owner.so_owner,
|
||||||
lo->lo_owner.so_owner.len, GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (!deny->ld_owner.data)
|
if (!deny->ld_owner.data)
|
||||||
/* We just don't care that much */
|
/* We just don't care that much */
|
||||||
goto nevermind;
|
goto nevermind;
|
||||||
deny->ld_owner.len = lo->lo_owner.so_owner.len;
|
|
||||||
deny->ld_clientid = lo->lo_owner.so_client->cl_clientid;
|
deny->ld_clientid = lo->lo_owner.so_client->cl_clientid;
|
||||||
} else {
|
} else {
|
||||||
nevermind:
|
nevermind:
|
||||||
|
|
|
@ -164,6 +164,13 @@ xdr_decode_opaque_fixed(__be32 *p, void *ptr, unsigned int len)
|
||||||
return p + XDR_QUADLEN(len);
|
return p + XDR_QUADLEN(len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void xdr_netobj_dup(struct xdr_netobj *dst,
|
||||||
|
struct xdr_netobj *src, gfp_t gfp_mask)
|
||||||
|
{
|
||||||
|
dst->data = kmemdup(src->data, src->len, gfp_mask);
|
||||||
|
dst->len = src->len;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Adjust kvec to reflect end of xdr'ed data (RPC client XDR)
|
* Adjust kvec to reflect end of xdr'ed data (RPC client XDR)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue