aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/client.c')
-rw-r--r--fs/nfs/client.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index d2533e214255..013cdbc3b000 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -322,25 +322,11 @@ found_client:
322 if (new) 322 if (new)
323 nfs_free_client(new); 323 nfs_free_client(new);
324 324
325 if (clp->cl_cons_state == NFS_CS_INITING) { 325 error = wait_event_interruptible(&nfs_client_active_wq,
326 DECLARE_WAITQUEUE(myself, current); 326 clp->cl_cons_state != NFS_CS_INITING);
327 327 if (error < 0) {
328 add_wait_queue(&nfs_client_active_wq, &myself); 328 nfs_put_client(clp);
329 329 return ERR_PTR(-ERESTARTSYS);
330 for (;;) {
331 set_current_state(TASK_INTERRUPTIBLE);
332 if (signal_pending(current) ||
333 clp->cl_cons_state != NFS_CS_INITING)
334 break;
335 schedule();
336 }
337
338 remove_wait_queue(&nfs_client_active_wq, &myself);
339
340 if (signal_pending(current)) {
341 nfs_put_client(clp);
342 return ERR_PTR(-ERESTARTSYS);
343 }
344 } 330 }
345 331
346 if (clp->cl_cons_state < NFS_CS_READY) { 332 if (clp->cl_cons_state < NFS_CS_READY) {