[Tarantool-patches] [PATCH 1/3] wal: sanitize wal_mode

Serge Petrenko sergepetrenko at tarantool.org
Sun Apr 25 11:08:25 MSK 2021



24.04.2021 00:17, Cyrill Gorcunov via Tarantool-patches пишет:
> On Fri, Apr 23, 2021 at 10:57:11PM +0200, Vladislav Shpilevoy wrote:
>> Hi! Thanks for the patch!
>>
>>> diff --git a/src/box/wal.h b/src/box/wal.h
>>> index a8a16ba2e..470aa1cc8 100644
>>> --- a/src/box/wal.h
>>> +++ b/src/box/wal.h
>>> @@ -41,7 +41,29 @@ struct fiber;
>>>   struct wal_writer;
>>>   struct tt_uuid;
>>>   
>>> -enum wal_mode { WAL_NONE = 0, WAL_WRITE, WAL_FSYNC, WAL_MODE_MAX };
>>> +enum wal_mode {
>>> +	/**
>>> +	 * Do not write data at all.
>>> +	 */
>>> +	WAL_NONE,
>>> +
>>> +	/**
>>> +	 * Write without waiting the data to be
>>> +	 * flushed to the storage device.
>>> +	 */
>>> +	WAL_WRITE,
>>> +
>>> +	/**
>>> +	 * Write data and wait the record to be
>>> +	 * flushed to the storage device.
>>> +	 */
>>> +	WAL_FSYNC,
>>> +
>>> +	WAL_MODE_MAX
>>> +};
>>> +
>>> +/** String constants for the supported modes. */
>>> +extern const char *wal_mode_STRS[WAL_MODE_MAX];
>> 1. Why do you need to declare in the header the array size?
>> The old version with [] was just fine. And less places to change
>> if becomes necessary.
> If the size is known better to point it explicitly. Thus when you
> read this code you will notise the array size (yes, it doesn't
> matter from compiler pov if we declare it as a double pointer
> but still). But fine I'll leave this declaration untouched.
>
>> 2. Please, keep the global variable where it was. We usually group
>> global variable declarations. It was grouped with wal_dir_lock
>> below.
> ---
> From: Cyrill Gorcunov <gorcunov at gmail.com>
> Date: Fri, 16 Apr 2021 15:54:52 +0300
> Subject: [PATCH] wal: sanitize wal_mode
>
>   - there is no need to set WAN_NONE to 0 explicitly
>   - add comments about modes
>   - there is no need to carry NULL in wal_mode_STRS
>   - use designated assignment in wal_mode_STRS
>
> Signed-off-by: Cyrill Gorcunov <gorcunov at gmail.com>
> ---
>   src/box/wal.c |  6 +++++-
>   src/box/wal.h | 21 ++++++++++++++++++++-
>   2 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/src/box/wal.c b/src/box/wal.c
> index 5b6200b81..6468df884 100644
> --- a/src/box/wal.c
> +++ b/src/box/wal.c
> @@ -55,7 +55,11 @@ enum {
>   	WAL_FALLOCATE_LEN = 1024 * 1024,
>   };
>   
> -const char *wal_mode_STRS[] = { "none", "write", "fsync", NULL };
> +const char *wal_mode_STRS[WAL_MODE_MAX] = {
> +	[WAL_NONE]	= "none",
> +	[WAL_WRITE]	= "write",
> +	[WAL_FSYNC]	= "fsync",
> +};
>   
>   int wal_dir_lock = -1;
>   
> diff --git a/src/box/wal.h b/src/box/wal.h
> index a8a16ba2e..36fcd39bd 100644
> --- a/src/box/wal.h
> +++ b/src/box/wal.h
> @@ -41,7 +41,26 @@ struct fiber;
>   struct wal_writer;
>   struct tt_uuid;
>   
> -enum wal_mode { WAL_NONE = 0, WAL_WRITE, WAL_FSYNC, WAL_MODE_MAX };
> +enum wal_mode {
> +	/**
> +	 * Do not write data at all.
> +	 */
> +	WAL_NONE,
> +
> +	/**
> +	 * Write without waiting the data to be
> +	 * flushed to the storage device.
> +	 */
> +	WAL_WRITE,
> +
> +	/**
> +	 * Write data and wait the record to be
> +	 * flushed to the storage device.
> +	 */
> +	WAL_FSYNC,
> +
> +	WAL_MODE_MAX
> +};
>   

Thanks for the patch!

I'd leave an explicit WAL_NONE = 0.
I didn't know that enums start at zero, TBH.
This would be more readable IMO.

Up to you.

>   enum {
>   	/**

-- 
Serge Petrenko



More information about the Tarantool-patches mailing list