projects
/
debian
/
amanda
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'upstream/3.3.2'
[debian/amanda]
/
device-src
/
rait-device.c
diff --git
a/device-src/rait-device.c
b/device-src/rait-device.c
index dda81fb1c9b3d9c12c0f75a1037ddc76ac287afb..fa174580e35c2b5b0834c7c761064c50e50a6e69 100644
(file)
--- a/
device-src/rait-device.c
+++ b/
device-src/rait-device.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2007
, 2008, 2009, 2010
Zmanda, Inc. All Rights Reserved.
+ * Copyright (c) 2007
-2012
Zmanda, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
@@
-1222,7
+1222,9
@@
rait_device_start (Device * dself, DeviceAccessMode mode, char * label,
return FALSE;
dself->access_mode = mode;
return FALSE;
dself->access_mode = mode;
+ g_mutex_lock(dself->device_mutex);
dself->in_file = FALSE;
dself->in_file = FALSE;
+ g_mutex_unlock(dself->device_mutex);
amfree(dself->volume_label);
amfree(dself->volume_time);
dumpfile_free(dself->volume_header);
amfree(dself->volume_label);
amfree(dself->volume_time);
dumpfile_free(dself->volume_header);
@@
-1404,9
+1406,12
@@
rait_device_start_file (Device * dself, dumpfile_t * info) {
return FALSE;
}
return FALSE;
}
- dself->in_file = TRUE;
g_assert(actual_file >= 1);
dself->file = actual_file;
g_assert(actual_file >= 1);
dself->file = actual_file;
+ g_mutex_lock(dself->device_mutex);
+ dself->in_file = TRUE;
+ dself->bytes_written = 0;
+ g_mutex_unlock(dself->device_mutex);
return TRUE;
}
return TRUE;
}
@@
-1584,6
+1589,9
@@
rait_device_write_block (Device * dself, guint size, gpointer data) {
return FALSE;
} else {
dself->block ++;
return FALSE;
} else {
dself->block ++;
+ g_mutex_lock(dself->device_mutex);
+ dself->bytes_written += size;
+ g_mutex_unlock(dself->device_mutex);
return TRUE;
}
return TRUE;
}
@@
-1626,7
+1634,9
@@
rait_device_finish_file (Device * dself) {
return FALSE;
}
return FALSE;
}
+ g_mutex_lock(dself->device_mutex);
dself->in_file = FALSE;
dself->in_file = FALSE;
+ g_mutex_unlock(dself->device_mutex);
return TRUE;
}
return TRUE;
}
@@
-1655,9
+1665,12
@@
rait_device_seek_file (Device * dself, guint file) {
if (rait_device_in_error(self)) return NULL;
if (rait_device_in_error(self)) return NULL;
- dself->in_file = FALSE;
dself->is_eof = FALSE;
dself->block = 0;
dself->is_eof = FALSE;
dself->block = 0;
+ g_mutex_lock(dself->device_mutex);
+ dself->in_file = FALSE;
+ dself->bytes_read = 0;
+ g_mutex_unlock(dself->device_mutex);
ops = g_ptr_array_sized_new(self->private->children->len);
for (i = 0; i < self->private->children->len; i ++) {
ops = g_ptr_array_sized_new(self->private->children->len);
for (i = 0; i < self->private->children->len; i ++) {
@@
-1722,7
+1735,9
@@
rait_device_seek_file (Device * dself, guint file) {
}
/* update our state */
}
/* update our state */
+ g_mutex_lock(dself->device_mutex);
dself->in_file = in_file;
dself->in_file = in_file;
+ g_mutex_unlock(dself->device_mutex);
dself->file = actual_file;
return rval;
dself->file = actual_file;
return rval;
@@
-1990,7
+2005,9
@@
rait_device_read_block (Device * dself, gpointer buf, int * size) {
stralloc(_("EOF")),
DEVICE_STATUS_SUCCESS);
dself->is_eof = TRUE;
stralloc(_("EOF")),
DEVICE_STATUS_SUCCESS);
dself->is_eof = TRUE;
+ g_mutex_lock(dself->device_mutex);
dself->in_file = FALSE;
dself->in_file = FALSE;
+ g_mutex_unlock(dself->device_mutex);
} else {
device_set_error(dself,
stralloc(_("All child devices failed to read, but not all are at eof")),
} else {
device_set_error(dself,
stralloc(_("All child devices failed to read, but not all are at eof")),
@@
-2007,6
+2024,9
@@
rait_device_read_block (Device * dself, gpointer buf, int * size) {
if (success) {
dself->block++;
*size = blocksize;
if (success) {
dself->block++;
*size = blocksize;
+ g_mutex_lock(dself->device_mutex);
+ dself->bytes_read += blocksize;
+ g_mutex_unlock(dself->device_mutex);
return blocksize;
} else {
return -1;
return blocksize;
} else {
return -1;