diff options
-rw-r--r-- | fs/nfs/filelayout/filelayout.c | 13 | ||||
-rw-r--r-- | fs/nfs/filelayout/filelayout.h | 1 |
2 files changed, 6 insertions, 8 deletions
diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c index 7aff350f15b1..cad74c1c79ff 100644 --- a/fs/nfs/filelayout/filelayout.c +++ b/fs/nfs/filelayout/filelayout.c | |||
@@ -572,7 +572,6 @@ static int | |||
572 | filelayout_check_layout(struct pnfs_layout_hdr *lo, | 572 | filelayout_check_layout(struct pnfs_layout_hdr *lo, |
573 | struct nfs4_filelayout_segment *fl, | 573 | struct nfs4_filelayout_segment *fl, |
574 | struct nfs4_layoutget_res *lgr, | 574 | struct nfs4_layoutget_res *lgr, |
575 | struct nfs4_deviceid *id, | ||
576 | gfp_t gfp_flags) | 575 | gfp_t gfp_flags) |
577 | { | 576 | { |
578 | struct nfs4_deviceid_node *d; | 577 | struct nfs4_deviceid_node *d; |
@@ -602,7 +601,7 @@ filelayout_check_layout(struct pnfs_layout_hdr *lo, | |||
602 | } | 601 | } |
603 | 602 | ||
604 | /* find and reference the deviceid */ | 603 | /* find and reference the deviceid */ |
605 | d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), id, | 604 | d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), &fl->deviceid, |
606 | lo->plh_lc_cred, gfp_flags); | 605 | lo->plh_lc_cred, gfp_flags); |
607 | if (d == NULL) | 606 | if (d == NULL) |
608 | goto out; | 607 | goto out; |
@@ -657,7 +656,6 @@ static int | |||
657 | filelayout_decode_layout(struct pnfs_layout_hdr *flo, | 656 | filelayout_decode_layout(struct pnfs_layout_hdr *flo, |
658 | struct nfs4_filelayout_segment *fl, | 657 | struct nfs4_filelayout_segment *fl, |
659 | struct nfs4_layoutget_res *lgr, | 658 | struct nfs4_layoutget_res *lgr, |
660 | struct nfs4_deviceid *id, | ||
661 | gfp_t gfp_flags) | 659 | gfp_t gfp_flags) |
662 | { | 660 | { |
663 | struct xdr_stream stream; | 661 | struct xdr_stream stream; |
@@ -682,9 +680,9 @@ filelayout_decode_layout(struct pnfs_layout_hdr *flo, | |||
682 | if (unlikely(!p)) | 680 | if (unlikely(!p)) |
683 | goto out_err; | 681 | goto out_err; |
684 | 682 | ||
685 | memcpy(id, p, sizeof(*id)); | 683 | memcpy(&fl->deviceid, p, sizeof(fl->deviceid)); |
686 | p += XDR_QUADLEN(NFS4_DEVICEID4_SIZE); | 684 | p += XDR_QUADLEN(NFS4_DEVICEID4_SIZE); |
687 | nfs4_print_deviceid(id); | 685 | nfs4_print_deviceid(&fl->deviceid); |
688 | 686 | ||
689 | nfl_util = be32_to_cpup(p++); | 687 | nfl_util = be32_to_cpup(p++); |
690 | if (nfl_util & NFL4_UFLG_COMMIT_THRU_MDS) | 688 | if (nfl_util & NFL4_UFLG_COMMIT_THRU_MDS) |
@@ -831,15 +829,14 @@ filelayout_alloc_lseg(struct pnfs_layout_hdr *layoutid, | |||
831 | { | 829 | { |
832 | struct nfs4_filelayout_segment *fl; | 830 | struct nfs4_filelayout_segment *fl; |
833 | int rc; | 831 | int rc; |
834 | struct nfs4_deviceid id; | ||
835 | 832 | ||
836 | dprintk("--> %s\n", __func__); | 833 | dprintk("--> %s\n", __func__); |
837 | fl = kzalloc(sizeof(*fl), gfp_flags); | 834 | fl = kzalloc(sizeof(*fl), gfp_flags); |
838 | if (!fl) | 835 | if (!fl) |
839 | return NULL; | 836 | return NULL; |
840 | 837 | ||
841 | rc = filelayout_decode_layout(layoutid, fl, lgr, &id, gfp_flags); | 838 | rc = filelayout_decode_layout(layoutid, fl, lgr, gfp_flags); |
842 | if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, &id, gfp_flags)) { | 839 | if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, gfp_flags)) { |
843 | _filelayout_free_lseg(fl); | 840 | _filelayout_free_lseg(fl); |
844 | return NULL; | 841 | return NULL; |
845 | } | 842 | } |
diff --git a/fs/nfs/filelayout/filelayout.h b/fs/nfs/filelayout/filelayout.h index 4c4d436a6796..79323b5dab0c 100644 --- a/fs/nfs/filelayout/filelayout.h +++ b/fs/nfs/filelayout/filelayout.h | |||
@@ -61,6 +61,7 @@ struct nfs4_filelayout_segment { | |||
61 | u32 stripe_unit; | 61 | u32 stripe_unit; |
62 | u32 first_stripe_index; | 62 | u32 first_stripe_index; |
63 | u64 pattern_offset; | 63 | u64 pattern_offset; |
64 | struct nfs4_deviceid deviceid; | ||
64 | struct nfs4_file_layout_dsaddr *dsaddr; /* Point to GETDEVINFO data */ | 65 | struct nfs4_file_layout_dsaddr *dsaddr; /* Point to GETDEVINFO data */ |
65 | unsigned int num_fh; | 66 | unsigned int num_fh; |
66 | struct nfs_fh **fh_array; | 67 | struct nfs_fh **fh_array; |