Commit 22957b87 authored by Jim Harris's avatar Jim Harris Committed by Konrad Sztyber
Browse files

gscheduler: fix divide-by-zero error



If gscheduler is activated and gets a chance to balance() before all
cores have an spdk_thread assigned, the total_tsc for that core would
be 0, and calculate_busy_pct() would divide by zero causing a SIGFPE.

Fixes issue #3550.

Signed-off-by: default avatarJim Harris <jim.harris@samsung.com>
Change-Id: I5b21bbbd3fb7448edd6d929a36a77b9fbd9d0e43
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25200


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarMichal Berger <michal.berger@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAlliswell <hisunzhenliang@outlook.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeliu@tencent.com>
parent b6849ff4
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -35,8 +35,12 @@ calculate_busy_pct(struct spdk_scheduler_core_info *core)
	uint64_t total_tsc;

	total_tsc = core->current_busy_tsc + core->current_idle_tsc;
	if (total_tsc == 0) {
		return 0;
	} else {
		return core->current_busy_tsc * 100 / total_tsc;
	}
}

struct check_sibling_ctx {
	struct spdk_scheduler_core_info *cores;