From 20b9aceb19a22f49c5f1ff4b4fbd7d36d7992b91 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Sun, 7 Nov 2021 15:08:32 +0100 Subject: [PATCH 273/325] sys/geom/eli: If the thread name will be truncated, use the last characters instead of the first ones Obtained from: ElectroBSD --- sys/geom/eli/g_eli.c | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c index 1d4cc14c9f7d..e08812575693 100644 --- a/sys/geom/eli/g_eli.c +++ b/sys/geom/eli/g_eli.c @@ -786,7 +786,9 @@ g_eli_create(struct gctl_req *req, struct g_class *mp, struct g_provider *bpp, struct g_geom *gp; struct g_provider *pp; struct g_consumer *cp; - u_int i, threads; + struct thread dummy_thread; + u_int i, threads, name_offset; + size_t name_len, name_space_available; int dcw, error; G_ELI_DEBUG(1, "Creating device %s%s.", bpp->name, G_ELI_SUFFIX); @@ -888,13 +890,36 @@ g_eli_create(struct gctl_req *req, struct g_class *mp, struct g_provider *bpp, } goto failed; } - /* Only include the thread number if there's more than one */ + name_len = strlen(bpp->name); + name_space_available = sizeof(dummy_thread.td_name) - 1 - + strlen("g_eli"); + if (threads != 1) { + /* + * XXX: Assumes the number of threads + * fits a single digit + */ + name_space_available -= strlen("[0]"); + } + if (name_len < name_space_available) + name_offset = 0; + else + name_offset = name_len - name_space_available + 1; + + G_ELI_DEBUG(1, "geli threads for %s: %d, name_len: %d, " + "name_space_available: %d, name_offset: %d ", + bpp->name, threads, (int)name_len, + (int)name_space_available, name_offset); + + /* + * Only include the thread number if there's more + * than one thread. + */ if (threads == 1) { - error = kproc_create(g_eli_worker, wr, &wr->w_proc, 0, 0, - "g_eli %s", bpp->name); + error = kproc_create(g_eli_worker, wr, &wr->w_proc, + 0, 0, "g_eli %s", &bpp->name[name_offset]); } else { - error = kproc_create(g_eli_worker, wr, &wr->w_proc, 0, 0, - "g_eli[%u] %s", i, bpp->name); + error = kproc_create(g_eli_worker, wr, &wr->w_proc, + 0, 0, "g_eli[%u] %s", i, &bpp->name[name_offset]); } if (error != 0) { g_eli_freesession(wr); -- 2.32.0