mirror of https://github.com/digint/btrbk
btrbk: bugfix: correctly list snapshots with no targets for "resolve snapshots" command; cosmetics
parent
9af3344676
commit
288e9e73c8
37
btrbk
37
btrbk
|
@ -2840,26 +2840,26 @@ MAIN:
|
||||||
my $svol = $config_subvol->{svol} || die;
|
my $svol = $config_subvol->{svol} || die;
|
||||||
my $snapshot_name = config_key($config_subvol, "snapshot_name") // die;
|
my $snapshot_name = config_key($config_subvol, "snapshot_name") // die;
|
||||||
foreach my $snapshot (sort { $a->{cgen} cmp $b->{cgen} } get_snapshot_children($sroot, $svol)) {
|
foreach my $snapshot (sort { $a->{cgen} cmp $b->{cgen} } get_snapshot_children($sroot, $svol)) {
|
||||||
my $raw_data = { type => "snapshot",
|
my $snapshot_data = { type => "snapshot",
|
||||||
status => ($snapshot->{cgen} == $svol->{gen}) ? "up-to-date" : undef,
|
status => ($snapshot->{cgen} == $svol->{gen}) ? "up-to-date" : undef,
|
||||||
vinfo_prefixed_keys("source", $svol),
|
vinfo_prefixed_keys("source", $svol),
|
||||||
vinfo_prefixed_keys("snapshot", $snapshot),
|
vinfo_prefixed_keys("snapshot", $snapshot),
|
||||||
snapshot_name => $snapshot_name,
|
snapshot_name => $snapshot_name,
|
||||||
};
|
};
|
||||||
my $found = 0;
|
my $found = 0;
|
||||||
foreach my $config_target (@{$config_subvol->{TARGET}}) {
|
foreach my $config_target (@{$config_subvol->{TARGET}}) {
|
||||||
next if($config_target->{ABORTED});
|
next if($config_target->{ABORTED});
|
||||||
my $droot = $config_target->{droot} || die;
|
my $droot = $config_target->{droot} || die;
|
||||||
$droot_compat{$droot->{URL}} = 1 if($droot->{BTRFS_PROGS_COMPAT});
|
$droot_compat{$droot->{URL}} = 1 if($droot->{BTRFS_PROGS_COMPAT});
|
||||||
foreach (sort { $a->{SUBVOL_PATH} cmp $b->{SUBVOL_PATH} } get_receive_targets($droot, $snapshot)) {
|
foreach (sort { $a->{SUBVOL_PATH} cmp $b->{SUBVOL_PATH} } get_receive_targets($droot, $snapshot)) {
|
||||||
push @data, { %$raw_data,
|
push @data, { %$snapshot_data,
|
||||||
type => "received",
|
type => "received",
|
||||||
vinfo_prefixed_keys("target", $_),
|
vinfo_prefixed_keys("target", $_),
|
||||||
};
|
};
|
||||||
$found = 1;
|
$found = 1;
|
||||||
}
|
}
|
||||||
push @data, $raw_data unless($found);
|
|
||||||
}
|
}
|
||||||
|
push @data, $snapshot_data unless($found);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2876,13 +2876,14 @@ MAIN:
|
||||||
next if($config_subvol->{ABORTED});
|
next if($config_subvol->{ABORTED});
|
||||||
my $svol = $config_subvol->{svol} || die;
|
my $svol = $config_subvol->{svol} || die;
|
||||||
my $snapshot_name = config_key($config_subvol, "snapshot_name") // die;
|
my $snapshot_name = config_key($config_subvol, "snapshot_name") // die;
|
||||||
|
my @snapshot_children = get_snapshot_children($sroot, $svol);
|
||||||
foreach my $config_target (@{$config_subvol->{TARGET}}) {
|
foreach my $config_target (@{$config_subvol->{TARGET}}) {
|
||||||
next if($config_target->{ABORTED});
|
next if($config_target->{ABORTED});
|
||||||
my $droot = $config_target->{droot} || die;
|
my $droot = $config_target->{droot} || die;
|
||||||
$droot_compat{$droot->{URL}} = 1 if($droot->{BTRFS_PROGS_COMPAT});
|
$droot_compat{$droot->{URL}} = 1 if($droot->{BTRFS_PROGS_COMPAT});
|
||||||
foreach my $target_vol (sort { $a->{SUBVOL_PATH} cmp $b->{SUBVOL_PATH} } values %{vinfo_subvol_list($droot)}) {
|
foreach my $target_vol (sort { $a->{SUBVOL_PATH} cmp $b->{SUBVOL_PATH} } values %{vinfo_subvol_list($droot)}) {
|
||||||
my $parent_snapshot;
|
my $parent_snapshot;
|
||||||
foreach (get_snapshot_children($sroot, $svol)) {
|
foreach (@snapshot_children) {
|
||||||
if($droot->{BTRFS_PROGS_COMPAT}) {
|
if($droot->{BTRFS_PROGS_COMPAT}) {
|
||||||
if($_->{NAME} eq $target_vol->{NAME}) {
|
if($_->{NAME} eq $target_vol->{NAME}) {
|
||||||
$parent_snapshot = $_;
|
$parent_snapshot = $_;
|
||||||
|
@ -2939,21 +2940,21 @@ MAIN:
|
||||||
my ($latest_common_src, $latest_common_target) = get_latest_common($sroot, $svol, $droot);
|
my ($latest_common_src, $latest_common_target) = get_latest_common($sroot, $svol, $droot);
|
||||||
if ($latest_common_src && $latest_common_target) {
|
if ($latest_common_src && $latest_common_target) {
|
||||||
push @data, { type => "latest_common",
|
push @data, { type => "latest_common",
|
||||||
status => ($latest_common_src->{cgen} == $svol->{gen}) ? "up-to-date" : undef,
|
status => ($latest_common_src->{cgen} == $svol->{gen}) ? "up-to-date" : undef,
|
||||||
vinfo_prefixed_keys("source", $svol),
|
vinfo_prefixed_keys("source", $svol),
|
||||||
vinfo_prefixed_keys("snapshot", $latest_common_src),
|
vinfo_prefixed_keys("snapshot", $latest_common_src),
|
||||||
vinfo_prefixed_keys("target", $latest_common_target),
|
vinfo_prefixed_keys("target", $latest_common_target),
|
||||||
};
|
};
|
||||||
$found = 1;
|
$found = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unless($found) {
|
unless($found) {
|
||||||
my $latest_snapshot = get_latest_snapshot_child($sroot, $svol);
|
my $latest_snapshot = get_latest_snapshot_child($sroot, $svol);
|
||||||
push @data, { type => "latest_snapshot",
|
push @data, { type => "latest_snapshot",
|
||||||
status => ($latest_snapshot->{cgen} == $svol->{gen}) ? "up-to-date" : undef,
|
status => ($latest_snapshot->{cgen} == $svol->{gen}) ? "up-to-date" : undef,
|
||||||
vinfo_prefixed_keys("source", $svol),
|
vinfo_prefixed_keys("source", $svol),
|
||||||
vinfo_prefixed_keys("snapshot", $latest_snapshot), # all unset if no $latest_snapshot
|
vinfo_prefixed_keys("snapshot", $latest_snapshot), # all unset if no $latest_snapshot
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue