From 73b99a356db73745e8a70c1442ed3fbdbc0c7317 Mon Sep 17 00:00:00 2001 From: Yunchih Chen Date: Fri, 1 Dec 2017 11:03:20 +0800 Subject: Use simple fwrite --- commit.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/commit.c b/commit.c index 020c9c3..3be2964 100644 --- a/commit.c +++ b/commit.c @@ -13,30 +13,22 @@ void nfl_commit_init() { void nfl_commit_worker(nflog_header_t* header, nflog_entry_t* store) { FILE* f; char filename[1024]; - uint32_t id = header->id; + uint32_t written, id = header->id; sprintf(filename, "%s/%s_%d", storage_dir, storage_prefix, id); debug("Comm worker #%u: commit to file %s\n", header->id, filename); - fd = open ERR((f = fopen(filename, "wb")) == NULL, strerror(errno)); - fwrite(header, sizeof(nflog_header_t), 1, f); - - uint32_t total_size = sizeof(nflog_entry_t) * header->max_n_entries; - uint32_t total_blk = total_size / write_blk_size; - uint32_t i, written = 0; - for(i = 0; i < total_blk; ++i) { - written = fwrite(store, 1, write_blk_size, f); - - while(written < write_blk_size) { - written += fwrite(store, 1, write_blk_size - written, f); - } - } - int remain = total_size - total_blk*write_blk_size; - while(remain > 0) { - remain -= fwrite(store, 1, remain, f); - } + // commit header + written = fwrite(header, 1, sizeof(nflog_header_t), f); + ERR(written != sizeof(nflog_header_t), strerror(errno)); + // commit store + uint32_t store_size = sizeof(nflog_entry_t) * header->max_n_entries; + written = fwrite(store, 1, store_size, f); + ERR(written != store_size, strerror(errno)); + + // Do fsync ? fclose(f); } -- cgit v1.2.3