]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
NFS store nfs4_deviceid in struct nfs4_filelayout_segment
authorAndy Adamson <andros@netapp.com>
Mon, 20 Mar 2017 22:07:01 +0000 (18:07 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 28 Mar 2017 15:21:52 +0000 (11:21 -0400)
In preparation for moving the filelayout getdeviceinfo call from
filelayout_alloc_lseg called by pnfs_process_layout

Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/filelayout/filelayout.c
fs/nfs/filelayout/filelayout.h

index 7aff350f15b1ced36e751ffd4574d91eea0a76a3..cad74c1c79ff767f298789f9df5b3efb7cc6b437 100644 (file)
@@ -572,7 +572,6 @@ static int
 filelayout_check_layout(struct pnfs_layout_hdr *lo,
                        struct nfs4_filelayout_segment *fl,
                        struct nfs4_layoutget_res *lgr,
-                       struct nfs4_deviceid *id,
                        gfp_t gfp_flags)
 {
        struct nfs4_deviceid_node *d;
@@ -602,7 +601,7 @@ filelayout_check_layout(struct pnfs_layout_hdr *lo,
        }
 
        /* find and reference the deviceid */
-       d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), id,
+       d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), &fl->deviceid,
                        lo->plh_lc_cred, gfp_flags);
        if (d == NULL)
                goto out;
@@ -657,7 +656,6 @@ static int
 filelayout_decode_layout(struct pnfs_layout_hdr *flo,
                         struct nfs4_filelayout_segment *fl,
                         struct nfs4_layoutget_res *lgr,
-                        struct nfs4_deviceid *id,
                         gfp_t gfp_flags)
 {
        struct xdr_stream stream;
@@ -682,9 +680,9 @@ filelayout_decode_layout(struct pnfs_layout_hdr *flo,
        if (unlikely(!p))
                goto out_err;
 
-       memcpy(id, p, sizeof(*id));
+       memcpy(&fl->deviceid, p, sizeof(fl->deviceid));
        p += XDR_QUADLEN(NFS4_DEVICEID4_SIZE);
-       nfs4_print_deviceid(id);
+       nfs4_print_deviceid(&fl->deviceid);
 
        nfl_util = be32_to_cpup(p++);
        if (nfl_util & NFL4_UFLG_COMMIT_THRU_MDS)
@@ -831,15 +829,14 @@ filelayout_alloc_lseg(struct pnfs_layout_hdr *layoutid,
 {
        struct nfs4_filelayout_segment *fl;
        int rc;
-       struct nfs4_deviceid id;
 
        dprintk("--> %s\n", __func__);
        fl = kzalloc(sizeof(*fl), gfp_flags);
        if (!fl)
                return NULL;
 
-       rc = filelayout_decode_layout(layoutid, fl, lgr, &id, gfp_flags);
-       if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, &id, gfp_flags)) {
+       rc = filelayout_decode_layout(layoutid, fl, lgr, gfp_flags);
+       if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, gfp_flags)) {
                _filelayout_free_lseg(fl);
                return NULL;
        }
index 4c4d436a679660e99d6b19719d563be795ea53ff..79323b5dab0cb38a212318d774273cb7ce88187f 100644 (file)
@@ -61,6 +61,7 @@ struct nfs4_filelayout_segment {
        u32                             stripe_unit;
        u32                             first_stripe_index;
        u64                             pattern_offset;
+       struct nfs4_deviceid            deviceid;
        struct nfs4_file_layout_dsaddr  *dsaddr; /* Point to GETDEVINFO data */
        unsigned int                    num_fh;
        struct nfs_fh                   **fh_array;