diff --git a/lustre/ptlrpc/sec_bulk.c b/lustre/ptlrpc/sec_bulk.c
index 6cb1653a3333b10e52bc11d47b4b06664c568100..12ff1717e92e43a85f781bcb3289ce7c25f1e864 100644
--- a/lustre/ptlrpc/sec_bulk.c
+++ b/lustre/ptlrpc/sec_bulk.c
@@ -542,12 +542,13 @@ again:
                                 page_pools.epp_st_max_wqlen =
                                                 page_pools.epp_waitqlen;
 
-                        set_current_state(TASK_UNINTERRUPTIBLE);
+                        set_current_state(CFS_TASK_UNINT);
                         cfs_waitlink_init(&waitlink);
                         cfs_waitq_add(&page_pools.epp_waitq, &waitlink);
 
                         spin_unlock(&page_pools.epp_lock);
-                        cfs_schedule();
+                        cfs_waitq_wait(&waitlink, CFS_TASK_UNINT);
+                        cfs_waitq_del(&page_pools.epp_waitq, &waitlink);
                         spin_lock(&page_pools.epp_lock);
 
                         LASSERT(page_pools.epp_waitqlen > 0);