Sync metadata & data after copying from journal
This commit is contained in:
+15
-2
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user