diff options
-rw-r--r-- | fs/nfs/blocklayout/blocklayout.c | 2 | ||||
-rw-r--r-- | fs/nfs/nfs4filelayout.c | 3 | ||||
-rw-r--r-- | fs/nfs/nfs4filelayout.h | 3 | ||||
-rw-r--r-- | fs/nfs/nfs4filelayoutdev.c | 7 | ||||
-rw-r--r-- | fs/nfs/nfs4proc.c | 11 | ||||
-rw-r--r-- | fs/nfs/objlayout/objlayout.c | 3 | ||||
-rw-r--r-- | fs/nfs/pnfs.h | 3 |
7 files changed, 22 insertions, 10 deletions
diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout/blocklayout.c index 434b93ec0970..1e5fdd3506e2 100644 --- a/fs/nfs/blocklayout/blocklayout.c +++ b/fs/nfs/blocklayout/blocklayout.c | |||
@@ -1091,7 +1091,7 @@ nfs4_blk_get_deviceinfo(struct nfs_server *server, const struct nfs_fh *fh, | |||
1091 | dev->mincount = 0; | 1091 | dev->mincount = 0; |
1092 | 1092 | ||
1093 | dprintk("%s: dev_id: %s\n", __func__, dev->dev_id.data); | 1093 | dprintk("%s: dev_id: %s\n", __func__, dev->dev_id.data); |
1094 | rc = nfs4_proc_getdeviceinfo(server, dev); | 1094 | rc = nfs4_proc_getdeviceinfo(server, dev, NULL); |
1095 | dprintk("%s getdevice info returns %d\n", __func__, rc); | 1095 | dprintk("%s getdevice info returns %d\n", __func__, rc); |
1096 | if (rc) { | 1096 | if (rc) { |
1097 | rv = ERR_PTR(rc); | 1097 | rv = ERR_PTR(rc); |
diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c index 22d10623f5ee..17ed87ef9de8 100644 --- a/fs/nfs/nfs4filelayout.c +++ b/fs/nfs/nfs4filelayout.c | |||
@@ -643,7 +643,8 @@ filelayout_check_layout(struct pnfs_layout_hdr *lo, | |||
643 | d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode)->pnfs_curr_ld, | 643 | d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode)->pnfs_curr_ld, |
644 | NFS_SERVER(lo->plh_inode)->nfs_client, id); | 644 | NFS_SERVER(lo->plh_inode)->nfs_client, id); |
645 | if (d == NULL) { | 645 | if (d == NULL) { |
646 | dsaddr = filelayout_get_device_info(lo->plh_inode, id, gfp_flags); | 646 | dsaddr = filelayout_get_device_info(lo->plh_inode, id, |
647 | lo->plh_lc_cred, gfp_flags); | ||
647 | if (dsaddr == NULL) | 648 | if (dsaddr == NULL) |
648 | goto out; | 649 | goto out; |
649 | } else | 650 | } else |
diff --git a/fs/nfs/nfs4filelayout.h b/fs/nfs/nfs4filelayout.h index 235ff952d3c8..cebd20e7e923 100644 --- a/fs/nfs/nfs4filelayout.h +++ b/fs/nfs/nfs4filelayout.h | |||
@@ -150,6 +150,7 @@ struct nfs4_pnfs_ds *nfs4_fl_prepare_ds(struct pnfs_layout_segment *lseg, | |||
150 | extern void nfs4_fl_put_deviceid(struct nfs4_file_layout_dsaddr *dsaddr); | 150 | extern void nfs4_fl_put_deviceid(struct nfs4_file_layout_dsaddr *dsaddr); |
151 | extern void nfs4_fl_free_deviceid(struct nfs4_file_layout_dsaddr *dsaddr); | 151 | extern void nfs4_fl_free_deviceid(struct nfs4_file_layout_dsaddr *dsaddr); |
152 | struct nfs4_file_layout_dsaddr * | 152 | struct nfs4_file_layout_dsaddr * |
153 | filelayout_get_device_info(struct inode *inode, struct nfs4_deviceid *dev_id, gfp_t gfp_flags); | 153 | filelayout_get_device_info(struct inode *inode, struct nfs4_deviceid *dev_id, |
154 | struct rpc_cred *cred, gfp_t gfp_flags); | ||
154 | 155 | ||
155 | #endif /* FS_NFS_NFS4FILELAYOUT_H */ | 156 | #endif /* FS_NFS_NFS4FILELAYOUT_H */ |
diff --git a/fs/nfs/nfs4filelayoutdev.c b/fs/nfs/nfs4filelayoutdev.c index 661a0f611215..0493dbd129c5 100644 --- a/fs/nfs/nfs4filelayoutdev.c +++ b/fs/nfs/nfs4filelayoutdev.c | |||
@@ -668,7 +668,10 @@ decode_and_add_device(struct inode *inode, struct pnfs_device *dev, gfp_t gfp_fl | |||
668 | * of available devices, and return it. | 668 | * of available devices, and return it. |
669 | */ | 669 | */ |
670 | struct nfs4_file_layout_dsaddr * | 670 | struct nfs4_file_layout_dsaddr * |
671 | filelayout_get_device_info(struct inode *inode, struct nfs4_deviceid *dev_id, gfp_t gfp_flags) | 671 | filelayout_get_device_info(struct inode *inode, |
672 | struct nfs4_deviceid *dev_id, | ||
673 | struct rpc_cred *cred, | ||
674 | gfp_t gfp_flags) | ||
672 | { | 675 | { |
673 | struct pnfs_device *pdev = NULL; | 676 | struct pnfs_device *pdev = NULL; |
674 | u32 max_resp_sz; | 677 | u32 max_resp_sz; |
@@ -709,7 +712,7 @@ filelayout_get_device_info(struct inode *inode, struct nfs4_deviceid *dev_id, gf | |||
709 | pdev->pglen = max_resp_sz; | 712 | pdev->pglen = max_resp_sz; |
710 | pdev->mincount = 0; | 713 | pdev->mincount = 0; |
711 | 714 | ||
712 | rc = nfs4_proc_getdeviceinfo(server, pdev); | 715 | rc = nfs4_proc_getdeviceinfo(server, pdev, cred); |
713 | dprintk("%s getdevice info returns %d\n", __func__, rc); | 716 | dprintk("%s getdevice info returns %d\n", __func__, rc); |
714 | if (rc) | 717 | if (rc) |
715 | goto out_free; | 718 | goto out_free; |
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index e4398e8f512a..98f0df3ee50d 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -6547,7 +6547,9 @@ int nfs4_proc_getdevicelist(struct nfs_server *server, | |||
6547 | EXPORT_SYMBOL_GPL(nfs4_proc_getdevicelist); | 6547 | EXPORT_SYMBOL_GPL(nfs4_proc_getdevicelist); |
6548 | 6548 | ||
6549 | static int | 6549 | static int |
6550 | _nfs4_proc_getdeviceinfo(struct nfs_server *server, struct pnfs_device *pdev) | 6550 | _nfs4_proc_getdeviceinfo(struct nfs_server *server, |
6551 | struct pnfs_device *pdev, | ||
6552 | struct rpc_cred *cred) | ||
6551 | { | 6553 | { |
6552 | struct nfs4_getdeviceinfo_args args = { | 6554 | struct nfs4_getdeviceinfo_args args = { |
6553 | .pdev = pdev, | 6555 | .pdev = pdev, |
@@ -6559,6 +6561,7 @@ _nfs4_proc_getdeviceinfo(struct nfs_server *server, struct pnfs_device *pdev) | |||
6559 | .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_GETDEVICEINFO], | 6561 | .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_GETDEVICEINFO], |
6560 | .rpc_argp = &args, | 6562 | .rpc_argp = &args, |
6561 | .rpc_resp = &res, | 6563 | .rpc_resp = &res, |
6564 | .rpc_cred = cred, | ||
6562 | }; | 6565 | }; |
6563 | int status; | 6566 | int status; |
6564 | 6567 | ||
@@ -6569,14 +6572,16 @@ _nfs4_proc_getdeviceinfo(struct nfs_server *server, struct pnfs_device *pdev) | |||
6569 | return status; | 6572 | return status; |
6570 | } | 6573 | } |
6571 | 6574 | ||
6572 | int nfs4_proc_getdeviceinfo(struct nfs_server *server, struct pnfs_device *pdev) | 6575 | int nfs4_proc_getdeviceinfo(struct nfs_server *server, |
6576 | struct pnfs_device *pdev, | ||
6577 | struct rpc_cred *cred) | ||
6573 | { | 6578 | { |
6574 | struct nfs4_exception exception = { }; | 6579 | struct nfs4_exception exception = { }; |
6575 | int err; | 6580 | int err; |
6576 | 6581 | ||
6577 | do { | 6582 | do { |
6578 | err = nfs4_handle_exception(server, | 6583 | err = nfs4_handle_exception(server, |
6579 | _nfs4_proc_getdeviceinfo(server, pdev), | 6584 | _nfs4_proc_getdeviceinfo(server, pdev, cred), |
6580 | &exception); | 6585 | &exception); |
6581 | } while (exception.retry); | 6586 | } while (exception.retry); |
6582 | return err; | 6587 | return err; |
diff --git a/fs/nfs/objlayout/objlayout.c b/fs/nfs/objlayout/objlayout.c index a9ebd817278b..198990852d50 100644 --- a/fs/nfs/objlayout/objlayout.c +++ b/fs/nfs/objlayout/objlayout.c | |||
@@ -614,7 +614,8 @@ int objlayout_get_deviceinfo(struct pnfs_layout_hdr *pnfslay, | |||
614 | pd.pglen = PAGE_SIZE; | 614 | pd.pglen = PAGE_SIZE; |
615 | pd.mincount = 0; | 615 | pd.mincount = 0; |
616 | 616 | ||
617 | err = nfs4_proc_getdeviceinfo(NFS_SERVER(pnfslay->plh_inode), &pd); | 617 | err = nfs4_proc_getdeviceinfo(NFS_SERVER(pnfslay->plh_inode), &pd, |
618 | pnfslay->plh_lc_cred); | ||
618 | dprintk("%s nfs_getdeviceinfo returned %d\n", __func__, err); | 619 | dprintk("%s nfs_getdeviceinfo returned %d\n", __func__, err); |
619 | if (err) | 620 | if (err) |
620 | goto err_out; | 621 | goto err_out; |
diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index f5f8a470a647..1441dff9b0e7 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h | |||
@@ -170,7 +170,8 @@ extern int nfs4_proc_getdevicelist(struct nfs_server *server, | |||
170 | const struct nfs_fh *fh, | 170 | const struct nfs_fh *fh, |
171 | struct pnfs_devicelist *devlist); | 171 | struct pnfs_devicelist *devlist); |
172 | extern int nfs4_proc_getdeviceinfo(struct nfs_server *server, | 172 | extern int nfs4_proc_getdeviceinfo(struct nfs_server *server, |
173 | struct pnfs_device *dev); | 173 | struct pnfs_device *dev, |
174 | struct rpc_cred *cred); | ||
174 | extern struct pnfs_layout_segment* nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags); | 175 | extern struct pnfs_layout_segment* nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags); |
175 | extern int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp); | 176 | extern int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp); |
176 | 177 | ||