diff mbox

[v3,42/49] nfs41: add range to layoutreturn args

Message ID 20150113225042.GE90833@kitty (mailing list archive)
State New, archived
Headers show

Commit Message

Thomas Haynes Jan. 13, 2015, 10:50 p.m. UTC
On Tue, Jan 13, 2015 at 02:51:41PM -0500, Anna Schumaker wrote:
> I still think we should hold off until partial file returns are added, making it less likely that somebody will introduce a bug in the meantime.
> 

Can you live with this:

 fs/nfs/nfs4xdr.c        | 6 +++---
 fs/nfs/pnfs.c           | 4 +++-
 include/linux/nfs_xdr.h | 2 +-
 3 files changed, 7 insertions(+), 5 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Schumaker, Anna Jan. 14, 2015, 1:40 p.m. UTC | #1
On 01/13/2015 05:50 PM, Tom Haynes wrote:
> On Tue, Jan 13, 2015 at 02:51:41PM -0500, Anna Schumaker wrote:
>> I still think we should hold off until partial file returns are added, making it less likely that somebody will introduce a bug in the meantime.
>>
> 
> Can you live with this:

Yes, I like that much better!  Thanks!

Anna

> 
>  fs/nfs/nfs4xdr.c        | 6 +++---
>  fs/nfs/pnfs.c           | 4 +++-
>  include/linux/nfs_xdr.h | 2 +-
>  3 files changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
> index 3c3ff63..56d4c91 100644
> --- a/fs/nfs/nfs4xdr.c
> +++ b/fs/nfs/nfs4xdr.c
> @@ -2012,11 +2012,11 @@ encode_layoutreturn(struct xdr_stream *xdr,
>         p = reserve_space(xdr, 16);
>         *p++ = cpu_to_be32(0);          /* reclaim. always 0 for now */
>         *p++ = cpu_to_be32(args->layout_type);
> -       *p++ = cpu_to_be32(args->iomode);
> +       *p++ = cpu_to_be32(args->range.iomode);
>         *p = cpu_to_be32(RETURN_FILE);
>         p = reserve_space(xdr, 16);
> -       p = xdr_encode_hyper(p, 0);
> -       p = xdr_encode_hyper(p, NFS4_MAX_UINT64);
> +       p = xdr_encode_hyper(p, args->range.offset);
> +       p = xdr_encode_hyper(p, args->range.length);
>         spin_lock(&args->inode->i_lock);
>         encode_nfs4_stateid(xdr, &args->stateid);
>         spin_unlock(&args->inode->i_lock);
> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> index 685af4f..9549b89 100644
> --- a/fs/nfs/pnfs.c
> +++ b/fs/nfs/pnfs.c
> @@ -916,7 +916,9 @@ pnfs_send_layoutreturn(struct pnfs_layout_hdr *lo, nfs4_stateid stateid,
>         lrp->args.stateid = stateid;
>         lrp->args.layout_type = NFS_SERVER(ino)->pnfs_curr_ld->id;
>         lrp->args.inode = ino;
> -       lrp->args.iomode = iomode;
> +       lrp->args.range.iomode = iomode;
> +       lrp->args.range.offset = 0;
> +       lrp->args.range.length = NFS4_MAX_UINT64;
>         lrp->args.layout = lo;
>         lrp->clp = NFS_SERVER(ino)->nfs_client;
>         lrp->cred = lo->plh_lc_cred;
> diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
> index 6400a1e..3637923 100644
> --- a/include/linux/nfs_xdr.h
> +++ b/include/linux/nfs_xdr.h
> @@ -293,7 +293,7 @@ struct nfs4_layoutreturn_args {
>         struct nfs4_sequence_args seq_args;
>         struct pnfs_layout_hdr *layout;
>         struct inode *inode;
> -       enum pnfs_iomode iomode;
> +       struct pnfs_layout_range range;
>         nfs4_stateid stateid;
>         __u32   layout_type;
>  };
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 3c3ff63..56d4c91 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -2012,11 +2012,11 @@  encode_layoutreturn(struct xdr_stream *xdr,
        p = reserve_space(xdr, 16);
        *p++ = cpu_to_be32(0);          /* reclaim. always 0 for now */
        *p++ = cpu_to_be32(args->layout_type);
-       *p++ = cpu_to_be32(args->iomode);
+       *p++ = cpu_to_be32(args->range.iomode);
        *p = cpu_to_be32(RETURN_FILE);
        p = reserve_space(xdr, 16);
-       p = xdr_encode_hyper(p, 0);
-       p = xdr_encode_hyper(p, NFS4_MAX_UINT64);
+       p = xdr_encode_hyper(p, args->range.offset);
+       p = xdr_encode_hyper(p, args->range.length);
        spin_lock(&args->inode->i_lock);
        encode_nfs4_stateid(xdr, &args->stateid);
        spin_unlock(&args->inode->i_lock);
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 685af4f..9549b89 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -916,7 +916,9 @@  pnfs_send_layoutreturn(struct pnfs_layout_hdr *lo, nfs4_stateid stateid,
        lrp->args.stateid = stateid;
        lrp->args.layout_type = NFS_SERVER(ino)->pnfs_curr_ld->id;
        lrp->args.inode = ino;
-       lrp->args.iomode = iomode;
+       lrp->args.range.iomode = iomode;
+       lrp->args.range.offset = 0;
+       lrp->args.range.length = NFS4_MAX_UINT64;
        lrp->args.layout = lo;
        lrp->clp = NFS_SERVER(ino)->nfs_client;
        lrp->cred = lo->plh_lc_cred;
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 6400a1e..3637923 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -293,7 +293,7 @@  struct nfs4_layoutreturn_args {
        struct nfs4_sequence_args seq_args;
        struct pnfs_layout_hdr *layout;
        struct inode *inode;
-       enum pnfs_iomode iomode;
+       struct pnfs_layout_range range;
        nfs4_stateid stateid;
        __u32   layout_type;
 };