83
83
retval = fstat (bs->fd, &st);
85
d(printf("Validate root: '%s'\n", bs->path));
86
d(printf("version: %.8s (%.8s)\n", bs->root->version, bs->version));
87
d(printf("block size: %d (%d)%s\n", br->block_size, bs->block_size,
85
d (printf ("Validate root: '%s'\n", bs->path));
86
d (printf ("version: %.8s (%.8s)\n", bs->root->version, bs->version));
88
"block size: %d (%d)%s\n",
89
br->block_size, bs->block_size,
88
90
br->block_size != bs->block_size ? " BAD":" OK"));
89
d(printf("free: %ld (%d add size < %ld)%s\n", (glong)br->free, br->free / bs->block_size * bs->block_size, (glong)st.st_size,
90
(br->free > st.st_size) || (br->free % bs->block_size) != 0 ? " BAD":" OK"));
91
d(printf("last: %ld (%d and size: %ld)%s\n", (glong)br->last, br->last / bs->block_size * bs->block_size, (glong)st.st_size,
92
(br->last != st.st_size) || ((br->last % bs->block_size) != 0) ? " BAD": " OK"));
93
d(printf("flags: %s\n", (br->flags & CAMEL_BLOCK_FILE_SYNC)?"SYNC":"unSYNC"));
92
"free: %ld (%d add size < %ld)%s\n",
94
br->free / bs->block_size * bs->block_size,
96
(br->free > st.st_size) ||
97
(br->free % bs->block_size) != 0 ? " BAD":" OK"));
99
"last: %ld (%d and size: %ld)%s\n",
101
br->last / bs->block_size * bs->block_size,
103
(br->last != st.st_size) ||
104
((br->last % bs->block_size) != 0) ? " BAD": " OK"));
107
(br->flags & CAMEL_BLOCK_FILE_SYNC) ? "SYNC" : "unSYNC"));
96
110
|| memcmp (bs->root->version, bs->version, 8) != 0
101
115
|| st.st_size != br->last
102
116
|| br->free > st.st_size
103
117
|| (br->flags & CAMEL_BLOCK_FILE_SYNC) == 0) {
105
if (retval != -1 && st.st_size > 0) {
106
g_warning("Invalid root: '%s'", bs->path);
107
g_warning("version: %.8s (%.8s)", bs->root->version, bs->version);
108
g_warning("block size: %d (%d)%s", br->block_size, bs->block_size,
109
br->block_size != bs->block_size ? " BAD":" OK");
110
g_warning("free: %ld (%d add size < %ld)%s", (glong)br->free, br->free / bs->block_size * bs->block_size, (glong)st.st_size,
111
(br->free > st.st_size) || (br->free % bs->block_size) != 0 ? " BAD":" OK");
112
g_warning("last: %ld (%d and size: %ld)%s", (glong)br->last, br->last / bs->block_size * bs->block_size, (glong)st.st_size,
113
(br->last != st.st_size) || ((br->last % bs->block_size) != 0) ? " BAD": " OK");
114
g_warning("flags: %s", (br->flags & CAMEL_BLOCK_FILE_SYNC)?"SYNC":"unSYNC");
253
d(printf("Turning block file online: %s\n", bs->path));
254
d (printf ("Turning block file online: %s\n", bs->path));
256
257
if ((bs->fd = g_open (bs->path, bs->flags | O_BINARY, 0600)) == -1) {
283
284
if (CAMEL_BLOCK_FILE_TRYLOCK (bf, root_lock)) {
284
285
if (CAMEL_BLOCK_FILE_TRYLOCK (bf, cache_lock)) {
285
286
if (CAMEL_BLOCK_FILE_TRYLOCK (bf, io_lock)) {
286
d(printf("[%d] Turning block file offline: %s\n", block_file_count-1, bf->path));
287
d (printf ("[%d] Turning block file offline: %s\n", block_file_count - 1, bf->path));
287
288
sync_nolock (bf);
371
372
/* Do we need to init the root block? */
372
373
if (class->validate_root (bs) == -1) {
373
d(printf("Initialise root block: %.8s\n", version));
374
d (printf ("Initialise root block: %.8s\n", version));
375
376
class->init_root (bs);
376
377
camel_block_file_touch_block (bs, bs->root_block);
457
458
* Allocate a new block, return a pointer to it. Old blocks
458
459
* may be flushed to disk during this call.
460
* Returns: The block, or NULL if an error occured.
461
* Returns: The block, or NULL if an error occurred.
463
464
camel_block_file_new_block (CamelBlockFile *bs)
554
555
bl = g_hash_table_lookup (bs->blocks, GUINT_TO_POINTER (id));
556
d(printf("Get block %08x: %s\n", id, bl?"cached":"must read"));
557
d (printf ("Get block %08x: %s\n", id, bl?"cached":"must read"));
558
559
if (bl == NULL) {
559
560
GQueue trash = G_QUEUE_INIT;
613
614
CAMEL_BLOCK_FILE_UNLOCK (bs, cache_lock);
615
d(printf("Got block %08x\n", id));
616
d (printf ("Got block %08x\n", id));
687
688
bl->flags |= CAMEL_BLOCK_DIRTY;
689
690
if ((bs->root->flags & CAMEL_BLOCK_FILE_SYNC) && bl != bs->root_block) {
690
d(printf("turning off sync flag\n"));
691
d (printf ("turning off sync flag\n"));
691
692
bs->root->flags &= ~CAMEL_BLOCK_FILE_SYNC;
692
693
bs->root_block->flags |= CAMEL_BLOCK_DIRTY;
693
694
camel_block_file_sync_block (bs, bs->root_block);
729
730
sync_block_nolock (CamelBlockFile *bs,
732
d(printf("Sync block %08x: %s\n", bl->id, (bl->flags & CAMEL_BLOCK_DIRTY)?"dirty":"clean"));
733
d (printf ("Sync block %08x: %s\n", bl->id, (bl->flags & CAMEL_BLOCK_DIRTY)?"dirty":"clean"));
734
735
if (bl->flags & CAMEL_BLOCK_DIRTY) {
735
736
if (lseek (bs->fd, bl->id, SEEK_SET) == -1
765
766
&& (bs->root->flags & CAMEL_BLOCK_FILE_SYNC) != 0)
768
d(printf("turning on sync flag\n"));
769
d (printf ("turning on sync flag\n"));
770
771
bs->root->flags |= CAMEL_BLOCK_FILE_SYNC;
771
772
bs->root_block->flags |= CAMEL_BLOCK_DIRTY;
976
977
/* Need to trylock, as any of these lock levels might be trying
977
978
* to lock the key_file_lock, so we need to check and abort if so */
978
979
if (CAMEL_BLOCK_FILE_TRYLOCK (bf, lock)) {
979
d(printf("Turning key file offline: %s\n", bf->path));
980
d (printf ("Turning key file offline: %s\n", bf->path));
982
983
key_file_count--;
1032
d(printf("New key file '%s'\n", path));
1033
d (printf ("New key file '%s'\n", path));
1034
1035
kf = g_object_new (CAMEL_TYPE_KEY_FILE, NULL);
1035
1036
kf->path = g_strdup (path);
1149
1150
g_return_val_if_fail (parent != NULL, -1);
1150
1151
g_return_val_if_fail (records != NULL, -1);
1152
d(printf("write key %08x len = %d\n", *parent, len));
1153
d (printf ("write key %08x len = %d\n", *parent, len));
1154
1155
if (len == 0) {
1155
d(printf(" new parent = %08x\n", *parent));
1156
d (printf (" new parent = %08x\n", *parent));