Loading fs/nfs/nfs4proc.c +6 −0 Original line number Original line Diff line number Diff line Loading @@ -3039,6 +3039,7 @@ struct nfs4_closedata { struct { struct { struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_res res; struct nfs4_layoutreturn_res res; struct nfs4_xdr_opaque_data ld_private; u32 roc_barrier; u32 roc_barrier; bool roc; bool roc; } lr; } lr; Loading Loading @@ -3267,6 +3268,7 @@ int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait) if (IS_ERR(calldata->arg.seqid)) if (IS_ERR(calldata->arg.seqid)) goto out_free_calldata; goto out_free_calldata; calldata->arg.fmode = 0; calldata->arg.fmode = 0; calldata->lr.arg.ld_private = &calldata->lr.ld_private; calldata->res.fattr = &calldata->fattr; calldata->res.fattr = &calldata->fattr; calldata->res.seqid = calldata->arg.seqid; calldata->res.seqid = calldata->arg.seqid; calldata->res.server = server; calldata->res.server = server; Loading Loading @@ -5599,6 +5601,7 @@ struct nfs4_delegreturndata { struct { struct { struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_res res; struct nfs4_layoutreturn_res res; struct nfs4_xdr_opaque_data ld_private; u32 roc_barrier; u32 roc_barrier; bool roc; bool roc; } lr; } lr; Loading Loading @@ -5735,6 +5738,7 @@ static int _nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, co data->res.fattr = &data->fattr; data->res.fattr = &data->fattr; data->res.server = server; data->res.server = server; data->res.lr_ret = -NFS4ERR_NOMATCHING_LAYOUT; data->res.lr_ret = -NFS4ERR_NOMATCHING_LAYOUT; data->lr.arg.ld_private = &data->lr.ld_private; nfs_fattr_init(data->res.fattr); nfs_fattr_init(data->res.fattr); data->timestamp = jiffies; data->timestamp = jiffies; data->rpc_status = 0; data->rpc_status = 0; Loading Loading @@ -8633,6 +8637,8 @@ static void nfs4_layoutreturn_release(void *calldata) nfs4_sequence_free_slot(&lrp->res.seq_res); nfs4_sequence_free_slot(&lrp->res.seq_res); pnfs_put_layout_hdr(lrp->args.layout); pnfs_put_layout_hdr(lrp->args.layout); nfs_iput_and_deactive(lrp->inode); nfs_iput_and_deactive(lrp->inode); if (lrp->ld_private.ops && lrp->ld_private.ops->free) lrp->ld_private.ops->free(&lrp->ld_private); kfree(calldata); kfree(calldata); dprintk("<-- %s\n", __func__); dprintk("<-- %s\n", __func__); } } Loading fs/nfs/nfs4xdr.c +3 −1 Original line number Original line Diff line number Diff line Loading @@ -2035,7 +2035,9 @@ encode_layoutreturn(struct xdr_stream *xdr, spin_lock(&args->inode->i_lock); spin_lock(&args->inode->i_lock); encode_nfs4_stateid(xdr, &args->stateid); encode_nfs4_stateid(xdr, &args->stateid); spin_unlock(&args->inode->i_lock); spin_unlock(&args->inode->i_lock); if (lr_ops->encode_layoutreturn) if (args->ld_private->ops && args->ld_private->ops->encode) args->ld_private->ops->encode(xdr, args, args->ld_private); else if (lr_ops->encode_layoutreturn) lr_ops->encode_layoutreturn(xdr, args); lr_ops->encode_layoutreturn(xdr, args); else else encode_uint32(xdr, 0); encode_uint32(xdr, 0); Loading fs/nfs/pnfs.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1086,6 +1086,7 @@ pnfs_send_layoutreturn(struct pnfs_layout_hdr *lo, const nfs4_stateid *stateid, } } pnfs_init_layoutreturn_args(&lrp->args, lo, stateid, iomode); pnfs_init_layoutreturn_args(&lrp->args, lo, stateid, iomode); lrp->args.ld_private = &lrp->ld_private; lrp->clp = NFS_SERVER(ino)->nfs_client; lrp->clp = NFS_SERVER(ino)->nfs_client; lrp->cred = lo->plh_lc_cred; lrp->cred = lo->plh_lc_cred; Loading include/linux/nfs_xdr.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -320,6 +320,7 @@ struct nfs4_layoutreturn_args { struct pnfs_layout_range range; struct pnfs_layout_range range; nfs4_stateid stateid; nfs4_stateid stateid; __u32 layout_type; __u32 layout_type; struct nfs4_xdr_opaque_data *ld_private; }; }; struct nfs4_layoutreturn_res { struct nfs4_layoutreturn_res { Loading @@ -335,6 +336,7 @@ struct nfs4_layoutreturn { struct nfs_client *clp; struct nfs_client *clp; struct inode *inode; struct inode *inode; int rpc_status; int rpc_status; struct nfs4_xdr_opaque_data ld_private; }; }; #define PNFS_LAYOUTSTATS_MAXSIZE 256 #define PNFS_LAYOUTSTATS_MAXSIZE 256 Loading Loading
fs/nfs/nfs4proc.c +6 −0 Original line number Original line Diff line number Diff line Loading @@ -3039,6 +3039,7 @@ struct nfs4_closedata { struct { struct { struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_res res; struct nfs4_layoutreturn_res res; struct nfs4_xdr_opaque_data ld_private; u32 roc_barrier; u32 roc_barrier; bool roc; bool roc; } lr; } lr; Loading Loading @@ -3267,6 +3268,7 @@ int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait) if (IS_ERR(calldata->arg.seqid)) if (IS_ERR(calldata->arg.seqid)) goto out_free_calldata; goto out_free_calldata; calldata->arg.fmode = 0; calldata->arg.fmode = 0; calldata->lr.arg.ld_private = &calldata->lr.ld_private; calldata->res.fattr = &calldata->fattr; calldata->res.fattr = &calldata->fattr; calldata->res.seqid = calldata->arg.seqid; calldata->res.seqid = calldata->arg.seqid; calldata->res.server = server; calldata->res.server = server; Loading Loading @@ -5599,6 +5601,7 @@ struct nfs4_delegreturndata { struct { struct { struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_args arg; struct nfs4_layoutreturn_res res; struct nfs4_layoutreturn_res res; struct nfs4_xdr_opaque_data ld_private; u32 roc_barrier; u32 roc_barrier; bool roc; bool roc; } lr; } lr; Loading Loading @@ -5735,6 +5738,7 @@ static int _nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, co data->res.fattr = &data->fattr; data->res.fattr = &data->fattr; data->res.server = server; data->res.server = server; data->res.lr_ret = -NFS4ERR_NOMATCHING_LAYOUT; data->res.lr_ret = -NFS4ERR_NOMATCHING_LAYOUT; data->lr.arg.ld_private = &data->lr.ld_private; nfs_fattr_init(data->res.fattr); nfs_fattr_init(data->res.fattr); data->timestamp = jiffies; data->timestamp = jiffies; data->rpc_status = 0; data->rpc_status = 0; Loading Loading @@ -8633,6 +8637,8 @@ static void nfs4_layoutreturn_release(void *calldata) nfs4_sequence_free_slot(&lrp->res.seq_res); nfs4_sequence_free_slot(&lrp->res.seq_res); pnfs_put_layout_hdr(lrp->args.layout); pnfs_put_layout_hdr(lrp->args.layout); nfs_iput_and_deactive(lrp->inode); nfs_iput_and_deactive(lrp->inode); if (lrp->ld_private.ops && lrp->ld_private.ops->free) lrp->ld_private.ops->free(&lrp->ld_private); kfree(calldata); kfree(calldata); dprintk("<-- %s\n", __func__); dprintk("<-- %s\n", __func__); } } Loading
fs/nfs/nfs4xdr.c +3 −1 Original line number Original line Diff line number Diff line Loading @@ -2035,7 +2035,9 @@ encode_layoutreturn(struct xdr_stream *xdr, spin_lock(&args->inode->i_lock); spin_lock(&args->inode->i_lock); encode_nfs4_stateid(xdr, &args->stateid); encode_nfs4_stateid(xdr, &args->stateid); spin_unlock(&args->inode->i_lock); spin_unlock(&args->inode->i_lock); if (lr_ops->encode_layoutreturn) if (args->ld_private->ops && args->ld_private->ops->encode) args->ld_private->ops->encode(xdr, args, args->ld_private); else if (lr_ops->encode_layoutreturn) lr_ops->encode_layoutreturn(xdr, args); lr_ops->encode_layoutreturn(xdr, args); else else encode_uint32(xdr, 0); encode_uint32(xdr, 0); Loading
fs/nfs/pnfs.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1086,6 +1086,7 @@ pnfs_send_layoutreturn(struct pnfs_layout_hdr *lo, const nfs4_stateid *stateid, } } pnfs_init_layoutreturn_args(&lrp->args, lo, stateid, iomode); pnfs_init_layoutreturn_args(&lrp->args, lo, stateid, iomode); lrp->args.ld_private = &lrp->ld_private; lrp->clp = NFS_SERVER(ino)->nfs_client; lrp->clp = NFS_SERVER(ino)->nfs_client; lrp->cred = lo->plh_lc_cred; lrp->cred = lo->plh_lc_cred; Loading
include/linux/nfs_xdr.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -320,6 +320,7 @@ struct nfs4_layoutreturn_args { struct pnfs_layout_range range; struct pnfs_layout_range range; nfs4_stateid stateid; nfs4_stateid stateid; __u32 layout_type; __u32 layout_type; struct nfs4_xdr_opaque_data *ld_private; }; }; struct nfs4_layoutreturn_res { struct nfs4_layoutreturn_res { Loading @@ -335,6 +336,7 @@ struct nfs4_layoutreturn { struct nfs_client *clp; struct nfs_client *clp; struct inode *inode; struct inode *inode; int rpc_status; int rpc_status; struct nfs4_xdr_opaque_data ld_private; }; }; #define PNFS_LAYOUTSTATS_MAXSIZE 256 #define PNFS_LAYOUTSTATS_MAXSIZE 256 Loading