mirror of https://github.com/digint/btrbk
btrbk: use depends callback for raw depends
parent
6373e32875
commit
c4bf7b0c5a
18
btrbk
18
btrbk
|
@ -4498,6 +4498,22 @@ sub macro_delete($$$$;@)
|
||||||
my $schedule_options = shift || die;
|
my $schedule_options = shift || die;
|
||||||
my %delete_options = @_;
|
my %delete_options = @_;
|
||||||
|
|
||||||
|
my $depends_fn = (($root_subvol->{CONFIG}{target_type} // "") eq "raw") && sub {
|
||||||
|
my $vol = shift->{value} // die;
|
||||||
|
my @ret;
|
||||||
|
if(my $related = _related_nodes($vol->{node}, omit_self => 1, fatal => 1)) {
|
||||||
|
foreach my $dep (@$related) {
|
||||||
|
TRACE "Checking parent of dependent raw target: $vol->{PRINT} <- $dep->{BTRBK_RAW}{NAME}" if($do_trace);
|
||||||
|
push @ret, grep($dep->{uuid} eq $_->{value}{node}{uuid}, @_);
|
||||||
|
}
|
||||||
|
return ("parent of preserved raw target", \@ret);
|
||||||
|
} else {
|
||||||
|
ABORTED($result_vinfo, "Failed to resolve related raw targets");
|
||||||
|
WARN "Skipping delete of \"$root_subvol->{PRINT}/$subvol_basename.*\": " . ABORTED_TEXT($result_vinfo);
|
||||||
|
return ("", []);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
my @schedule;
|
my @schedule;
|
||||||
foreach my $vol (@{vinfo_subvol_list($root_subvol, btrbk_direct_leaf => $subvol_basename)}) {
|
foreach my $vol (@{vinfo_subvol_list($root_subvol, btrbk_direct_leaf => $subvol_basename)}) {
|
||||||
push(@schedule, { value => $vol,
|
push(@schedule, { value => $vol,
|
||||||
|
@ -4510,7 +4526,9 @@ sub macro_delete($$$$;@)
|
||||||
%$schedule_options,
|
%$schedule_options,
|
||||||
schedule => \@schedule,
|
schedule => \@schedule,
|
||||||
preserve_date_in_future => 1,
|
preserve_date_in_future => 1,
|
||||||
|
depends => $depends_fn,
|
||||||
);
|
);
|
||||||
|
return undef if(IS_ABORTED($result_vinfo)); # if depends_fn fails
|
||||||
|
|
||||||
my @delete_success;
|
my @delete_success;
|
||||||
foreach my $vol (@$delete) {
|
foreach my $vol (@$delete) {
|
||||||
|
|
Loading…
Reference in New Issue