X-Git-Url: http://git.madism.org/?p=~madcoder%2Fpwqr.git;a=blobdiff_plain;f=kernel%2Fpwqr.c;h=6d822ea6bca40a2ba8de3965526f33b4a98b8649;hp=233bd7a7a9ca6d41d391bef4fda1f67ab889a46d;hb=0dfcf387adaf2a156322d6e1076dac207e8384b7;hpb=e8915e9a336e0e0cef3758e7e10dec23443de6dc diff --git a/kernel/pwqr.c b/kernel/pwqr.c index 233bd7a..6d822ea 100644 --- a/kernel/pwqr.c +++ b/kernel/pwqr.c @@ -172,10 +172,13 @@ static inline void __pwqr_sb_update_state(struct pwqr_sb *sb, int running_delta) sb->running += running_delta; if (sb->running < sb->concurrency && sb->waiting == 0 && sb->parked) { + sb->has_pollin = 0; pwqr_arm_timer(sb, PWQR_STATE_UC, PWQR_UC_DELAY); } else if (sb->running > sb->concurrency) { - pwqr_arm_timer(sb, PWQR_STATE_OC, PWQR_OC_DELAY); + if (!sb->has_pollin) + pwqr_arm_timer(sb, PWQR_STATE_OC, PWQR_OC_DELAY); } else { + sb->has_pollin = 0; sb->state = PWQR_STATE_NONE; if (!timer_pending(&sb->timer)) del_timer(&sb->timer);