Amanda-Users

Re: rait output driver

2003-06-04 18:47:35
Subject: Re: rait output driver
From: rwk AT americom DOT com
To: martinea AT IRO.UMontreal DOT CA
Date: 4 Jun 2003 22:45:41 -0000
Jean-Louis,

That seems to have done it, for amlabel at least.  I'll let you know as
I try other thing if any problems remain.

Thanks again,
Dick

> On Wed, Jun 04, 2003 at 06:51:48AM -0000, rwk AT americom DOT com wrote:
> > Jean-Louis,
> > 
> > I just tried amanda-2.4.4-20030603.tar.gz
> > 
> > With tapedev "rait:{file:/backup,file:/mirror}"
> > 
> > I now get:
> > 
> > $ amlabel Tapeless Tape00
> > rewinding
> > amlabel: tape_rewind: rewinding tape: rait:{file:/backup,file:/mirror}: No 
> > child processes
> 
> Dick,
> 
> I did all my test with a file: and a tape: drivers, and it works, but you
> are right, it doesn't work with 2 file:.
> 
> Could you try this patch.
> 
> apply it with 'patch -p0 < rait-with-file.diff'
> 
> Jean-Louis
> -- 
> Jean-Louis Martineau             email: martineau AT IRO.UMontreal DOT CA 
> Departement IRO, Universite de Montreal
> C.P. 6128, Succ. CENTRE-VILLE    Tel: (514) 343-6111 ext. 3529
> Montreal, Canada, H3C 3J7        Fax: (514) 343-5834
> 
> --0OAP2g/MAC+5xKAE
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: attachment; filename="rait-with-file.diff"
> 
> --- tape-src/output-rait.c.orig       2003-03-07 15:49:18.000000000 -0500
> +++ tape-src/output-rait.c    2003-06-04 09:19:47.000000000 -0400
> @@ -1118,23 +1118,26 @@ static int rait_tapefd_ioctl(int (*func0
>           } else {
>               j = (*func1)(pr->fds[i], count);
>           }
> -         if( j != 0)
> -             res = j;
> +         if( j != 0) {
> +             errors++;
> +         }
>           pr->readres[i] = -1;
>       }
>      }
>      for( i = 0; i < pr->nfds ; i++ ) {
> -        rait_debug((stderr, "in parent, waiting for %d\n", pr->readres[i]));
> -     waitpid( pr->readres[i], &stat, 0);
> -     if( WEXITSTATUS(stat) != 0 ) {
> -         res = WEXITSTATUS(stat);
> -         if( res == 255 ) 
> -             res = -1;
> -        }
> -        rait_debug((stderr, "in parent, return code was %d\n", res));
> -     if ( res != 0 ) { 
> -         errors++;
> -         res = 0;
> +     if(tapefd_can_fork(pr->fds[i])) {
> +            rait_debug((stderr, "in parent, waiting for %d\n", 
> pr->readres[i]));
> +         waitpid( pr->readres[i], &stat, 0);
> +         if( WEXITSTATUS(stat) != 0 ) {
> +             res = WEXITSTATUS(stat);
> +             if( res == 255 ) 
> +                 res = -1;
> +            }
> +            rait_debug((stderr, "in parent, return code was %d\n", res));
> +         if ( res != 0 ) { 
> +             errors++;
> +             res = 0;
> +         }
>       }
>      }
>      if (errors > 0) {
> 
> --0OAP2g/MAC+5xKAE--
> 

<Prev in Thread] Current Thread [Next in Thread>