};
step locked => sub {
+ my $err = shift;
+ return $cb->($err) if $err;
$self->with_locked_state($self->{'state_filename'},
sub { my @args = @_;
$self->try_unlock();
my $dir = $self->{'dir'};
unless (-d $dir) {
- $self->{'fatal_error'} = Amanda::Changer->make_error("fatal", undef,
+ return $self->make_error("fatal", undef,
message => "directory '$dir' does not exist");
- return;
}
if ($self->{'removable'}) {
}
}
if ($dev == $pdev) {
- $self->{'fatal_error'} = Amanda::Changer->make_error("fatal", undef,
+ return $self->make_error("failed", undef,
+ reason => "notfound",
message => "No removable disk mounted on '$dir'");
- return;
}
}
if (!-e $slot_dir) {
if ($self->{'auto-create-slot'}) {
if (!mkdir ($slot_dir)) {
- $self->{'fatal_error'} = Amanda::Changer->make_error("fatal", undef,
+ return $self->make_error("fatal", undef,
message => "Can't create '$slot_dir': $!");
- return;
}
} else {
- $self->{'fatal_error'} = Amanda::Changer->make_error("fatal", undef,
+ return $self->make_error("fatal", undef,
message => "slot $i doesn't exists '$slot_dir'");
- return;
}
}
}
} else {
if ($self->{'auto-create-slot'}) {
- $self->{'fatal_error'} = Amanda::Changer->make_error("fatal", undef,
+ return $self->make_error("fatal", undef,
message => "property 'auto-create-slot' set but property 'num-slot' is not set");
- return;
}
}
+ return undef;
}
sub try_lock {
!$self->{'fl'}->locked()) {
return $steps->{'lock'}->();
}
- $steps->{'done'}->();
+ $steps->{'lock_done'}->();
};
step lock => sub {
$self->{'umount_src'}->remove();
$self->{'umount_src'} = undef;
}
- return $steps->{'done'}->();
+ return $steps->{'lock_done'}->();
}
};
- step done => sub {
- $self->_validate();
- $cb->();
+ step lock_done => sub {
+ my $err = $self->_validate();
+ $cb->($err);
};
-
}
sub try_umount {