diff options
author | Andy Adamson <andros@netapp.com> | 2012-04-27 17:53:46 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-05-19 17:54:20 -0400 |
commit | e7dd79af01e7ca932c5168a708e77750659f7a9e (patch) | |
tree | dfacd16bce6df877ecae697cd7dbf5f8e0561872 /fs/nfs/pnfs.c | |
parent | 98fc685ae2aa24eae98526e9196b3229d519083a (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.c | 6 |
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 | } |
1176 | EXPORT_SYMBOL_GPL(pnfs_generic_pg_test); | 1176 | EXPORT_SYMBOL_GPL(pnfs_generic_pg_test); |
1177 | 1177 | ||
1178 | static int pnfs_write_done_resend_to_mds(struct inode *inode, | 1178 | int 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 | } |
1206 | EXPORT_SYMBOL_GPL(pnfs_write_done_resend_to_mds); | ||
1206 | 1207 | ||
1207 | static void pnfs_ld_handle_write_error(struct nfs_write_data *data) | 1208 | static 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 | } |
1330 | EXPORT_SYMBOL_GPL(pnfs_generic_pg_writepages); | 1331 | EXPORT_SYMBOL_GPL(pnfs_generic_pg_writepages); |
1331 | 1332 | ||
1332 | static int pnfs_read_done_resend_to_mds(struct inode *inode, | 1333 | int 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 | } |
1357 | EXPORT_SYMBOL_GPL(pnfs_read_done_resend_to_mds); | ||
1356 | 1358 | ||
1357 | static void pnfs_ld_handle_read_error(struct nfs_read_data *data) | 1359 | static void pnfs_ld_handle_read_error(struct nfs_read_data *data) |
1358 | { | 1360 | { |