[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH RFC v3 1/8] block: move ThrottleGroup membership
From: |
Alberto Garcia |
Subject: |
Re: [Qemu-block] [PATCH RFC v3 1/8] block: move ThrottleGroup membership to ThrottleGroupMember |
Date: |
Tue, 27 Jun 2017 14:08:54 +0200 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu) |
On Fri 23 Jun 2017 02:46:53 PM CEST, Manos Pitsidianakis wrote:
> This commit gathers ThrottleGroup membership details from
> BlockBackendPublic into ThrottleGroupMember and refactors existing code
> to use the structure.
>
> Signed-off-by: Manos Pitsidianakis <address@hidden>
Hey Manos, thanks for the patch. It looks good to me in general, I only
have a couple of comments:
> /* If no IO are queued for scheduling on the next round robin token
> - * then decide the token is the current bs because chances are
> - * the current bs get the current request queued.
> + * then decide the token is the current tgm because chances are
> + * the current tgm get the current request queued.
I wonder if it's not better to use 'member' instead of 'tgm' in general.
My impression is that the former is clearer and not too long, but I
don't have a very strong opinion so you can keep it like this if you
want.
> -/* Check if an I/O request needs to be throttled, wait and set a timer
> - * if necessary, and schedule the next request using a round robin
> - * algorithm.
> +/* Check if an I/O request needs to be throttled, wait and set a timer if
> + * necessary, and schedule the next request using a round robin algorithm.
> *
There's a few cases like this when you reformat a paragraph but don't
actually change the text. I think it just adds unnecessary noise to the
diff...
> --- a/include/qemu/throttle.h
> +++ b/include/qemu/throttle.h
> @@ -27,6 +27,7 @@
>
> #include "qemu-common.h"
> #include "qemu/timer.h"
> +#include "qemu/coroutine.h"
>
> #define THROTTLE_VALUE_MAX 1000000000000000LL
>
> @@ -153,4 +154,29 @@ bool throttle_schedule_timer(ThrottleState *ts,
>
> void throttle_account(ThrottleState *ts, bool is_write, uint64_t size);
>
> +
> +/* The ThrottleGroupMember structure indicates membership in a ThrottleGroup
> + * and holds related data.
> + */
> +
> +typedef struct ThrottleGroupMember {
> + /* throttled_reqs_lock protects the CoQueues for throttled requests. */
> + CoMutex throttled_reqs_lock;
> + CoQueue throttled_reqs[2];
> +
> + /* Nonzero if the I/O limits are currently being ignored; generally
> + * it is zero. Accessed with atomic operations.
> + */
> + unsigned int io_limits_disabled;
> +
> + /* The following fields are protected by the ThrottleGroup lock.
> + * See the ThrottleGroup documentation for details.
> + * throttle_state tells us if I/O limits are configured. */
> + ThrottleState *throttle_state;
> + ThrottleTimers throttle_timers;
> + unsigned pending_reqs[2];
> + QLIST_ENTRY(ThrottleGroupMember) round_robin;
> +
> +} ThrottleGroupMember;
> +
Any reason why you add this to throttle.h (which is generic throttling
code independent from the block layer) and not to throttle-groups.h?
Otherwise it all looks good to me, thanks!
Berto
- Re: [Qemu-block] [PATCH RFC v3 3/8] block: add throttle block filter driver, (continued)
Re: [Qemu-block] [PATCH RFC v3 3/8] block: add throttle block filter driver, Stefan Hajnoczi, 2017/06/26
Re: [Qemu-block] [PATCH RFC v3 3/8] block: add throttle block filter driver, Kevin Wolf, 2017/06/28
[Qemu-block] [PATCH RFC v3 1/8] block: move ThrottleGroup membership to ThrottleGroupMember, Manos Pitsidianakis, 2017/06/23
Re: [Qemu-block] [PATCH RFC v3 0/8] I/O Throtting block filter driver, Stefan Hajnoczi, 2017/06/26