projects
/
bluesky.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Work to unify the cloud segment writing with other cache management.
[bluesky.git]
/
bluesky
/
log.c
diff --git
a/bluesky/log.c
b/bluesky/log.c
index
55daf7a
..
9dfaa5b
100644
(file)
--- a/
bluesky/log.c
+++ b/
bluesky/log.c
@@
-36,7
+36,7
@@
// Rough size limit for a log segment. This is not a firm limit and there are
// no absolute guarantees on the size of a log segment.
// Rough size limit for a log segment. This is not a firm limit and there are
// no absolute guarantees on the size of a log segment.
-#define LOG_SEGMENT_SIZE (1 << 2
3
)
+#define LOG_SEGMENT_SIZE (1 << 2
4
)
#define HEADER_MAGIC 0x676f4c0a
#define FOOTER_MAGIC 0x2e435243
#define HEADER_MAGIC 0x676f4c0a
#define FOOTER_MAGIC 0x2e435243
@@
-82,6
+82,7
@@
static void log_commit(BlueSkyLog *log)
g_cond_signal(item->cond);
g_mutex_unlock(item->lock);
log->committed = g_slist_delete_link(log->committed, log->committed);
g_cond_signal(item->cond);
g_mutex_unlock(item->lock);
log->committed = g_slist_delete_link(log->committed, log->committed);
+ bluesky_cloudlog_unref(item);
batchsize++;
}
batchsize++;
}
@@
-153,6
+154,7
@@
static gpointer log_thread(gpointer d)
if ((item->location_flags | item->pending_write) & CLOUDLOG_JOURNAL) {
g_mutex_unlock(item->lock);
bluesky_cloudlog_unref(item);
if ((item->location_flags | item->pending_write) & CLOUDLOG_JOURNAL) {
g_mutex_unlock(item->lock);
bluesky_cloudlog_unref(item);
+ g_atomic_int_add(&item->data_lock_count, -1);
continue;
}
continue;
}
@@
-199,6
+201,7
@@
static gpointer log_thread(gpointer d)
offset += sizeof(header) + sizeof(footer) + item->data->len;
log->committed = g_slist_prepend(log->committed, item);
offset += sizeof(header) + sizeof(footer) + item->data->len;
log->committed = g_slist_prepend(log->committed, item);
+ g_atomic_int_add(&item->data_lock_count, -1);
g_mutex_unlock(item->lock);
/* Force an if there are no other log items currently waiting to be
g_mutex_unlock(item->lock);
/* Force an if there are no other log items currently waiting to be
@@
-235,6
+238,7
@@
BlueSkyLog *bluesky_log_new(const char *log_directory)
void bluesky_log_item_submit(BlueSkyCloudLog *item, BlueSkyLog *log)
{
bluesky_cloudlog_ref(item);
void bluesky_log_item_submit(BlueSkyCloudLog *item, BlueSkyLog *log)
{
bluesky_cloudlog_ref(item);
+ g_atomic_int_add(&item->data_lock_count, 1);
g_async_queue_push(log->queue, item);
}
g_async_queue_push(log->queue, item);
}
@@
-291,6
+295,8
@@
BlueSkyRCStr *bluesky_log_map_object(BlueSkyLog *log,
g_hash_table_insert(log->mmap_cache, GINT_TO_POINTER(log_seq), map);
g_hash_table_insert(log->mmap_cache, GINT_TO_POINTER(log_seq), map);
+ g_print("Mapped log segment %d...\n", log_seq);
+
close(fd);
}
close(fd);
}