Sync metadata & data after copying from journal

This commit is contained in:
Vitaliy Filippov
2019-11-14 14:09:07 +03:00
parent bc549553e4
commit f1e236c6e8
5 changed files with 152 additions and 103 deletions
+15 -2
View File
@@ -12,10 +12,16 @@ struct meta_sector_t
int usage_count;
};
struct flusher_sync_t
{
int ready_count;
int state;
};
class journal_flusher_t;
// Journal flusher coroutine
struct journal_flusher_co
class journal_flusher_co
{
blockstore *bs;
journal_flusher_t *flusher;
@@ -29,8 +35,11 @@ struct journal_flusher_co
std::vector<copy_buffer_t>::iterator it;
uint64_t offset, len, submit_len, clean_loc, meta_sector, meta_pos;
std::map<uint64_t, meta_sector_t>::iterator meta_it;
std::function<void(ring_data_t*)> simple_callback;
std::list<flusher_sync_t>::iterator cur_sync;
friend class journal_flusher_t;
public:
journal_flusher_co();
void loop();
};
@@ -38,10 +47,14 @@ public:
class journal_flusher_t
{
int flusher_count;
int active_flushers;
int sync_threshold;
bool sync_required;
journal_flusher_co *co;
blockstore *bs;
friend class journal_flusher_co;
int active_flushers, active_until_sync;
std::list<flusher_sync_t> syncs;
public:
std::map<uint64_t, meta_sector_t> meta_sectors;
std::deque<obj_ver_id> flush_queue;