Fix progress total to use cgen instead of gen for detecting snapshot differences.

pull/547/head
Korbinian Pöppel 2026-07-28 16:20:57 +02:00
parent 997decd04d
commit 7eb92b73eb
1 changed files with 15 additions and 10 deletions

25
btrbk
View File

@ -5237,15 +5237,18 @@ sub sub_diff($$) {
return 0; return 0;
} }
# NOTE: in some cases "cgen" differs from "gen", even for read-only snapshots (observed: gen=cgen+1) # Use the snapshot creation generation as the stable boundary. The
my $lastgen = $src_vol->{node}{gen} + 1; # reported "gen" can change after snapshot creation (and can even be the
# same for several read-only snapshots), which would make find-new return
# an empty result and disable --progress-total.
my $lastgen = $src_vol->{node}{cgen} + 1;
# dump files, sorted and unique # dump files, sorted and unique
my $ret = btrfs_subvolume_find_new($target_vol, $lastgen); my $ret = btrfs_subvolume_find_new($target_vol, $lastgen);
INFO "Listing changed files for subvolume: $target_vol->{PRINT} (gen=$target_vol->{node}{gen})"; INFO "Listing changed files for subvolume: $target_vol->{PRINT} (cgen=$target_vol->{node}{cgen})";
INFO "Starting at generation after subvolume: $src_vol->{PRINT} (gen=$src_vol->{node}{gen})"; INFO "Starting at generation after subvolume: $src_vol->{PRINT} (cgen=$src_vol->{node}{cgen})";
INFO "Listing files modified within generation range: [$lastgen..$target_vol->{node}{gen}]"; INFO "Listing files modified within generation range: [$lastgen..$target_vol->{node}{cgen}]";
DEBUG "Newest file generation (transid marker) was: $ret->{transid_marker}"; DEBUG "Newest file generation (transid marker) was: $ret->{transid_marker}";
my $files = $ret->{files}; my $files = $ret->{files};
my $total_len = 0; my $total_len = 0;
@ -5628,16 +5631,18 @@ MAIN:
my $src_vol = $subvol_args[0]; my $src_vol = $subvol_args[0];
my $target_vol = $subvol_args[1]; my $target_vol = $subvol_args[1];
# NOTE: in some cases "cgen" differs from "gen", even for read-only snapshots (observed: gen=cgen+1) # Use the snapshot creation generation as the stable boundary. The
my $lastgen = $src_vol->{node}{gen} + 1; # reported "gen" can change after snapshot creation (and can even be the
# same for several read-only snapshots).
my $lastgen = $src_vol->{node}{cgen} + 1;
# dump files, sorted and unique # dump files, sorted and unique
my $ret = btrfs_subvolume_find_new($target_vol, $lastgen); my $ret = btrfs_subvolume_find_new($target_vol, $lastgen);
exit 1 unless(ref($ret)); exit 1 unless(ref($ret));
INFO "Listing changed files for subvolume: $target_vol->{PRINT} (gen=$target_vol->{node}{gen})"; INFO "Listing changed files for subvolume: $target_vol->{PRINT} (cgen=$target_vol->{node}{cgen})";
INFO "Starting at generation after subvolume: $src_vol->{PRINT} (gen=$src_vol->{node}{gen})"; INFO "Starting at generation after subvolume: $src_vol->{PRINT} (cgen=$src_vol->{node}{cgen})";
INFO "Listing files modified within generation range: [$lastgen..$target_vol->{node}{gen}]"; INFO "Listing files modified within generation range: [$lastgen..$target_vol->{node}{cgen}]";
DEBUG "Newest file generation (transid marker) was: $ret->{transid_marker}"; DEBUG "Newest file generation (transid marker) was: $ret->{transid_marker}";
my $files = $ret->{files}; my $files = $ret->{files};