|
@@ -1361,12 +1361,7 @@ static void ff_layout_read_prepare_v4(struct rpc_task *task, void *data)
|
|
|
task))
|
|
|
return;
|
|
|
|
|
|
- if (ff_layout_read_prepare_common(task, hdr))
|
|
|
- return;
|
|
|
-
|
|
|
- if (nfs4_set_rw_stateid(&hdr->args.stateid, hdr->args.context,
|
|
|
- hdr->args.lock_context, FMODE_READ) == -EIO)
|
|
|
- rpc_exit(task, -EIO); /* lost lock, terminate I/O */
|
|
|
+ ff_layout_read_prepare_common(task, hdr);
|
|
|
}
|
|
|
|
|
|
static void ff_layout_read_call_done(struct rpc_task *task, void *data)
|
|
@@ -1542,12 +1537,7 @@ static void ff_layout_write_prepare_v4(struct rpc_task *task, void *data)
|
|
|
task))
|
|
|
return;
|
|
|
|
|
|
- if (ff_layout_write_prepare_common(task, hdr))
|
|
|
- return;
|
|
|
-
|
|
|
- if (nfs4_set_rw_stateid(&hdr->args.stateid, hdr->args.context,
|
|
|
- hdr->args.lock_context, FMODE_WRITE) == -EIO)
|
|
|
- rpc_exit(task, -EIO); /* lost lock, terminate I/O */
|
|
|
+ ff_layout_write_prepare_common(task, hdr);
|
|
|
}
|
|
|
|
|
|
static void ff_layout_write_call_done(struct rpc_task *task, void *data)
|
|
@@ -1742,6 +1732,10 @@ ff_layout_read_pagelist(struct nfs_pgio_header *hdr)
|
|
|
fh = nfs4_ff_layout_select_ds_fh(lseg, idx);
|
|
|
if (fh)
|
|
|
hdr->args.fh = fh;
|
|
|
+
|
|
|
+ if (!nfs4_ff_layout_select_ds_stateid(lseg, idx, &hdr->args.stateid))
|
|
|
+ goto out_failed;
|
|
|
+
|
|
|
/*
|
|
|
* Note that if we ever decide to split across DSes,
|
|
|
* then we may need to handle dense-like offsets.
|
|
@@ -1804,6 +1798,9 @@ ff_layout_write_pagelist(struct nfs_pgio_header *hdr, int sync)
|
|
|
if (fh)
|
|
|
hdr->args.fh = fh;
|
|
|
|
|
|
+ if (!nfs4_ff_layout_select_ds_stateid(lseg, idx, &hdr->args.stateid))
|
|
|
+ goto out_failed;
|
|
|
+
|
|
|
/*
|
|
|
* Note that if we ever decide to split across DSes,
|
|
|
* then we may need to handle dense-like offsets.
|