diff --git a/scst/src/scst_priv.h b/scst/src/scst_priv.h index d617ed949..063a7f083 100644 --- a/scst/src/scst_priv.h +++ b/scst/src/scst_priv.h @@ -21,6 +21,7 @@ #include #include +#include #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) #include #endif @@ -773,6 +774,14 @@ int scst_get_suspend_count(void); static inline atomic_t *scst_get(void) { atomic_t *a; + + /* + * Avoid that a high I/O load prevents activity to be suspended. See + * also http://sourceforge.net/p/scst/mailman/message/34074831/. + */ + if (unlikely(test_bit(SCST_FLAG_SUSPENDING, &scst_flags))) + mdelay(100); + /* * We don't mind if we because of preemption inc counter from another * CPU as soon in the majority cases we will the correct one.