Commit 671fb896 authored by Andy Adamson's avatar Andy Adamson Committed by Trond Myklebust

NFSv4.1 wake up all tasks on un-connected DS slot table waitq

The DS has a connection error (invalid deviceid). Drain the fore channel
slot table waitq.
Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 0ad2f378
...@@ -133,6 +133,7 @@ static int filelayout_async_handle_error(struct rpc_task *task, ...@@ -133,6 +133,7 @@ static int filelayout_async_handle_error(struct rpc_task *task,
struct nfs_server *mds_server = NFS_SERVER(inode); struct nfs_server *mds_server = NFS_SERVER(inode);
struct nfs4_deviceid_node *devid = FILELAYOUT_DEVID_NODE(lseg); struct nfs4_deviceid_node *devid = FILELAYOUT_DEVID_NODE(lseg);
struct nfs_client *mds_client = mds_server->nfs_client; struct nfs_client *mds_client = mds_server->nfs_client;
struct nfs4_slot_table *tbl = &clp->cl_session->fc_slot_table;
if (task->tk_status >= 0) if (task->tk_status >= 0)
return 0; return 0;
...@@ -186,6 +187,7 @@ static int filelayout_async_handle_error(struct rpc_task *task, ...@@ -186,6 +187,7 @@ static int filelayout_async_handle_error(struct rpc_task *task,
dprintk("%s DS connection error %d\n", __func__, dprintk("%s DS connection error %d\n", __func__,
task->tk_status); task->tk_status);
filelayout_mark_devid_invalid(devid); filelayout_mark_devid_invalid(devid);
rpc_wake_up(&tbl->slot_tbl_waitq);
/* fall through */ /* fall through */
default: default:
dprintk("%s Retry through MDS. Error %d\n", __func__, dprintk("%s Retry through MDS. Error %d\n", __func__,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment