Defended against a race condition on SuSE 9.3 after -atip (hald et.al. ?)

This commit is contained in:
Thomas Schmitt 2006-12-27 13:04:17 +00:00
parent d4f726cf1e
commit b6c332d9be
2 changed files with 11 additions and 4 deletions

View File

@ -3796,6 +3796,12 @@ int Cdrskin_atip(struct CdrskiN *skin, int flag)
Cdrskin_toc(skin,1);/*cdrecord seems to ignore -toc errors if -atip is ok */ Cdrskin_toc(skin,1);/*cdrecord seems to ignore -toc errors if -atip is ok */
ex:; ex:;
Cdrskin_release_drive(skin,0); Cdrskin_release_drive(skin,0);
/* A61227 :
A kindof race condition with -atip on filled CD-RW and following grabs
under SuSE 9.3. Waiting seems to help. I suspect the media demon. */
usleep(200000);
return(ret); return(ret);
} }
@ -4759,13 +4765,14 @@ int Cdrskin_eject(struct CdrskiN *skin, int flag)
if(!skin->do_eject) if(!skin->do_eject)
return(1); return(1);
/* A60923 :
Still not in libburn-0.2.2 : prevent SIGSEV on non-existent drive */
if(skin->n_drives<=skin->driveno || skin->driveno < 0) if(skin->n_drives<=skin->driveno || skin->driveno < 0)
return(2); return(2);
/* <<< A61012 : retry loop might now be obsolete /* ??? A61012 : retry loop might now be obsolete
(a matching bug in burn_disc_write_sync() was removed ) */ (a matching bug in burn_disc_write_sync() was removed ) */
/* A61227 : A kindof race condition with -atip -eject on SuSE 9.3. Loop saved
me. Waiting seems to help. I suspect the media demon. */
for(i= 0;i<max_try;i++) { for(i= 0;i<max_try;i++) {
ret= Cdrskin_grab_drive(skin,2|((i<max_try-1)<<2)); ret= Cdrskin_grab_drive(skin,2|((i<max_try-1)<<2));
if(ret>0 || i>=max_try-1) if(ret>0 || i>=max_try-1)

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2006.12.27.130125" #define Cdrskin_timestamP "2006.12.27.130239"