diff --git a/drivers/md/dm-cache-policy-smq.c b/drivers/md/dm-cache-policy-smq.c
index 74436dc2122f2193d0d5dab32bf28c70ff3ea24b..e0c40aec5e964eb1428f53ee5e84814d7ba9b75a 100644
--- a/drivers/md/dm-cache-policy-smq.c
+++ b/drivers/md/dm-cache-policy-smq.c
@@ -1166,7 +1166,7 @@ static void queue_writeback(struct smq_policy *mq)
 	struct policy_work work;
 	struct entry *e;
 
-	e = q_peek(&mq->dirty, mq->dirty.nr_levels, false);
+	e = q_peek(&mq->dirty, mq->dirty.nr_levels, !mq->migrations_allowed);
 	if (e) {
 		mark_pending(mq, e);
 		q_del(&mq->dirty, e);