From 6ad8e2e25120bd41f252ae074445d3486e8e9f52 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 13 Oct 2006 11:46:07 +0000 Subject: [PATCH] Removed bug in burn_disc_write_sync(): BURN_DRIVE_IDLE, then d->sync_cache() --- cdrskin/cdrskin.c | 2 ++ cdrskin/cdrskin_timestamp.h | 2 +- libburn/libdax_msgs.h | 2 +- libburn/sg-linux.c | 4 ++-- libburn/write.c | 4 ++++ 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cdrskin/cdrskin.c b/cdrskin/cdrskin.c index a987827..bf9a24e 100644 --- a/cdrskin/cdrskin.c +++ b/cdrskin/cdrskin.c @@ -3984,6 +3984,8 @@ int Cdrskin_eject(struct CdrskiN *skin, int flag) if(skin->n_drives<=skin->driveno || skin->driveno < 0) return(2); + /* <<< A61012 : retry loop might now be obsolete + (a matching bug in burn_disc_write_sync() was removed ) */ for(i= 0;i0 || i>=max_try-1) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 10a8718..1436d3d 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2006.10.11.191959" +#define Cdrskin_timestamP "2006.10.13.114554" diff --git a/libburn/libdax_msgs.h b/libburn/libdax_msgs.h index e3bd263..36e2416 100644 --- a/libburn/libdax_msgs.h +++ b/libburn/libdax_msgs.h @@ -297,7 +297,7 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff 0x00020001 (SORRY,LOW) = Cannot open busy device 0x00020002 (SORRY,HIGH) = Encountered error when closing drive - 0x00020003 (FATAL,HIGH) = Could not grab drive + 0x00020003 (SORRY,HIGH) = Could not grab drive 0x00020004 (NOTE,HIGH) = Opened O_EXCL scsi sibling 0x00020005 (FATAL,HIGH) = Failed to open device 0x00020006 (FATAL,HIGH) = Too many scsi siblings diff --git a/libburn/sg-linux.c b/libburn/sg-linux.c index 8af3b9c..3ff058b 100644 --- a/libburn/sg-linux.c +++ b/libburn/sg-linux.c @@ -578,14 +578,14 @@ int sg_grab(struct burn_drive *d) drive_is_in_use:; libdax_msgs_submit(libdax_messenger, d->global_index, 0x00020003, - LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH, + LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH, "Could not grab drive - already in use", 0, 0); sg_close_drive(d); d->fd = -1337; return 0; } libdax_msgs_submit(libdax_messenger, d->global_index, 0x00020003, - LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH, + LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH, "Could not grab drive", os_errno, 0); return 0; } diff --git a/libburn/write.c b/libburn/write.c index e0ceb4a..f5df79b 100644 --- a/libburn/write.c +++ b/libburn/write.c @@ -658,6 +658,10 @@ return crap. so we send the command, then ignore the result. burn_print(1, "done\n"); d->busy = BURN_DRIVE_IDLE; + /* ts A61012 : This return was traditionally missing, a suspect this + to have caused Cdrskin_eject() failures */ + return; + fail: d->sync_cache(d); burn_print(1, "done - failed\n");