1
0
forked from pool/util-linux

Accepting request 1127321 from home:goldwynr:branches:Base:System

bsc#1207987 - libuuid fix xfs regression for clocks.txt

OBS-URL: https://build.opensuse.org/request/show/1127321
OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=536
This commit is contained in:
Jan Engelhardt 2023-11-17 14:13:03 +00:00 committed by Git OBS Bridge
parent 784cf57436
commit b8470c9443
2 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,51 @@
From 1d98827edde4b88068d295bbd20c31333b2ad5d4 Mon Sep 17 00:00:00 2001
From: Goldwyn Rodrigues <rgoldwyn@suse.de>
Date: Tue, 10 Oct 2023 18:08:59 -0500
Subject: [PATCH] libuuid: avoid truncate clocks.txt to improve performance
Instead of explicitly truncating clocks.txt file, pad with
whitespaces in the end of file.
This is done to improve performance of libuuid on xfs
filesystems. Instead of truncating the file, pad it with whitespaces.
This is anyways used as a failsafe method in case truncate fails.
The reason why this regression was introduced was because of:
869ae85dae64 ("xfs: flush new eof page on truncate to avoid post-eof corruption")
An attempt to move the clocks.txt to /run (tmpfs) has been attempted before
[1] and with commit ab2e7dd17 ("libuuid: move clock state file from
/var/lib to /var/run"). The latter was reverted.
[1] https://www.spinics.net/lists/util-linux-ng/msg17331.html
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c
index db793c374..826cd2245 100644
--- a/libuuid/src/gen_uuid.c
+++ b/libuuid/src/gen_uuid.c
@@ -229,7 +229,6 @@ static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
struct timeval tv;
uint64_t clock_reg;
mode_t save_umask;
- int len;
int ret = 0;
if (state_fd == -1)
@@ -324,14 +323,10 @@ try_again:
if (state_fd >= 0) {
rewind(state_f);
- len = fprintf(state_f,
- "clock: %04x tv: %016ld %08ld adj: %08d\n",
+ fprintf(state_f,
+ "clock: %04x tv: %016ld %08ld adj: %08d \n",
clock_seq, (long)last.tv_sec, (long)last.tv_usec, adjustment);
fflush(state_f);
- if (ftruncate(state_fd, len) < 0) {
- fprintf(state_f, " \n");
- fflush(state_f);
- }
rewind(state_f);
flock(state_fd, LOCK_UN);
}

View File

@ -112,6 +112,8 @@ Patch4: 0001-Revert-libblkid-try-LUKS2-first-when-probing.patch
Patch5: util-linux-fix-tests-with-64k-pagesize.patch
Patch6: use-logind-not-utmp.patch
Patch7: setterm-resize-uninit-flags.patch
# bsc#1207987 - regression fix for clock.txt on xfs (upstreamed)
Patch8: libuuid-avoid-truncate-clocks.txt-to-improve-performance.patch
BuildRequires: audit-devel
BuildRequires: bc