diff --git a/kernel/sy_old/mars_light.c b/kernel/sy_old/mars_light.c index e56397a1..6ae39969 100644 --- a/kernel/sy_old/mars_light.c +++ b/kernel/sy_old/mars_light.c @@ -3487,7 +3487,7 @@ static int prepare_delete(void *buf, struct mars_dent *dent) MARS_DBG("target '%s' deleted and marked for removal\n", dent->new_link); } else { MARS_DBG("target '%s' does no longer exist\n", dent->new_link); - if (dent->d_serial < global->deleted_border) { + if (dent->d_serial <= global->deleted_border) { MARS_DBG("removing deletion symlink '%s'\n", dent->d_path); dent->d_killme = true; mars_unlink(dent->d_path); diff --git a/userspace/marsadm b/userspace/marsadm index 9b6635ce..4c602d95 100755 --- a/userspace/marsadm +++ b/userspace/marsadm @@ -860,10 +860,19 @@ sub _create_delete { my ($target) = @_; my $nr = 0; my @paths = glob("$mars/todo-global/delete-*"); - if (@paths) { - my $last = pop(@paths); - $nr = $last; - $nr =~ s/^.*delete-([0-9]+)$/$1/; + foreach my $path (@paths) { + $path =~ m/-([0-9]+)/; + if (defined($1) && $1 > $nr) { + $nr = $1; + } + } + my @paths2 = glob("$mars/todo-global/deleted-*"); + foreach my $path (@paths2) { + my $link = get_link($path, 1); + $link =~ m/([0-9]+)/; + if (defined($1) && $1 > $nr) { + $nr = $1; + } } my $new = sprintf("$mars/todo-global/delete-%09d", $nr + 1); lprint "create symlink $new -> $target\n";