From 51307fe7a69e48497310cd8a8c80665d37577f92 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Mon, 3 Sep 2012 11:29:41 +0200 Subject: [PATCH] marsadm: log-delete-all left-over version symlinks (ITOPWPT-241) --- userspace/marsadm | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/userspace/marsadm b/userspace/marsadm index 7fdafef1..40235e5e 100644 --- a/userspace/marsadm +++ b/userspace/marsadm @@ -602,27 +602,30 @@ sub logdelete_res { my $check_max = $max - 1; $check_max = 0 if $check_max < 0; check_splitbrain($res, "", $check_max) if ($cmd eq "log-delete-all" && !$force); - my $nr; - do { + my $nr = 0; + for (;;) { my $first = shift(@paths); last unless $first; - print "chosen '$first' for deletion\n"; $nr = $first; $nr =~ s/^.*log-([0-9]+)-.+$/$1/; - die "only logfile sequence numbers truly smaller than $max are allowed to be deleted\n" unless $nr < $max; + last unless $nr < $max; + + print "chosen '$first' for deletion\n"; # is there any splitbrain up to $nr? check_splitbrain($res, "", $nr) unless $cmd eq "log-delete-all"; _create_delete($first); - if($nr > 1) { - foreach my $peer (get_peers($res)) { - my $versionlink = sprintf("$mars/resource-$res/version-%09d-$peer", $nr - 1); - _create_delete($versionlink); - } - } - } while($cmd eq "log-delete-all" && $nr + 1 < $max); + last unless $cmd eq "log-delete-all" && $nr + 1 < $max; + } + print "removing left-over version symlinks...\n"; + foreach my $versionlink (glob("$mars/resource-$res/version-*")) { + my $nrv = $versionlink; + $nrv =~ s/^.*\/version-([0-9]+)-.+$/$1/; + next unless $nrv < $nr; + _create_delete($versionlink); + } } sub attach_res {