+
+ if (timer_pending(&sb->timer))
+ del_timer(&sb->timer);
+}
+
+static void pwqr_sb_timer_cb(unsigned long arg)
+{
+ struct pwqr_sb *sb = (struct pwqr_sb *)arg;
+ unsigned long flags;
+
+ pwqr_sb_lock_irqsave(sb, flags);
+ if (sb->waiting == 0 && sb->parked && sb->running < sb->concurrency) {
+ if (sb->overcommit_wakes == 0)
+ wake_up_locked(&sb->wqh);
+ }
+ pwqr_sb_unlock_irqrestore(sb, flags);