Fix the fix :)

This commit is contained in:
Vitaliy Filippov
2025-08-23 17:45:56 +03:00
parent 5c5c8825dc
commit 53b12641d1
2 changed files with 11 additions and 14 deletions
+10 -12
View File
@@ -364,7 +364,7 @@ bool journal_flusher_co::loop()
else if (wait_state == 31) goto resume_31; else if (wait_state == 31) goto resume_31;
else if (wait_state == 32) goto resume_32; else if (wait_state == 32) goto resume_32;
else if (wait_state == 33) goto resume_33; else if (wait_state == 33) goto resume_33;
else if (wait_state == 34) goto resume_34;
resume_0: resume_0:
if (flusher->flush_queue.size() < flusher->min_flusher_count && !flusher->trim_wanted || if (flusher->flush_queue.size() < flusher->min_flusher_count && !flusher->trim_wanted ||
!flusher->flush_queue.size() || !flusher->dequeuing) !flusher->flush_queue.size() || !flusher->dequeuing)
@@ -536,13 +536,6 @@ resume_2:
return false; return false;
if (old_clean_loc != UINT64_MAX && old_clean_loc != clean_loc) if (old_clean_loc != UINT64_MAX && old_clean_loc != clean_loc)
{ {
resume_21:
inflight_meta_sector = flusher->inflight_meta_sectors.find(meta_old.sector);
if (inflight_meta_sector != flusher->inflight_meta_sectors.end())
{
wait_state = wait_base+20;
return false;
}
// zero out old metadata entry // zero out old metadata entry
{ {
clean_disk_entry *old_entry = (clean_disk_entry*)((uint8_t*)meta_old.buf + meta_old.pos*bs->dsk.clean_entry_size); clean_disk_entry *old_entry = (clean_disk_entry*)((uint8_t*)meta_old.buf + meta_old.pos*bs->dsk.clean_entry_size);
@@ -557,6 +550,12 @@ resume_2:
memset((uint8_t*)meta_old.buf + meta_old.pos*bs->dsk.clean_entry_size, 0, bs->dsk.clean_entry_size); memset((uint8_t*)meta_old.buf + meta_old.pos*bs->dsk.clean_entry_size, 0, bs->dsk.clean_entry_size);
if (meta_old.sector != meta_new.sector) if (meta_old.sector != meta_new.sector)
{ {
resume_21:
if (flusher->inflight_meta_sectors.find(meta_old.sector) != flusher->inflight_meta_sectors.end())
{
wait_state = wait_base+21;
return false;
}
flusher->inflight_meta_sectors.insert(meta_old.sector); flusher->inflight_meta_sectors.insert(meta_old.sector);
resume_22: resume_22:
if (!write_meta_block(meta_old, 22)) if (!write_meta_block(meta_old, 22))
@@ -571,8 +570,8 @@ resume_2:
} }
} }
resume_24: resume_24:
inflight_meta_sector = flusher->inflight_meta_sectors.find(meta_new.sector); if (flusher->inflight_meta_sectors.find(meta_new.sector) != flusher->inflight_meta_sectors.end())
if (inflight_meta_sector != flusher->inflight_meta_sectors.end()) { {
wait_state = wait_base+24; wait_state = wait_base+24;
return false; return false;
} }
@@ -786,8 +785,7 @@ bool journal_flusher_co::clear_incomplete_csum_block_bits(int wait_base)
if (!wait_meta_reads(wait_base+0)) if (!wait_meta_reads(wait_base+0))
return false; return false;
resume_2: resume_2:
inflight_meta_sector = flusher->inflight_meta_sectors.find(meta_new.sector); if (flusher->inflight_meta_sectors.find(meta_new.sector) != flusher->inflight_meta_sectors.end())
if (inflight_meta_sector != flusher->inflight_meta_sectors.end())
{ {
wait_state = wait_base+2; wait_state = wait_base+2;
return false; return false;
-1
View File
@@ -76,7 +76,6 @@ class journal_flusher_co
uint8_t *new_clean_bitmap; uint8_t *new_clean_bitmap;
uint64_t new_trim_pos; uint64_t new_trim_pos;
std::unordered_set<uint64_t>::iterator inflight_meta_sector;
friend class journal_flusher_t; friend class journal_flusher_t;
void scan_dirty(); void scan_dirty();