File util-linux-libuuid-improve-cache-handling.patch of Package util-linux.33155

From 104dc2e092058489a4be17d5b15902e58ca56804 Mon Sep 17 00:00:00 2001
From: d032747 <michael.trapp@sap.com>
Date: Fri, 22 Apr 2022 10:07:46 +0200
Subject: [PATCH 2/4] libuuid: improve cache handling

Short running applications with a few UUID request don't need
a large cache. Therefore increment the cache size over runtime.
---
 libuuid/src/gen_uuid.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c
index 76d5371ea..805b40d90 100644
--- a/libuuid/src/gen_uuid.c
+++ b/libuuid/src/gen_uuid.c
@@ -443,6 +443,7 @@ int __uuid_generate_time(uuid_t out, int *num)
 static int uuid_generate_time_generic(uuid_t out) {
 #ifdef HAVE_TLS
 	THREAD_LOCAL int		num = 0;
+	THREAD_LOCAL int		cache_size = 1;
 	THREAD_LOCAL struct uuid	uu;
 	THREAD_LOCAL time_t		last_time = 0;
 	time_t				now;
@@ -453,7 +454,15 @@ static int uuid_generate_time_generic(uuid_t out) {
 			num = 0;
 	}
 	if (num <= 0) {
-		num = 1000000;
+		/*
+		 * num + OP_BULK provides a local cache in each application.
+		 * Start with a small cache size to cover short running applications
+		 * and increment the cache size over the runntime.
+		 */
+		if (cache_size < 1000000)
+			cache_size *= 10;
+		num = cache_size;
+
 		if (get_uuid_via_daemon(UUIDD_OP_BULK_TIME_UUID,
 					out, &num) == 0) {
 			last_time = time(NULL);
-- 
2.37.1

openSUSE Build Service is sponsored by