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--
>
|