aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2011-06-10 13:30:23 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-07-12 13:40:28 -0400
commite885de1a5bc9f46ef8f934c5a7602c89d2d51e8d (patch)
treefec97da658ce241c055f5fc8bb7e2e84ee1cc259 /fs/nfs/pnfs.c
parentd8007d4dd6ff8749cc8a4063c3ec87442db76d82 (diff)
downloadkernel_goldelico_gta04-e885de1a5bc9f46ef8f934c5a7602c89d2d51e8d.zip
kernel_goldelico_gta04-e885de1a5bc9f46ef8f934c5a7602c89d2d51e8d.tar.gz
kernel_goldelico_gta04-e885de1a5bc9f46ef8f934c5a7602c89d2d51e8d.tar.bz2
NFSv4.1: Fall back to ordinary i/o through the mds if we have no layout segment
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/pnfs.c')
-rw-r--r--fs/nfs/pnfs.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 69a0c3f..cc807fe 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1066,6 +1066,10 @@ pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *r
req->wb_bytes,
IOMODE_READ,
GFP_KERNEL);
+ /* If no lseg, fall back to read through mds */
+ if (pgio->pg_lseg == NULL)
+ nfs_pageio_init_read_mds(pgio, pgio->pg_inode);
+
}
EXPORT_SYMBOL_GPL(pnfs_generic_pg_init_read);
@@ -1080,6 +1084,9 @@ pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio, struct nfs_page *
req->wb_bytes,
IOMODE_RW,
GFP_NOFS);
+ /* If no lseg, fall back to write through mds */
+ if (pgio->pg_lseg == NULL)
+ nfs_pageio_init_write_mds(pgio, pgio->pg_inode, pgio->pg_ioflags);
}
EXPORT_SYMBOL_GPL(pnfs_generic_pg_init_write);