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

openSUSE Build Service is sponsored by