system/dirtylimit: Fix a race situation
Fix a race situation for global variable dirtylimit_state. Also, replace usleep by g_usleep to increase platform accessibility to the sleep function. Signed-off-by: Hyman Huang <yong.huang@smartx.com> Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <27c86239e21eda03d11ce5a3d07da3c229f562e3.1698847223.git.yong.huang@smartx.com>
This commit is contained in:
parent
d762bf9793
commit
cce10a1f0c
@ -411,12 +411,20 @@ void dirtylimit_set_all(uint64_t quota,
|
||||
|
||||
void dirtylimit_vcpu_execute(CPUState *cpu)
|
||||
{
|
||||
if (dirtylimit_in_service() &&
|
||||
dirtylimit_vcpu_get_state(cpu->cpu_index)->enabled &&
|
||||
cpu->throttle_us_per_full) {
|
||||
trace_dirtylimit_vcpu_execute(cpu->cpu_index,
|
||||
cpu->throttle_us_per_full);
|
||||
usleep(cpu->throttle_us_per_full);
|
||||
if (cpu->throttle_us_per_full) {
|
||||
dirtylimit_state_lock();
|
||||
|
||||
if (dirtylimit_in_service() &&
|
||||
dirtylimit_vcpu_get_state(cpu->cpu_index)->enabled) {
|
||||
dirtylimit_state_unlock();
|
||||
trace_dirtylimit_vcpu_execute(cpu->cpu_index,
|
||||
cpu->throttle_us_per_full);
|
||||
|
||||
g_usleep(cpu->throttle_us_per_full);
|
||||
return;
|
||||
}
|
||||
|
||||
dirtylimit_state_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user