File 1285-Allow-changing-wrap-disk_log-size-multiple-times.patch of Package erlang
From 0b51f01e92a0554b38065698e09f8479e6b9e11a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20W=C4=85sowski?= <michal@erlang.org>
Date: Fri, 25 Apr 2025 18:17:24 +0200
Subject: [PATCH 1/2] Allow changing wrap disk_log size multiple times
---
lib/kernel/src/disk_log_1.erl | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/lib/kernel/src/disk_log_1.erl b/lib/kernel/src/disk_log_1.erl
index a488a44dcc..b2411f0257 100644
--- a/lib/kernel/src/disk_log_1.erl
+++ b/lib/kernel/src/disk_log_1.erl
@@ -971,13 +971,14 @@ mf_ext_close(#handle{filename = FName, curF = CurF,
change_size_wrap(Handle, {NewMaxB, NewMaxF}, Version) ->
FName = Handle#handle.filename,
{_MaxB, MaxF} = get_wrap_size(Handle),
+ BiggerMaxF = lists:max([MaxF, get_old_max_f(Handle#handle.maxF)]),
write_size_file(read_write, FName, NewMaxB, NewMaxF, Version),
if
- NewMaxF > MaxF ->
+ NewMaxF > BiggerMaxF ->
remove_files(FName, MaxF + 1, NewMaxF),
{ok, Handle#handle{maxB = NewMaxB, maxF = NewMaxF}};
- NewMaxF < MaxF ->
- {ok, Handle#handle{maxB = NewMaxB, maxF = {NewMaxF, MaxF}}};
+ NewMaxF < BiggerMaxF ->
+ {ok, Handle#handle{maxB = NewMaxB, maxF = {NewMaxF, BiggerMaxF}}};
true ->
{ok, Handle#handle{maxB = NewMaxB, maxF = NewMaxF}}
end.
@@ -1594,3 +1595,8 @@ file_error(FileName, {error, Error}) ->
file_error_close(Fd, FileName, {error, Error}) ->
_ = file:close(Fd),
throw({error, {file_error, FileName, Error}}).
+
+get_old_max_f({_, OldMaxF}) ->
+ OldMaxF;
+get_old_max_f(MaxF) ->
+ MaxF.
--
2.43.0