Amanda-Users

Re: more restore problems with tape spanning...

2007-07-05 09:14:58
Subject: Re: more restore problems with tape spanning...
From: Jean-Louis Martineau <martineau AT zmanda DOT com>
To: Jean-Francois Malouin <Jean-Francois.Malouin AT bic.mni.mcgill DOT ca>
Date: Thu, 05 Jul 2007 09:08:18 -0400
Try the attached patch for amrestore and amfetchdump.

Jean-Louis

Jean-Francois Malouin wrote:
* Jean-Louis Martineau <martineau AT zmanda DOT com> [20070704 08:04]:
Jean-Francois Malouin wrote:
Following on my previous post: here's what I get

/opt/amanda/amanda2/sbin/amfetchdump -p -l stk_80-conf2 yorick
/data/ipl/ipl10
20070630 -o stk_80-conf2 | /usr/freeware/bin/tar -xvGpf -
"(null)", line 0: Must specify a value for stk_80-conf2.
You can remove the '-o stk_80-conf2' argument.
amfetchdump: time 2425.149: could not fsf /hw/tape/tps22d2nrnsv: No space left on device
I don't understand the 'No space left on device' error.

Can you put the stk_40-conf2-000017 tape in the drive and run:
 mt -f /hw/tape/tps22d2nrnsv rewind
 amrestore /hw/tape/tps22d2nrnsv nohost

here's what I got:

amrestore: 1: skipping yorick._data_mril_mril5_bojana_images.20070630.0
amrestore: 2: skipping yorick._.20070630.1
amrestore: 3: skipping yorick._data_noel_noel1.20070630.0
amrestore: 4: skipping yorick.noel1_neda_03.20070630.1
amrestore: 5: skipping yorick._data_mril_mril5_tardif.20070630.2
amrestore: 6: skipping yorick._data_mril_mril5_leili.20070630.0
amrestore: 7: skipping yorick._data_mril_mril5_vivian.20070630.0
amrestore: 8: skipping yorick._data_mril_mril5_mferre.20070630.0
amrestore: 9: skipping yorick._data_mril_mril5_ives.20070630.0
amrestore: 10: skipping yorick._data_mril_mril5_jcampbel.20070630.1
amrestore: 11: skipping yorick._data_mril_mril5_vanela.20070630.0
amrestore: 12: skipping 
yorick._data_mril_mril5_mgriffin_Experimental_data.20070630.1
amrestore: 13: skipping yorick._data_mril_mril5_bojana.20070630.1
amrestore: 14: skipping yorick._data_ipl_ipl10.20070630.0.0000001
amrestore: 15: skipping yorick._data_ipl_ipl10.20070630.0.0000002
amrestore: 16: skipping yorick._data_ipl_ipl10.20070630.0.0000003
amrestore: could not fsf /hw/tape/tps23d3nrnsv: No space left on device

jf

diff -u -r --show-c-function --new-file 
--exclude-from=/home/martinea/src.orig/amanda.diff 
--ignore-matching-lines='$Id:' amanda-2.5.2p1/restore-src/amrestore.c 
amanda-2.5.2p1.restore/restore-src/amrestore.c
--- amanda-2.5.2p1/restore-src/amrestore.c      2007-05-04 07:39:06.000000000 
-0400
+++ amanda-2.5.2p1.restore/restore-src/amrestore.c      2007-07-05 
08:57:30.000000000 -0400
@@ -400,21 +400,6 @@ main(
     if(isafile) {
        close(tapedev);
     } else {
-       /*
-        * See the notes above about advancing to the next file.
-        */
-       if(read_result == 0) {
-           tapefd_close(tapedev);
-           if((tapedev = tape_open(tapename, 0)) < 0) {
-               error("could not open %s: %s", tapename, strerror(errno));
-               /*NOTREACHED*/
-           }
-       } else {
-           if(tapefd_fsf(tapedev, (off_t)1) < 0) {
-               error("could not fsf %s: %s", tapename, strerror(errno));
-               /*NOTREACHED*/
-           }
-       }
        tapefd_close(tapedev);
     }
 
diff -u -r --show-c-function --new-file 
--exclude-from=/home/martinea/src.orig/amanda.diff 
--ignore-matching-lines='$Id:' amanda-2.5.2p1/restore-src/restore.c 
amanda-2.5.2p1.restore/restore-src/restore.c
--- amanda-2.5.2p1/restore-src/restore.c        2007-06-06 19:19:20.000000000 
-0400
+++ amanda-2.5.2p1.restore/restore-src/restore.c        2007-07-05 
09:00:37.000000000 -0400
@@ -1600,29 +1600,11 @@ search_a_tape(
        }
     } /* while we keep seeing headers */
 
-    if (!isafile) {
-       if (file->type == F_EMPTY) {
-           aclose(tapefd);
-           if((tapefd = tape_open(cur_tapedev, 0)) < 0) {
-               send_message(prompt_out, flags, their_features,
-                            "could not open %s: %s",
-                            cur_tapedev, strerror(errno));
-               error("could not open %s: %s",
-                     cur_tapedev, strerror(errno));
-               /*NOTREACHED*/
-           }
-       } else {
-           if (tapefd_fsf(tapefd, (off_t)1) < 0) {
-               send_message(prompt_out, flags, their_features,
-                            "could not fsf %s: %s",
-                            cur_tapedev, strerror(errno));;
-               error("could not fsf %s: %s",
-                     cur_tapedev, strerror(errno));
-               /*NOTREACHED*/
-           }
-       }
+    if (isafile) {
+       close(tapefd);
+    } else {
+       tapefd_close(tapefd);
     }
-    tapefd_close(tapefd);
 
     /* spit out our accumulated list of dumps, if we're inventorying */
     if (logstream) {