aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs.c
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2012-04-27 17:53:46 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2012-05-19 17:54:20 -0400
commite7dd79af01e7ca932c5168a708e77750659f7a9e (patch)
treedfacd16bce6df877ecae697cd7dbf5f8e0561872 /fs/nfs/pnfs.c
parent98fc685ae2aa24eae98526e9196b3229d519083a (diff)
NFSv4.1: mark deviceid invalid on filelayout DS connection errors
This prevents the use of any layout for i/o that references the deviceid. I/O is redirected through the MDS. Redirect the unhandled failed I/O to the MDS without marking either the layout or the deviceid invalid. Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/pnfs.c')
-rw-r--r--fs/nfs/pnfs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 6fdeca2fbc2a..16cc1948cb46 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1175,7 +1175,7 @@ pnfs_generic_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
1175} 1175}
1176EXPORT_SYMBOL_GPL(pnfs_generic_pg_test); 1176EXPORT_SYMBOL_GPL(pnfs_generic_pg_test);
1177 1177
1178static int pnfs_write_done_resend_to_mds(struct inode *inode, 1178int pnfs_write_done_resend_to_mds(struct inode *inode,
1179 struct list_head *head, 1179 struct list_head *head,
1180 const struct nfs_pgio_completion_ops *compl_ops) 1180 const struct nfs_pgio_completion_ops *compl_ops)
1181{ 1181{
@@ -1203,6 +1203,7 @@ static int pnfs_write_done_resend_to_mds(struct inode *inode,
1203 } 1203 }
1204 return 0; 1204 return 0;
1205} 1205}
1206EXPORT_SYMBOL_GPL(pnfs_write_done_resend_to_mds);
1206 1207
1207static void pnfs_ld_handle_write_error(struct nfs_write_data *data) 1208static void pnfs_ld_handle_write_error(struct nfs_write_data *data)
1208{ 1209{
@@ -1329,7 +1330,7 @@ pnfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)
1329} 1330}
1330EXPORT_SYMBOL_GPL(pnfs_generic_pg_writepages); 1331EXPORT_SYMBOL_GPL(pnfs_generic_pg_writepages);
1331 1332
1332static int pnfs_read_done_resend_to_mds(struct inode *inode, 1333int pnfs_read_done_resend_to_mds(struct inode *inode,
1333 struct list_head *head, 1334 struct list_head *head,
1334 const struct nfs_pgio_completion_ops *compl_ops) 1335 const struct nfs_pgio_completion_ops *compl_ops)
1335{ 1336{
@@ -1353,6 +1354,7 @@ static int pnfs_read_done_resend_to_mds(struct inode *inode,
1353 } 1354 }
1354 return 0; 1355 return 0;
1355} 1356}
1357EXPORT_SYMBOL_GPL(pnfs_read_done_resend_to_mds);
1356 1358
1357static void pnfs_ld_handle_read_error(struct nfs_read_data *data) 1359static void pnfs_ld_handle_read_error(struct nfs_read_data *data)
1358{ 1360{