X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=perl%2FAmanda%2FChanger%2Fdisk.pm;h=8172791db08fbe14824dd13cd39c613c01151f36;hb=refs%2Ftags%2Fupstream%2F3.3.1;hp=5b5b3b9416aa895069d2e4ae15ec9ba9b83e7a00;hpb=cd0b924f27312d57bd42f6c4fae2b795139e2d0b;p=debian%2Famanda diff --git a/perl/Amanda/Changer/disk.pm b/perl/Amanda/Changer/disk.pm index 5b5b3b9..8172791 100644 --- a/perl/Amanda/Changer/disk.pm +++ b/perl/Amanda/Changer/disk.pm @@ -267,6 +267,8 @@ sub with_disk_locked_state { }; step locked => sub { + my $err = shift; + return $cb->($err) if $err; $self->with_locked_state($self->{'state_filename'}, sub { my @args = @_; $self->try_unlock(); @@ -595,9 +597,8 @@ sub _validate() { 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'}) { @@ -611,9 +612,9 @@ sub _validate() { } } 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; } } @@ -623,24 +624,22 @@ sub _validate() { 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 { @@ -656,7 +655,7 @@ sub try_lock { !$self->{'fl'}->locked()) { return $steps->{'lock'}->(); } - $steps->{'done'}->(); + $steps->{'lock_done'}->(); }; step lock => sub { @@ -673,15 +672,14 @@ sub try_lock { $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 {