Commit ddaab3ec authored by Yu Kuai's avatar Yu Kuai Committed by openeuler-sync-bot
Browse files

blk-iocost: track whether iocg is still online

hulk inclusion
category: bugfix
bugzilla: 188107, https://gitee.com/openeuler/kernel/issues/I665S2


CVE: NA

--------------------------------

blkcg_gq->online can't be used in iocost because it get cleared only after
all policies are offlined. This patch add a new field 'online' in iocg.

Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
Signed-off-by: default avatarLi Nan <linan122@huawei.com>
(cherry picked from commit 3fcd5793)
parent b7d83471
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -486,6 +486,7 @@ struct ioc_gq {
	u32				inuse;

	u32				last_inuse;
	bool				online;
	s64				saved_margin;

	sector_t			cursor;		/* to detect randio */
@@ -2939,6 +2940,7 @@ static void ioc_pd_init(struct blkg_policy_data *pd)
	ioc_now(ioc, &now);

	iocg->ioc = ioc;
	iocg->online = true;
	atomic64_set(&iocg->vtime, now.vnow);
	atomic64_set(&iocg->done_vtime, now.vnow);
	atomic64_set(&iocg->active_period, atomic64_read(&ioc->cur_period));
@@ -2973,6 +2975,8 @@ static void ioc_pd_offline(struct blkg_policy_data *pd)
	if (ioc) {
		spin_lock_irqsave(&ioc->lock, flags);

		iocg->online = false;

		if (!list_empty(&iocg->active_list)) {
			struct ioc_now now;