From nobody Wed Dec 17 05:30:40 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1500387636702460.1921745006198; Tue, 18 Jul 2017 07:20:36 -0700 (PDT) Received: from localhost ([::1]:56784 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dXTMV-0002E8-D4 for importer@patchew.org; Tue, 18 Jul 2017 10:20:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52920) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dXTKR-0000MB-0z for qemu-devel@nongnu.org; Tue, 18 Jul 2017 10:18:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dXTKP-0007Yk-Ji for qemu-devel@nongnu.org; Tue, 18 Jul 2017 10:18:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:18028) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dXTKM-0007Uz-JV; Tue, 18 Jul 2017 10:18:18 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 984B67F3E4; Tue, 18 Jul 2017 14:18:17 +0000 (UTC) Received: from noname.str.redhat.com (dhcp-192-175.str.redhat.com [10.33.192.175]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8947C7EF5F; Tue, 18 Jul 2017 14:18:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 984B67F3E4 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=kwolf@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 984B67F3E4 From: Kevin Wolf To: qemu-block@nongnu.org Date: Tue, 18 Jul 2017 16:17:48 +0200 Message-Id: <1500387486-5469-4-git-send-email-kwolf@redhat.com> In-Reply-To: <1500387486-5469-1-git-send-email-kwolf@redhat.com> References: <1500387486-5469-1-git-send-email-kwolf@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 18 Jul 2017 14:18:17 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 03/21] block: remove timer canceling in throttle_config() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Manos Pitsidianakis throttle_config() cancels the timers of the calling BlockBackend. This doesn't make sense because other BlockBackends in the group remain untouched. There's no need to cancel the timers in the one specific BlockBackend so let's not do that. Throttled requests will run as scheduled and future requests will follow the new configuration. This also allows a throttle group's configuration to be changed even when it has no members. Signed-off-by: Manos Pitsidianakis Reviewed-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- block/throttle-groups.c | 10 +--------- fsdev/qemu-fsdev-throttle.c | 2 +- include/qemu/throttle.h | 1 - tests/test-throttle.c | 4 ++-- util/throttle.c | 14 -------------- 5 files changed, 4 insertions(+), 27 deletions(-) diff --git a/block/throttle-groups.c b/block/throttle-groups.c index 71af3f7..890bfde 100644 --- a/block/throttle-groups.c +++ b/block/throttle-groups.c @@ -426,18 +426,10 @@ void throttle_group_restart_blk(BlockBackend *blk) void throttle_group_config(BlockBackend *blk, ThrottleConfig *cfg) { BlockBackendPublic *blkp =3D blk_get_public(blk); - ThrottleTimers *tt =3D &blkp->throttle_timers; ThrottleState *ts =3D blkp->throttle_state; ThrottleGroup *tg =3D container_of(ts, ThrottleGroup, ts); qemu_mutex_lock(&tg->lock); - /* throttle_config() cancels the timers */ - if (timer_pending(tt->timers[0])) { - tg->any_timer_armed[0] =3D false; - } - if (timer_pending(tt->timers[1])) { - tg->any_timer_armed[1] =3D false; - } - throttle_config(ts, tg->clock_type, tt, cfg); + throttle_config(ts, tg->clock_type, cfg); qemu_mutex_unlock(&tg->lock); =20 throttle_group_restart_blk(blk); diff --git a/fsdev/qemu-fsdev-throttle.c b/fsdev/qemu-fsdev-throttle.c index 453fb1e..49eebb5 100644 --- a/fsdev/qemu-fsdev-throttle.c +++ b/fsdev/qemu-fsdev-throttle.c @@ -86,7 +86,7 @@ void fsdev_throttle_init(FsThrottle *fst) fsdev_throttle_read_timer_cb, fsdev_throttle_write_timer_cb, fst); - throttle_config(&fst->ts, QEMU_CLOCK_REALTIME, &fst->tt, &fst->cfg= ); + throttle_config(&fst->ts, QEMU_CLOCK_REALTIME, &fst->cfg); qemu_co_queue_init(&fst->throttled_reqs[0]); qemu_co_queue_init(&fst->throttled_reqs[1]); } diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h index 8d2fd77..d056008 100644 --- a/include/qemu/throttle.h +++ b/include/qemu/throttle.h @@ -140,7 +140,6 @@ bool throttle_is_valid(ThrottleConfig *cfg, Error **err= p); =20 void throttle_config(ThrottleState *ts, QEMUClockType clock_type, - ThrottleTimers *tt, ThrottleConfig *cfg); =20 void throttle_get_config(ThrottleState *ts, ThrottleConfig *cfg); diff --git a/tests/test-throttle.c b/tests/test-throttle.c index 2d9cd46..768f11d 100644 --- a/tests/test-throttle.c +++ b/tests/test-throttle.c @@ -228,7 +228,7 @@ static void test_config_functions(void) read_timer_cb, write_timer_cb, &ts); /* structure reset by throttle_init previous_leak should be null */ g_assert(!ts.previous_leak); - throttle_config(&ts, QEMU_CLOCK_VIRTUAL, &tt, &orig_cfg); + throttle_config(&ts, QEMU_CLOCK_VIRTUAL, &orig_cfg); =20 /* has previous leak been initialized by throttle_config ? */ g_assert(ts.previous_leak); @@ -486,7 +486,7 @@ static bool do_test_accounting(bool is_ops, /* are we t= esting bps or ops */ throttle_init(&ts); throttle_timers_init(&tt, ctx, QEMU_CLOCK_VIRTUAL, read_timer_cb, write_timer_cb, &ts); - throttle_config(&ts, QEMU_CLOCK_VIRTUAL, &tt, &cfg); + throttle_config(&ts, QEMU_CLOCK_VIRTUAL, &cfg); =20 /* account a read */ throttle_account(&ts, false, size); diff --git a/util/throttle.c b/util/throttle.c index 3e94807..b2a52b8 100644 --- a/util/throttle.c +++ b/util/throttle.c @@ -388,24 +388,14 @@ static void throttle_unfix_bucket(LeakyBucket *bkt) } } =20 -/* take care of canceling a timer */ -static void throttle_cancel_timer(QEMUTimer *timer) -{ - assert(timer !=3D NULL); - - timer_del(timer); -} - /* Used to configure the throttle * * @ts: the throttle state we are working on * @clock_type: the group's clock_type - * @tt: the throttle timers we use in this aio context * @cfg: the config to set */ void throttle_config(ThrottleState *ts, QEMUClockType clock_type, - ThrottleTimers *tt, ThrottleConfig *cfg) { int i; @@ -417,10 +407,6 @@ void throttle_config(ThrottleState *ts, } =20 ts->previous_leak =3D qemu_clock_get_ns(clock_type); - - for (i =3D 0; i < 2; i++) { - throttle_cancel_timer(tt->timers[i]); - } } =20 /* used to get config --=20 1.8.3.1