X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Flog.c;h=9dfaa5bfd61437505ca52ed7b339296a8804a6f0;hb=ddaec40a37a5e65e53546b14632b1b0b35613264;hp=55daf7a85939de2cf0502486980d9091d361c674;hpb=4fa8649924cb61b3d77ced461fe716a7ee18fc1d;p=bluesky.git diff --git a/bluesky/log.c b/bluesky/log.c index 55daf7a..9dfaa5b 100644 --- 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. -#define LOG_SEGMENT_SIZE (1 << 23) +#define LOG_SEGMENT_SIZE (1 << 24) #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); + bluesky_cloudlog_unref(item); 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); + g_atomic_int_add(&item->data_lock_count, -1); 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); + 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 @@ -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); + g_atomic_int_add(&item->data_lock_count, 1); 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_print("Mapped log segment %d...\n", log_seq); + close(fd); }