]> www.infradead.org Git - users/hch/blktests.git/commit
common/cpuhotplug: allow _offline_cpu() call in sub-shell
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 19 Jul 2022 02:52:16 +0000 (11:52 +0900)
committerShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Sun, 24 Jul 2022 23:52:35 +0000 (08:52 +0900)
commit107256dc53d55f558e349e463a5a99c3bb6b4189
treee01b6960156bace9d1a23e2bb6c642f23afb95bd
parent1e6f4b28d8e6f0cf49db45657183cdadcfbc1cb5
common/cpuhotplug: allow _offline_cpu() call in sub-shell

The helper function _offline_cpu() sets a value to RESTORE_CPUS_ONLINE.
However, the commit bd6b882b2650 ("block/008: check CPU offline failure
due to many IRQs") put _offline_cpu() call in sub-shell, then the set
value to RESTORE_CPUS_ONLINE no longer affects function caller's
environment. This resulted in off-lined CPUs not restored by _cleanup()
when the test case block/008 calls only _offline_cpu() and does not call
_online_cpu().

To fix the issue, set RESTORE_CPUS_ONLINE in _have_cpu_hotplug() in
place of _offline_cpu(). _have_cpu_hotplug() is less likely to be called
in sub-shell. In same manner, do not set RESTORE_CPUS_ONLINE in
_online_cpu() either. Check that RESTORE_CPUS_ONLINE is set in
_offline_cpu() to avoid unexpected CPUs left off-lined. This check also
avoids a shellcheck warning.

Fixes: bd6b882b2650 ("block/008: check CPU offline failure due to many IRQs")
Reported-by: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
common/cpuhotplug