update standards version
[debian/amanda] / device-src / xfer-dest-taper-splitter.c
index 7295da389c90301ecfb9222bfd7c6c6a91a18014..ccd7fdec5deb6dae76362f4bf55700d53e060334 100644 (file)
@@ -181,7 +181,7 @@ _xdt_dbg(const char *fmt, ...)
     arglist_start(argp, fmt);
     g_vsnprintf(msg, sizeof(msg), fmt, argp);
     arglist_end(argp);
-    g_debug("XDT thd-%p: %s", g_thread_self(), msg);
+    g_debug("XDT: %s", msg);
 }
 
 /* "Fast forward" the slice list by the given length.  This will free any
@@ -540,18 +540,15 @@ device_thread_write_part(
     g_mutex_unlock(self->ring_mutex);
 part_done:
 
-    if (elt->cancelled) {
-       g_timer_destroy(timer);
-       return NULL;
-    }
-
     /* if we write all of the blocks, but the finish_file fails, then likely
      * there was some buffering going on in the device driver, and the blocks
      * did not all make it to permanent storage -- so it's a failed part.  Note
      * that we try to finish_file even if the part failed, just to be thorough. */
     if (self->device->in_file) {
        if (!device_finish_file(self->device))
-           part_status = PART_FAILED;
+           if (!elt->cancelled) {
+               part_status = PART_FAILED;
+           }
     }
 
     g_timer_stop(timer);
@@ -562,7 +559,7 @@ part_done:
     msg->partnum = self->partnum;
     msg->fileno = fileno;
     msg->successful = self->last_part_successful = part_status != PART_FAILED;
-    msg->eom = self->last_part_eom = (part_status == PART_LEOM || !msg->successful);
+    msg->eom = self->last_part_eom = part_status == PART_LEOM || self->device->is_eom;
     msg->eof = self->last_part_eof = part_status == PART_EOF;
 
     /* time runs backward on some test boxes, so make sure this is positive */
@@ -737,15 +734,15 @@ cancel_impl(
 
     /* then signal all of our condition variables, so that threads waiting on them
      * wake up and see elt->cancelled. */
-    g_mutex_lock(self->state_mutex);
-    g_cond_broadcast(self->state_cond);
-    g_mutex_unlock(self->state_mutex);
-
     g_mutex_lock(self->ring_mutex);
     g_cond_broadcast(self->ring_add_cond);
     g_cond_broadcast(self->ring_free_cond);
     g_mutex_unlock(self->ring_mutex);
 
+    g_mutex_lock(self->state_mutex);
+    g_cond_broadcast(self->state_cond);
+    g_mutex_unlock(self->state_mutex);
+
     return rv;
 }