* [PATCH v2 0/5] Misc fixes for throttle
@ 2023-06-27 7:24 zhenwei pi
2023-06-27 7:24 ` [PATCH v2 1/5] throttle: introduce enum ThrottleType zhenwei pi
` (5 more replies)
0 siblings, 6 replies; 12+ messages in thread
From: zhenwei pi @ 2023-06-27 7:24 UTC (permalink / raw)
To: berto; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
v1 -> v2:
- rename 'ThrottleTimerType' to 'ThrottleType'
- add assertion to throttle_schedule_timer
Something remained:
- 'bool is_write' is no longer appropriate, the related functions
need to use 'ThrottleType throttle' instead. To avoid changes from
other subsystems in this series, do this work in a followup series
after there patches apply.
v1:
- introduce enum ThrottleTimerType instead of timers[0], timer[1]...
- support read-only and write-only for throttle
- adapt related test codes
- cryptodev uses a write-only throttle timer
Zhenwei Pi (5):
throttle: introduce enum ThrottleType
test-throttle: use enum ThrottleType
throttle: support read-only and write-only
test-throttle: test read only and write only
cryptodev: use NULL throttle timer cb for read direction
backends/cryptodev.c | 3 +-
include/qemu/throttle.h | 11 ++++--
tests/unit/test-throttle.c | 72 ++++++++++++++++++++++++++++++++++++--
util/throttle.c | 36 +++++++++++++------
4 files changed, 103 insertions(+), 19 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/5] throttle: introduce enum ThrottleType
2023-06-27 7:24 [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
@ 2023-06-27 7:24 ` zhenwei pi
2023-07-03 10:26 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 2/5] test-throttle: use " zhenwei pi
` (4 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: zhenwei pi @ 2023-06-27 7:24 UTC (permalink / raw)
To: berto; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
Use enum ThrottleType instead of number index.
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
include/qemu/throttle.h | 11 ++++++++---
util/throttle.c | 16 +++++++++-------
2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h
index 05f6346137..ba6293eeef 100644
--- a/include/qemu/throttle.h
+++ b/include/qemu/throttle.h
@@ -99,13 +99,18 @@ typedef struct ThrottleState {
int64_t previous_leak; /* timestamp of the last leak done */
} ThrottleState;
+typedef enum {
+ THROTTLE_READ = 0,
+ THROTTLE_WRITE,
+ THROTTLE_MAX
+} ThrottleType;
+
typedef struct ThrottleTimers {
- QEMUTimer *timers[2]; /* timers used to do the throttling */
+ QEMUTimer *timers[THROTTLE_MAX]; /* timers used to do the throttling */
QEMUClockType clock_type; /* the clock used */
/* Callbacks */
- QEMUTimerCB *read_timer_cb;
- QEMUTimerCB *write_timer_cb;
+ QEMUTimerCB *timer_cb[THROTTLE_MAX];
void *timer_opaque;
} ThrottleTimers;
diff --git a/util/throttle.c b/util/throttle.c
index 81f247a8d1..5642e61763 100644
--- a/util/throttle.c
+++ b/util/throttle.c
@@ -199,10 +199,12 @@ static bool throttle_compute_timer(ThrottleState *ts,
void throttle_timers_attach_aio_context(ThrottleTimers *tt,
AioContext *new_context)
{
- tt->timers[0] = aio_timer_new(new_context, tt->clock_type, SCALE_NS,
- tt->read_timer_cb, tt->timer_opaque);
- tt->timers[1] = aio_timer_new(new_context, tt->clock_type, SCALE_NS,
- tt->write_timer_cb, tt->timer_opaque);
+ tt->timers[THROTTLE_READ] =
+ aio_timer_new(new_context, tt->clock_type, SCALE_NS,
+ tt->timer_cb[THROTTLE_READ], tt->timer_opaque);
+ tt->timers[THROTTLE_WRITE] =
+ aio_timer_new(new_context, tt->clock_type, SCALE_NS,
+ tt->timer_cb[THROTTLE_WRITE], tt->timer_opaque);
}
/*
@@ -236,8 +238,8 @@ void throttle_timers_init(ThrottleTimers *tt,
memset(tt, 0, sizeof(ThrottleTimers));
tt->clock_type = clock_type;
- tt->read_timer_cb = read_timer_cb;
- tt->write_timer_cb = write_timer_cb;
+ tt->timer_cb[THROTTLE_READ] = read_timer_cb;
+ tt->timer_cb[THROTTLE_WRITE] = write_timer_cb;
tt->timer_opaque = timer_opaque;
throttle_timers_attach_aio_context(tt, aio_context);
}
@@ -256,7 +258,7 @@ void throttle_timers_detach_aio_context(ThrottleTimers *tt)
{
int i;
- for (i = 0; i < 2; i++) {
+ for (i = 0; i < THROTTLE_MAX; i++) {
throttle_timer_destroy(&tt->timers[i]);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 2/5] test-throttle: use enum ThrottleType
2023-06-27 7:24 [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
2023-06-27 7:24 ` [PATCH v2 1/5] throttle: introduce enum ThrottleType zhenwei pi
@ 2023-06-27 7:24 ` zhenwei pi
2023-07-03 10:26 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 3/5] throttle: support read-only and write-only zhenwei pi
` (3 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: zhenwei pi @ 2023-06-27 7:24 UTC (permalink / raw)
To: berto; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
Use enum ThrottleType instead in the throttle test codes.
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
tests/unit/test-throttle.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/unit/test-throttle.c b/tests/unit/test-throttle.c
index 7adb5e6652..a60b5fe22e 100644
--- a/tests/unit/test-throttle.c
+++ b/tests/unit/test-throttle.c
@@ -169,8 +169,8 @@ static void test_init(void)
/* check initialized fields */
g_assert(tt->clock_type == QEMU_CLOCK_VIRTUAL);
- g_assert(tt->timers[0]);
- g_assert(tt->timers[1]);
+ g_assert(tt->timers[THROTTLE_READ]);
+ g_assert(tt->timers[THROTTLE_WRITE]);
/* check other fields where cleared */
g_assert(!ts.previous_leak);
@@ -191,7 +191,7 @@ static void test_destroy(void)
throttle_timers_init(tt, ctx, QEMU_CLOCK_VIRTUAL,
read_timer_cb, write_timer_cb, &ts);
throttle_timers_destroy(tt);
- for (i = 0; i < 2; i++) {
+ for (i = 0; i < THROTTLE_MAX; i++) {
g_assert(!tt->timers[i]);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 3/5] throttle: support read-only and write-only
2023-06-27 7:24 [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
2023-06-27 7:24 ` [PATCH v2 1/5] throttle: introduce enum ThrottleType zhenwei pi
2023-06-27 7:24 ` [PATCH v2 2/5] test-throttle: use " zhenwei pi
@ 2023-06-27 7:24 ` zhenwei pi
2023-07-03 10:28 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 4/5] test-throttle: test read only and write only zhenwei pi
` (2 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: zhenwei pi @ 2023-06-27 7:24 UTC (permalink / raw)
To: berto; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
Only one direction is necessary in several scenarios:
- a read-only disk
- operations on a device are considered as *write* only. For example,
encrypt/decrypt/sign/verify operations on a cryptodev use a single
*write* timer(read timer callback is defined, but never invoked).
Allow a single direction in throttle, this reduces memory, and uplayer
does not need a dummy callback any more.
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
util/throttle.c | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/util/throttle.c b/util/throttle.c
index 5642e61763..c0bd0c26c3 100644
--- a/util/throttle.c
+++ b/util/throttle.c
@@ -199,12 +199,17 @@ static bool throttle_compute_timer(ThrottleState *ts,
void throttle_timers_attach_aio_context(ThrottleTimers *tt,
AioContext *new_context)
{
- tt->timers[THROTTLE_READ] =
- aio_timer_new(new_context, tt->clock_type, SCALE_NS,
- tt->timer_cb[THROTTLE_READ], tt->timer_opaque);
- tt->timers[THROTTLE_WRITE] =
- aio_timer_new(new_context, tt->clock_type, SCALE_NS,
- tt->timer_cb[THROTTLE_WRITE], tt->timer_opaque);
+ if (tt->timer_cb[THROTTLE_READ]) {
+ tt->timers[THROTTLE_READ] =
+ aio_timer_new(new_context, tt->clock_type, SCALE_NS,
+ tt->timer_cb[THROTTLE_READ], tt->timer_opaque);
+ }
+
+ if (tt->timer_cb[THROTTLE_WRITE]) {
+ tt->timers[THROTTLE_WRITE] =
+ aio_timer_new(new_context, tt->clock_type, SCALE_NS,
+ tt->timer_cb[THROTTLE_WRITE], tt->timer_opaque);
+ }
}
/*
@@ -235,6 +240,7 @@ void throttle_timers_init(ThrottleTimers *tt,
QEMUTimerCB *write_timer_cb,
void *timer_opaque)
{
+ assert(read_timer_cb || write_timer_cb);
memset(tt, 0, sizeof(ThrottleTimers));
tt->clock_type = clock_type;
@@ -247,7 +253,9 @@ void throttle_timers_init(ThrottleTimers *tt,
/* destroy a timer */
static void throttle_timer_destroy(QEMUTimer **timer)
{
- assert(*timer != NULL);
+ if (*timer == NULL) {
+ return;
+ }
timer_free(*timer);
*timer = NULL;
@@ -272,7 +280,7 @@ void throttle_timers_destroy(ThrottleTimers *tt)
/* is any throttling timer configured */
bool throttle_timers_are_initialized(ThrottleTimers *tt)
{
- if (tt->timers[0]) {
+ if (tt->timers[THROTTLE_READ] || tt->timers[THROTTLE_WRITE]) {
return true;
}
@@ -424,8 +432,12 @@ bool throttle_schedule_timer(ThrottleState *ts,
{
int64_t now = qemu_clock_get_ns(tt->clock_type);
int64_t next_timestamp;
+ QEMUTimer *timer;
bool must_wait;
+ timer = is_write ? tt->timers[THROTTLE_WRITE] : tt->timers[THROTTLE_READ];
+ assert(timer);
+
must_wait = throttle_compute_timer(ts,
is_write,
now,
@@ -437,12 +449,12 @@ bool throttle_schedule_timer(ThrottleState *ts,
}
/* request throttled and timer pending -> do nothing */
- if (timer_pending(tt->timers[is_write])) {
+ if (timer_pending(timer)) {
return true;
}
/* request throttled and timer not pending -> arm timer */
- timer_mod(tt->timers[is_write], next_timestamp);
+ timer_mod(timer, next_timestamp);
return true;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 4/5] test-throttle: test read only and write only
2023-06-27 7:24 [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
` (2 preceding siblings ...)
2023-06-27 7:24 ` [PATCH v2 3/5] throttle: support read-only and write-only zhenwei pi
@ 2023-06-27 7:24 ` zhenwei pi
2023-07-03 10:31 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 5/5] cryptodev: use NULL throttle timer cb for read direction zhenwei pi
2023-07-11 0:29 ` PING: [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
5 siblings, 1 reply; 12+ messages in thread
From: zhenwei pi @ 2023-06-27 7:24 UTC (permalink / raw)
To: berto; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
tests/unit/test-throttle.c | 66 ++++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/tests/unit/test-throttle.c b/tests/unit/test-throttle.c
index a60b5fe22e..5547837a58 100644
--- a/tests/unit/test-throttle.c
+++ b/tests/unit/test-throttle.c
@@ -184,6 +184,70 @@ static void test_init(void)
throttle_timers_destroy(tt);
}
+static void test_init_readonly(void)
+{
+ int i;
+
+ tt = &tgm.throttle_timers;
+
+ /* fill the structures with crap */
+ memset(&ts, 1, sizeof(ts));
+ memset(tt, 1, sizeof(*tt));
+
+ /* init structures */
+ throttle_init(&ts);
+ throttle_timers_init(tt, ctx, QEMU_CLOCK_VIRTUAL,
+ read_timer_cb, NULL, &ts);
+
+ /* check initialized fields */
+ g_assert(tt->clock_type == QEMU_CLOCK_VIRTUAL);
+ g_assert(tt->timers[THROTTLE_READ]);
+ g_assert(!tt->timers[THROTTLE_WRITE]);
+
+ /* check other fields where cleared */
+ g_assert(!ts.previous_leak);
+ g_assert(!ts.cfg.op_size);
+ for (i = 0; i < BUCKETS_COUNT; i++) {
+ g_assert(!ts.cfg.buckets[i].avg);
+ g_assert(!ts.cfg.buckets[i].max);
+ g_assert(!ts.cfg.buckets[i].level);
+ }
+
+ throttle_timers_destroy(tt);
+}
+
+static void test_init_writeonly(void)
+{
+ int i;
+
+ tt = &tgm.throttle_timers;
+
+ /* fill the structures with crap */
+ memset(&ts, 1, sizeof(ts));
+ memset(tt, 1, sizeof(*tt));
+
+ /* init structures */
+ throttle_init(&ts);
+ throttle_timers_init(tt, ctx, QEMU_CLOCK_VIRTUAL,
+ NULL, write_timer_cb, &ts);
+
+ /* check initialized fields */
+ g_assert(tt->clock_type == QEMU_CLOCK_VIRTUAL);
+ g_assert(!tt->timers[THROTTLE_READ]);
+ g_assert(tt->timers[THROTTLE_WRITE]);
+
+ /* check other fields where cleared */
+ g_assert(!ts.previous_leak);
+ g_assert(!ts.cfg.op_size);
+ for (i = 0; i < BUCKETS_COUNT; i++) {
+ g_assert(!ts.cfg.buckets[i].avg);
+ g_assert(!ts.cfg.buckets[i].max);
+ g_assert(!ts.cfg.buckets[i].level);
+ }
+
+ throttle_timers_destroy(tt);
+}
+
static void test_destroy(void)
{
int i;
@@ -752,6 +816,8 @@ int main(int argc, char **argv)
g_test_add_func("/throttle/leak_bucket", test_leak_bucket);
g_test_add_func("/throttle/compute_wait", test_compute_wait);
g_test_add_func("/throttle/init", test_init);
+ g_test_add_func("/throttle/init_readonly", test_init_readonly);
+ g_test_add_func("/throttle/init_writeonly", test_init_writeonly);
g_test_add_func("/throttle/destroy", test_destroy);
g_test_add_func("/throttle/have_timer", test_have_timer);
g_test_add_func("/throttle/detach_attach", test_detach_attach);
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 5/5] cryptodev: use NULL throttle timer cb for read direction
2023-06-27 7:24 [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
` (3 preceding siblings ...)
2023-06-27 7:24 ` [PATCH v2 4/5] test-throttle: test read only and write only zhenwei pi
@ 2023-06-27 7:24 ` zhenwei pi
2023-07-03 10:28 ` Alberto Garcia
2023-07-11 0:29 ` PING: [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
5 siblings, 1 reply; 12+ messages in thread
From: zhenwei pi @ 2023-06-27 7:24 UTC (permalink / raw)
To: berto; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
Operations on a crytpodev are considered as *write* only, the callback
of read direction is never invoked. Use NULL instead of an unreachable
path(cryptodev_backend_throttle_timer_cb on read direction).
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
backends/cryptodev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/backends/cryptodev.c b/backends/cryptodev.c
index 7d29517843..5cfa25c61c 100644
--- a/backends/cryptodev.c
+++ b/backends/cryptodev.c
@@ -331,8 +331,7 @@ static void cryptodev_backend_set_throttle(CryptoDevBackend *backend, int field,
if (!enabled) {
throttle_init(&backend->ts);
throttle_timers_init(&backend->tt, qemu_get_aio_context(),
- QEMU_CLOCK_REALTIME,
- cryptodev_backend_throttle_timer_cb, /* FIXME */
+ QEMU_CLOCK_REALTIME, NULL,
cryptodev_backend_throttle_timer_cb, backend);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/5] throttle: introduce enum ThrottleType
2023-06-27 7:24 ` [PATCH v2 1/5] throttle: introduce enum ThrottleType zhenwei pi
@ 2023-07-03 10:26 ` Alberto Garcia
0 siblings, 0 replies; 12+ messages in thread
From: Alberto Garcia @ 2023-07-03 10:26 UTC (permalink / raw)
To: zhenwei pi; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
On Tue 27 Jun 2023 03:24:27 PM +08, zhenwei pi wrote:
> Use enum ThrottleType instead of number index.
>
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Berto
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/5] test-throttle: use enum ThrottleType
2023-06-27 7:24 ` [PATCH v2 2/5] test-throttle: use " zhenwei pi
@ 2023-07-03 10:26 ` Alberto Garcia
0 siblings, 0 replies; 12+ messages in thread
From: Alberto Garcia @ 2023-07-03 10:26 UTC (permalink / raw)
To: zhenwei pi; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
On Tue 27 Jun 2023 03:24:28 PM +08, zhenwei pi wrote:
> Use enum ThrottleType instead in the throttle test codes.
>
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Berto
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/5] throttle: support read-only and write-only
2023-06-27 7:24 ` [PATCH v2 3/5] throttle: support read-only and write-only zhenwei pi
@ 2023-07-03 10:28 ` Alberto Garcia
0 siblings, 0 replies; 12+ messages in thread
From: Alberto Garcia @ 2023-07-03 10:28 UTC (permalink / raw)
To: zhenwei pi; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
On Tue 27 Jun 2023 03:24:29 PM +08, zhenwei pi wrote:
> Only one direction is necessary in several scenarios:
> - a read-only disk
> - operations on a device are considered as *write* only. For example,
> encrypt/decrypt/sign/verify operations on a cryptodev use a single
> *write* timer(read timer callback is defined, but never invoked).
>
> Allow a single direction in throttle, this reduces memory, and uplayer
> does not need a dummy callback any more.
>
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Berto
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 5/5] cryptodev: use NULL throttle timer cb for read direction
2023-06-27 7:24 ` [PATCH v2 5/5] cryptodev: use NULL throttle timer cb for read direction zhenwei pi
@ 2023-07-03 10:28 ` Alberto Garcia
0 siblings, 0 replies; 12+ messages in thread
From: Alberto Garcia @ 2023-07-03 10:28 UTC (permalink / raw)
To: zhenwei pi; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
On Tue 27 Jun 2023 03:24:31 PM +08, zhenwei pi wrote:
> Operations on a crytpodev are considered as *write* only, the callback
> of read direction is never invoked. Use NULL instead of an unreachable
> path(cryptodev_backend_throttle_timer_cb on read direction).
>
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Berto
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 4/5] test-throttle: test read only and write only
2023-06-27 7:24 ` [PATCH v2 4/5] test-throttle: test read only and write only zhenwei pi
@ 2023-07-03 10:31 ` Alberto Garcia
0 siblings, 0 replies; 12+ messages in thread
From: Alberto Garcia @ 2023-07-03 10:31 UTC (permalink / raw)
To: zhenwei pi; +Cc: arei.gonglei, qemu-devel, qemu-block, berrange, zhenwei pi
On Tue 27 Jun 2023 03:24:30 PM +08, zhenwei pi wrote:
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Berto
^ permalink raw reply [flat|nested] 12+ messages in thread
* PING: [PATCH v2 0/5] Misc fixes for throttle
2023-06-27 7:24 [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
` (4 preceding siblings ...)
2023-06-27 7:24 ` [PATCH v2 5/5] cryptodev: use NULL throttle timer cb for read direction zhenwei pi
@ 2023-07-11 0:29 ` zhenwei pi
5 siblings, 0 replies; 12+ messages in thread
From: zhenwei pi @ 2023-07-11 0:29 UTC (permalink / raw)
To: berto, qemu-devel; +Cc: arei.gonglei, qemu-block, berrange
Hi,
This series has been reviewed by Alberto, can someone review / merge this?
On 6/27/23 15:24, zhenwei pi wrote:
> v1 -> v2:
> - rename 'ThrottleTimerType' to 'ThrottleType'
> - add assertion to throttle_schedule_timer
>
> Something remained:
> - 'bool is_write' is no longer appropriate, the related functions
> need to use 'ThrottleType throttle' instead. To avoid changes from
> other subsystems in this series, do this work in a followup series
> after there patches apply.
>
>
> v1:
> - introduce enum ThrottleTimerType instead of timers[0], timer[1]...
> - support read-only and write-only for throttle
> - adapt related test codes
> - cryptodev uses a write-only throttle timer
>
> Zhenwei Pi (5):
> throttle: introduce enum ThrottleType
> test-throttle: use enum ThrottleType
> throttle: support read-only and write-only
> test-throttle: test read only and write only
> cryptodev: use NULL throttle timer cb for read direction
>
> backends/cryptodev.c | 3 +-
> include/qemu/throttle.h | 11 ++++--
> tests/unit/test-throttle.c | 72 ++++++++++++++++++++++++++++++++++++--
> util/throttle.c | 36 +++++++++++++------
> 4 files changed, 103 insertions(+), 19 deletions(-)
>
--
zhenwei pi
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-07-11 0:32 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-27 7:24 [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
2023-06-27 7:24 ` [PATCH v2 1/5] throttle: introduce enum ThrottleType zhenwei pi
2023-07-03 10:26 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 2/5] test-throttle: use " zhenwei pi
2023-07-03 10:26 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 3/5] throttle: support read-only and write-only zhenwei pi
2023-07-03 10:28 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 4/5] test-throttle: test read only and write only zhenwei pi
2023-07-03 10:31 ` Alberto Garcia
2023-06-27 7:24 ` [PATCH v2 5/5] cryptodev: use NULL throttle timer cb for read direction zhenwei pi
2023-07-03 10:28 ` Alberto Garcia
2023-07-11 0:29 ` PING: [PATCH v2 0/5] Misc fixes for throttle zhenwei pi
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.