diff options
author | Andy Adamson <andros@netapp.com> | 2012-04-27 17:53:50 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-05-19 17:55:31 -0400 |
commit | 0a57cdac3fb9d249f4fbbc745c01b9292ef8c1b7 (patch) | |
tree | 8fb264e116c6c29ae0ed38f8c8065074bc288f55 | |
parent | 671fb89695fee0c70a969371efd38ed30be76a8a (diff) |
NFSv4.1 send layoutreturn to fence disconnected data server
Let the MDS know that you are redirecting I/O from pNFS to MDS.
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r-- | fs/nfs/nfs4filelayout.c | 2 | ||||
-rw-r--r-- | fs/nfs/pnfs.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c index a63062d3882..c6b7c183494 100644 --- a/fs/nfs/nfs4filelayout.c +++ b/fs/nfs/nfs4filelayout.c @@ -186,6 +186,8 @@ static int filelayout_async_handle_error(struct rpc_task *task, case -EPIPE: dprintk("%s DS connection error %d\n", __func__, task->tk_status); + if (!filelayout_test_devid_invalid(devid)) + _pnfs_return_layout(state->inode); filelayout_mark_devid_invalid(devid); rpc_wake_up(&tbl->slot_tbl_waitq); /* fall through */ diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 16cc1948cb4..e48017f67fe 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -692,6 +692,7 @@ out: dprintk("<-- %s status: %d\n", __func__, status); return status; } +EXPORT_SYMBOL_GPL(_pnfs_return_layout); bool pnfs_roc(struct inode *ino) { |