From: Vladimir Davydov <vdavydov.dev@gmail.com> To: kostja@tarantool.org Cc: tarantool-patches@freelists.org Subject: [PATCH 04/13] gc: use fixed length buffer for storing consumer name Date: Thu, 4 Oct 2018 20:20:06 +0300 [thread overview] Message-ID: <ad34ac9280ad69896c5c9982a11c70790ba00fb3.1538671546.git.vdavydov.dev@gmail.com> (raw) In-Reply-To: <cover.1538671546.git.vdavydov.dev@gmail.com> In-Reply-To: <cover.1538671546.git.vdavydov.dev@gmail.com> The length of a consumer name never exceeds 64 characters so no use to allocate a string. This is a mere code simplification. --- src/box/gc.c | 11 ++--------- src/box/gc.h | 4 +++- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/box/gc.c b/src/box/gc.c index a45806b6..7de50e84 100644 --- a/src/box/gc.c +++ b/src/box/gc.c @@ -34,7 +34,7 @@ #include <stdint.h> #include <stdlib.h> -#include <string.h> +#include <stdio.h> #define RB_COMPACT 1 #include <small/rb.h> @@ -82,13 +82,7 @@ gc_consumer_new(const char *name, const struct vclock *vclock, "malloc", "struct gc_consumer"); return NULL; } - consumer->name = strdup(name); - if (consumer->name == NULL) { - diag_set(OutOfMemory, strlen(name) + 1, - "malloc", "struct gc_consumer"); - free(consumer); - return NULL; - } + snprintf(consumer->name, GC_NAME_MAX, "%s", name); vclock_copy(&consumer->vclock, vclock); consumer->type = type; return consumer; @@ -98,7 +92,6 @@ gc_consumer_new(const char *name, const struct vclock *vclock, static void gc_consumer_delete(struct gc_consumer *consumer) { - free(consumer->name); TRASH(consumer); free(consumer); } diff --git a/src/box/gc.h b/src/box/gc.h index 2c03770d..fde4facf 100644 --- a/src/box/gc.h +++ b/src/box/gc.h @@ -42,6 +42,8 @@ extern "C" { struct gc_consumer; +enum { GC_NAME_MAX = 64 }; + /** Consumer type: WAL consumer, or SNAP */ enum gc_consumer_type { GC_CONSUMER_WAL = 1, @@ -59,7 +61,7 @@ struct gc_consumer { /** Link in gc_state::consumers. */ gc_node_t node; /** Human-readable name. */ - char *name; + char name[GC_NAME_MAX]; /** The vclock tracked by this consumer. */ struct vclock vclock; /** Consumer type, indicating that consumer only consumes -- 2.11.0
next prev parent reply other threads:[~2018-10-04 17:20 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-10-04 17:20 [PATCH 00/13] box: garbage collection refactoring and fixes Vladimir Davydov 2018-10-04 17:20 ` [PATCH 01/13] vinyl: fix master crash on replica join failure Vladimir Davydov 2018-10-04 21:43 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 02/13] vinyl: force deletion of runs left from unfinished indexes on restart Vladimir Davydov 2018-10-04 21:44 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 03/13] gc: make gc_consumer and gc_state structs transparent Vladimir Davydov 2018-10-04 21:47 ` Konstantin Osipov 2018-10-04 17:20 ` Vladimir Davydov [this message] 2018-10-04 21:47 ` [PATCH 04/13] gc: use fixed length buffer for storing consumer name Konstantin Osipov 2018-10-04 17:20 ` [PATCH 05/13] gc: fold gc_consumer_new and gc_consumer_delete Vladimir Davydov 2018-10-04 21:50 ` Konstantin Osipov 2018-10-05 8:56 ` Vladimir Davydov 2018-10-04 17:20 ` [PATCH 06/13] gc: format consumer name in gc_consumer_register Vladimir Davydov 2018-10-04 21:50 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 07/13] gc: rename checkpoint_count to min_checkpoint_count Vladimir Davydov 2018-10-04 21:51 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 08/13] gc: keep track of available checkpoints Vladimir Davydov 2018-10-04 21:59 ` Konstantin Osipov 2018-10-05 8:50 ` Vladimir Davydov 2018-10-04 17:20 ` [PATCH 09/13] gc: cleanup garbage collection procedure Vladimir Davydov 2018-10-04 22:00 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 10/13] gc: improve box.info.gc output Vladimir Davydov 2018-10-04 22:01 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 11/13] gc: separate checkpoint references from wal consumers Vladimir Davydov 2018-10-04 22:05 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 12/13] gc: call gc_run unconditionally when consumer is advanced Vladimir Davydov 2018-10-04 22:26 ` Konstantin Osipov 2018-10-04 17:20 ` [PATCH 13/13] replication: ref checkpoint needed to join replica Vladimir Davydov 2018-10-04 22:27 ` Konstantin Osipov 2018-10-05 17:03 ` [PATCH 00/13] box: garbage collection refactoring and fixes Vladimir Davydov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=ad34ac9280ad69896c5c9982a11c70790ba00fb3.1538671546.git.vdavydov.dev@gmail.com \ --to=vdavydov.dev@gmail.com \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [PATCH 04/13] gc: use fixed length buffer for storing consumer name' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox