diff --git a/btrbk b/btrbk index 990cc13..4ae890f 100755 --- a/btrbk +++ b/btrbk @@ -5497,30 +5497,28 @@ MAIN: } # check for duplicate snapshot locations - my %snapshot_check; - my %backup_check; foreach my $sroot (vinfo_subsection($config, 'volume')) { foreach my $svol (vinfo_subsection($sroot, 'subvolume')) { # check for duplicate snapshot locations my $snaproot = vinfo_snapshot_root($svol); my $snapshot_basename = config_key($svol, "snapshot_name") // die; - my $snapshot_target = $sroot->{URL_PREFIX} . ($realpath_cache{$snaproot->{URL}} // $snaproot->{PATH}) . '/' . $snapshot_basename; - if(my $prev = $snapshot_check{$snapshot_target}) { - ERROR "Subvolume \"$prev\" and \"$svol->{PRINT}\" will create same snapshot: ${snapshot_target}.*"; + my $snaproot_subdir_path = (defined($snaproot->{NODE_SUBDIR}) ? $snaproot->{NODE_SUBDIR} . '/' : "") . $snapshot_basename; + if(my $prev = $snaproot->{node}->{_SNAPSHOT_CHECK}->{$snaproot_subdir_path}) { + ERROR "Subvolume \"$prev\" and \"$svol->{PRINT}\" will create same snapshot: $snaproot->{PRINT}/${snapshot_basename}.*"; ERROR "Please fix \"snapshot_name\" configuration options!"; exit 1; } - $snapshot_check{$snapshot_target} = $svol->{PRINT}; + $snaproot->{node}->{_SNAPSHOT_CHECK}->{$snaproot_subdir_path} = $svol->{PRINT}; foreach my $droot (vinfo_subsection($svol, 'target')) { # check for duplicate snapshot locations - my $snapshot_backup_target = $droot->{URL_PREFIX} . ($realpath_cache{$droot->{URL}} // $droot->{PATH}) . '/' . $snapshot_basename; - if(my $prev = $backup_check{$snapshot_backup_target}) { - ERROR "Subvolume \"$prev\" and \"$svol->{PRINT}\" will create same backup target: ${snapshot_backup_target}.*"; + my $droot_subdir_path = (defined($droot->{NODE_SUBDIR}) ? $droot->{NODE_SUBDIR} . '/' : "") . $snapshot_basename; + if(my $prev = $droot->{node}->{_BACKUP_CHECK}->{$droot_subdir_path}) { + ERROR "Subvolume \"$prev\" and \"$svol->{PRINT}\" will create same backup target: $droot->{PRINT}/${snapshot_basename}.*"; ERROR "Please fix \"snapshot_name\" or \"target\" configuration options!"; exit 1; } - $backup_check{$snapshot_backup_target} = $svol->{PRINT}; + $droot->{node}->{_BACKUP_CHECK}->{$droot_subdir_path} = $svol->{PRINT}; } } }