dm mpath: debug must_push_back
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index 16583c1..fa9506b 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -433,17 +433,23 @@
  */
 static int must_push_back(struct multipath *m)
 {
-	bool r;
+	bool queue_if_no_path, suspend_active, suspending;
 	unsigned long flags;
 
 	spin_lock_irqsave(&m->lock, flags);
-	r = (test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) ||
-	     ((test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) !=
-	       test_bit(MPATHF_SAVED_QUEUE_IF_NO_PATH, &m->flags)) &&
-	      dm_noflush_suspending(m->ti)));
+
+        queue_if_no_path = test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags);
+        suspend_active = (test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) !=
+			  test_bit(MPATHF_SAVED_QUEUE_IF_NO_PATH, &m->flags));
+        suspending = (suspend_active && dm_noflush_suspending(m->ti));
+
 	spin_unlock_irqrestore(&m->lock, flags);
 
-	return r;
+        if (!queue_if_no_path || !suspending)
+                DMERR_LIMIT("%s: queue_if_no_path=%d suspend_active=%d suspending=%d",
+                            __func__, queue_if_no_path, suspend_active, suspending);
+
+	return (queue_if_no_path || suspending);
 }
 
 /*