|
@@ -384,6 +384,7 @@ nfs4_ff_layout_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx,
|
|
struct inode *ino = lseg->pls_layout->plh_inode;
|
|
struct inode *ino = lseg->pls_layout->plh_inode;
|
|
struct nfs_server *s = NFS_SERVER(ino);
|
|
struct nfs_server *s = NFS_SERVER(ino);
|
|
unsigned int max_payload;
|
|
unsigned int max_payload;
|
|
|
|
+ int status;
|
|
|
|
|
|
if (!ff_layout_mirror_valid(lseg, mirror, true)) {
|
|
if (!ff_layout_mirror_valid(lseg, mirror, true)) {
|
|
pr_err_ratelimited("NFS: %s: No data server for offset index %d\n",
|
|
pr_err_ratelimited("NFS: %s: No data server for offset index %d\n",
|
|
@@ -404,7 +405,7 @@ nfs4_ff_layout_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx,
|
|
/* FIXME: For now we assume the server sent only one version of NFS
|
|
/* FIXME: For now we assume the server sent only one version of NFS
|
|
* to use for the DS.
|
|
* to use for the DS.
|
|
*/
|
|
*/
|
|
- nfs4_pnfs_ds_connect(s, ds, devid, dataserver_timeo,
|
|
|
|
|
|
+ status = nfs4_pnfs_ds_connect(s, ds, devid, dataserver_timeo,
|
|
dataserver_retrans,
|
|
dataserver_retrans,
|
|
mirror->mirror_ds->ds_versions[0].version,
|
|
mirror->mirror_ds->ds_versions[0].version,
|
|
mirror->mirror_ds->ds_versions[0].minor_version);
|
|
mirror->mirror_ds->ds_versions[0].minor_version);
|
|
@@ -420,11 +421,11 @@ nfs4_ff_layout_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx,
|
|
mirror->mirror_ds->ds_versions[0].wsize = max_payload;
|
|
mirror->mirror_ds->ds_versions[0].wsize = max_payload;
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
+out_fail:
|
|
ff_layout_track_ds_error(FF_LAYOUT_FROM_HDR(lseg->pls_layout),
|
|
ff_layout_track_ds_error(FF_LAYOUT_FROM_HDR(lseg->pls_layout),
|
|
mirror, lseg->pls_range.offset,
|
|
mirror, lseg->pls_range.offset,
|
|
lseg->pls_range.length, NFS4ERR_NXIO,
|
|
lseg->pls_range.length, NFS4ERR_NXIO,
|
|
OP_ILLEGAL, GFP_NOIO);
|
|
OP_ILLEGAL, GFP_NOIO);
|
|
-out_fail:
|
|
|
|
if (fail_return || !ff_layout_has_available_ds(lseg))
|
|
if (fail_return || !ff_layout_has_available_ds(lseg))
|
|
pnfs_error_mark_layout_for_return(ino, lseg);
|
|
pnfs_error_mark_layout_for_return(ino, lseg);
|
|
ds = NULL;
|
|
ds = NULL;
|