summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pagelist.c
diff options
context:
space:
mode:
authorPeng Tao2014-11-10 01:35:34 +0100
committerTom Haynes2015-02-03 20:06:47 +0100
commit47af81f29556a45493e5c87289c3c16ce911096c (patch)
tree94817ece21bb4b4b2933579417cd2da47d71c684 /fs/nfs/pagelist.c
parentnfs41: add a debug warning if we destroy an unempty layout (diff)
downloadkernel-qcow2-linux-47af81f29556a45493e5c87289c3c16ce911096c.tar.gz
kernel-qcow2-linux-47af81f29556a45493e5c87289c3c16ce911096c.tar.xz
kernel-qcow2-linux-47af81f29556a45493e5c87289c3c16ce911096c.zip
nfs: only reset desc->pg_mirror_idx when mirroring is supported
so that we don't reset desc->pg_mirror_idx for read unnecessarily. Remove WARN_ON_ONCE from __nfs_pageio_add_request to allow LD to set pg_mirror_idx for read where pg_mirror_count is always 1. Signed-off-by: Peng Tao <tao.peng@primarydata.com> Signed-off-by: Tom Haynes <loghyr@primarydata.com>
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r--fs/nfs/pagelist.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index eec12b75c232..f9d8c4691149 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -1021,8 +1021,6 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc,
unsigned int bytes_left = 0;
unsigned int offset, pgbase;
- WARN_ON_ONCE(desc->pg_mirror_idx >= desc->pg_mirror_count);
-
nfs_page_group_lock(req, false);
subreq = req;
@@ -1162,7 +1160,8 @@ int nfs_pageio_add_request(struct nfs_pageio_descriptor *desc,
} else
dupreq = req;
- desc->pg_mirror_idx = midx;
+ if (nfs_pgio_has_mirroring(desc))
+ desc->pg_mirror_idx = midx;
if (!nfs_pageio_add_request_mirror(desc, dupreq))
return 0;
}
@@ -1181,7 +1180,8 @@ static void nfs_pageio_complete_mirror(struct nfs_pageio_descriptor *desc,
struct nfs_pgio_mirror *mirror = &desc->pg_mirrors[mirror_idx];
u32 restore_idx = desc->pg_mirror_idx;
- desc->pg_mirror_idx = mirror_idx;
+ if (nfs_pgio_has_mirroring(desc))
+ desc->pg_mirror_idx = mirror_idx;
for (;;) {
nfs_pageio_doio(desc);
if (!mirror->pg_recoalesce)