diff options
author | kib <kib@FreeBSD.org> | 2016-03-02 18:46:17 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2016-03-02 18:46:17 +0000 |
commit | 486320aac47a70ba38fa073d099952762d964f7b (patch) | |
tree | c0a34461afd95f99062c6c31c7238d7d0e7e763c /usr.sbin/daemon/daemon.8 | |
parent | a45b6b4d9cfa0c7046106013d930f98c3df904d4 (diff) | |
download | FreeBSD-src-486320aac47a70ba38fa073d099952762d964f7b.zip FreeBSD-src-486320aac47a70ba38fa073d099952762d964f7b.tar.gz |
If callout_stop_safe() noted that the callout is currently executing,
but next invocation is cancelled while migrating,
sleepq_check_timeout() needs to be informed that the callout is
stopped. Otherwise the thread switches off CPU and never become
runnable, since running callout could have already raced with us,
while the migrating and cancelled callout could be one which is
expected to set TDP_TIMOFAIL flag for us. This contradicts with the
expected behaviour of callout_stop() for other callers, which
e.g. decrement references from the callout callbacks.
Add a new flag CS_MIGRBLOCK requesting report of the situation as
'successfully stopped'.
Reviewed by: jhb (previous version)
Tested by: cognet, pho
PR: 200992
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Differential revision: https://reviews.freebsd.org/D5221
Diffstat (limited to 'usr.sbin/daemon/daemon.8')
0 files changed, 0 insertions, 0 deletions