Linux 2.6.29 compat, .freeze_fs/.unfreeze_fs
[zfs.git] / module / zfs / arc.c
index 32d99bf..3a45730 100644 (file)
@@ -2149,7 +2149,7 @@ arc_reclaim_thread(void)
 
                /* block until needed, or one second, whichever is shorter */
                CALLB_CPR_SAFE_BEGIN(&cpr);
-               (void) cv_timedwait(&arc_reclaim_thr_cv,
+               (void) cv_timedwait_interruptible(&arc_reclaim_thr_cv,
                    &arc_reclaim_thr_lock, (ddi_get_lbolt() + hz));
                CALLB_CPR_SAFE_END(&cpr, &arc_reclaim_thr_lock);
        }
@@ -2720,7 +2720,7 @@ top:
                                arc_callback_t  *acb = NULL;
 
                                acb = kmem_zalloc(sizeof (arc_callback_t),
-                                   KM_SLEEP);
+                                   KM_PUSHPAGE);
                                acb->acb_done = done;
                                acb->acb_private = private;
                                if (pio != NULL)
@@ -2836,7 +2836,7 @@ top:
 
                ASSERT(!GHOST_STATE(hdr->b_state));
 
-               acb = kmem_zalloc(sizeof (arc_callback_t), KM_SLEEP);
+               acb = kmem_zalloc(sizeof (arc_callback_t), KM_PUSHPAGE);
                acb->acb_done = done;
                acb->acb_private = private;
 
@@ -2885,7 +2885,7 @@ top:
                                ARCSTAT_BUMP(arcstat_l2_hits);
 
                                cb = kmem_zalloc(sizeof (l2arc_read_callback_t),
-                                   KM_SLEEP);
+                                   KM_PUSHPAGE);
                                cb->l2rcb_buf = buf;
                                cb->l2rcb_spa = spa;
                                cb->l2rcb_bp = *bp;
@@ -4435,8 +4435,8 @@ l2arc_feed_thread(void)
 
        while (l2arc_thread_exit == 0) {
                CALLB_CPR_SAFE_BEGIN(&cpr);
-               (void) cv_timedwait(&l2arc_feed_thr_cv, &l2arc_feed_thr_lock,
-                   next);
+               (void) cv_timedwait_interruptible(&l2arc_feed_thr_cv,
+                   &l2arc_feed_thr_lock, next);
                CALLB_CPR_SAFE_END(&cpr, &l2arc_feed_thr_lock);
                next = ddi_get_lbolt() + hz;