+
+ /* bug 18948:
+ * The recovery timer expired and target_check_and_stop_recovery()
+ * must be called. We cannot call it directly because we are in
+ * interrupt context, so we need to wake up another thread to call it.
+ * This may happen if there are obd->obd_next_transno_waitq waiters,
+ * or if we happen to handle a connect request. However, we cannot
+ * count on either of those things so we wake up the ping evictor
+ * and leverage it's context to complete recovery.
+ *
+ * Note: HEAD has a separate recovery thread and handle this.
+ */
+ spin_lock(&obd->obd_dev_lock);
+ ping_evictor_wake(obd->obd_self_export);
+ spin_unlock(&obd->obd_dev_lock);