Commit 1fd937bd7583e618df0528f0268b210f265d6910

Authored by Peng Tao
Committed by Trond Myklebust
1 parent 6296556f0b

NFS41: send real read size in layoutget

For buffer read, use offst-to-isize.

For direct read, use dreq->bytes_left.

Signed-off-by: Peng Tao <tao.peng@emc.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

Showing 1 changed file with 9 additions and 1 deletions Side-by-side Diff

... ... @@ -1220,16 +1220,24 @@
1220 1220 void
1221 1221 pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *req)
1222 1222 {
  1223 + u64 rd_size = req->wb_bytes;
  1224 +
1223 1225 BUG_ON(pgio->pg_lseg != NULL);
1224 1226  
1225 1227 if (req->wb_offset != req->wb_pgbase) {
1226 1228 nfs_pageio_reset_read_mds(pgio);
1227 1229 return;
1228 1230 }
  1231 +
  1232 + if (pgio->pg_dreq == NULL)
  1233 + rd_size = i_size_read(pgio->pg_inode) - req_offset(req);
  1234 + else
  1235 + rd_size = nfs_dreq_bytes_left(pgio->pg_dreq);
  1236 +
1229 1237 pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
1230 1238 req->wb_context,
1231 1239 req_offset(req),
1232   - req->wb_bytes,
  1240 + rd_size,
1233 1241 IOMODE_READ,
1234 1242 GFP_KERNEL);
1235 1243 /* If no lseg, fall back to read through mds */