1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-02-12 21:57:27 +03:00

journal-vacuum: count size of all journal files

Currently, active journal files are excluded, which means that vacuuming
may not remove anything even if *MaxUse= has been exceeded.

(cherry picked from commit 9ea46af4f2368b41d57705bac09774778126507f)
(cherry picked from commit e4c7553874e86ada52545e26aafb318ca91e9545)
This commit is contained in:
David Tardon 2023-03-22 12:36:54 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent 7eca133c1d
commit 760059bd64

View File

@ -158,6 +158,8 @@ int journal_directory_vacuum(
if (!S_ISREG(st.st_mode))
continue;
size = 512UL * (uint64_t) st.st_blocks;
q = strlen(de->d_name);
if (endswith(de->d_name, ".journal")) {
@ -167,6 +169,7 @@ int journal_directory_vacuum(
if (q < 1 + 32 + 1 + 16 + 1 + 16 + 8) {
n_active_files++;
sum += size;
continue;
}
@ -174,6 +177,7 @@ int journal_directory_vacuum(
de->d_name[q-8-16-1-16-1] != '-' ||
de->d_name[q-8-16-1-16-1-32-1] != '@') {
n_active_files++;
sum += size;
continue;
}
@ -186,11 +190,13 @@ int journal_directory_vacuum(
de->d_name[q-8-16-1-16-1] = 0;
if (sd_id128_from_string(de->d_name + q-8-16-1-16-1-32, &seqnum_id) < 0) {
n_active_files++;
sum += size;
continue;
}
if (sscanf(de->d_name + q-8-16-1-16, "%16llx-%16llx.journal", &seqnum, &realtime) != 2) {
n_active_files++;
sum += size;
continue;
}
@ -206,12 +212,14 @@ int journal_directory_vacuum(
if (q < 1 + 16 + 1 + 16 + 8 + 1) {
n_active_files++;
sum += size;
continue;
}
if (de->d_name[q-1-8-16-1] != '-' ||
de->d_name[q-1-8-16-1-16-1] != '@') {
n_active_files++;
sum += size;
continue;
}
@ -223,6 +231,7 @@ int journal_directory_vacuum(
if (sscanf(de->d_name + q-1-8-16-1-16, "%16llx-%16llx.journal~", &realtime, &tmp) != 2) {
n_active_files++;
sum += size;
continue;
}
@ -233,8 +242,6 @@ int journal_directory_vacuum(
continue;
}
size = 512UL * (uint64_t) st.st_blocks;
r = journal_file_empty(dirfd(d), p);
if (r < 0) {
log_debug_errno(r, "Failed check if %s is empty, ignoring: %m", p);