NFSv4.1/pnfs: Cleanup copying of pnfs_layout_range structures
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 4 Jan 2016 17:52:53 +0000 (12:52 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 4 Jan 2016 17:52:53 +0000 (12:52 -0500)
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/pnfs.c
fs/nfs/pnfs.h

index f86f060f853dd95ef72ea20bd90ce01c2c5aff11..ebf896b54d9d12b3093080dd52d9b8ad01aae87e 100644 (file)
@@ -863,7 +863,7 @@ pnfs_choose_layoutget_stateid(nfs4_stateid *dst, struct pnfs_layout_hdr *lo,
 static struct pnfs_layout_segment *
 send_layoutget(struct pnfs_layout_hdr *lo,
           struct nfs_open_context *ctx,
-          struct pnfs_layout_range *range,
+          const struct pnfs_layout_range *range,
           gfp_t gfp_flags)
 {
        struct inode *ino = lo->plh_inode;
@@ -896,7 +896,7 @@ send_layoutget(struct pnfs_layout_hdr *lo,
                                lgp->args.minlength = i_size - range->offset;
                }
                lgp->args.maxcount = PNFS_LAYOUT_MAXSIZE;
-               lgp->args.range = *range;
+               pnfs_copy_range(&lgp->args.range, range);
                lgp->args.type = server->pnfs_curr_ld->id;
                lgp->args.inode = ino;
                lgp->args.ctx = get_nfs_open_context(ctx);
index 3d0f513a4a77f39c5a1bf91a8f8ecbae06695218..dcc76335fd4bf7b87c4b82ce11ffa26648d860db 100644 (file)
@@ -578,6 +578,13 @@ pnfs_mark_layout_returned_if_empty(struct pnfs_layout_hdr *lo)
                set_bit(NFS_LAYOUT_INVALID_STID, &lo->plh_flags);
 }
 
+static inline void
+pnfs_copy_range(struct pnfs_layout_range *dst,
+               const struct pnfs_layout_range *src)
+{
+       memcpy(dst, src, sizeof(*dst));
+}
+
 extern unsigned int layoutstats_timer;
 
 #ifdef NFS_DEBUG