Fix another rare journal flush stall
parent
cf5c562800
commit
d7bd36dc32
|
@ -162,7 +162,8 @@ void journal_flusher_t::mark_trim_possible()
|
||||||
if (trim_wanted > 0)
|
if (trim_wanted > 0)
|
||||||
{
|
{
|
||||||
dequeuing = true;
|
dequeuing = true;
|
||||||
journal_trim_counter++;
|
if (!journal_trim_counter)
|
||||||
|
journal_trim_counter = journal_trim_interval;
|
||||||
bs->ringloop->wakeup();
|
bs->ringloop->wakeup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,7 +286,10 @@ void blockstore_impl_t::handle_read_event(ring_data_t *data, blockstore_op_t *op
|
||||||
{
|
{
|
||||||
auto used = --journal.used_sectors[rv.journal_sector-1];
|
auto used = --journal.used_sectors[rv.journal_sector-1];
|
||||||
if (used == 0)
|
if (used == 0)
|
||||||
|
{
|
||||||
journal.used_sectors.erase(rv.journal_sector-1);
|
journal.used_sectors.erase(rv.journal_sector-1);
|
||||||
|
flusher->mark_trim_possible();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,6 @@ resume_4:
|
||||||
{
|
{
|
||||||
mark_rolled_back(*v);
|
mark_rolled_back(*v);
|
||||||
}
|
}
|
||||||
flusher->mark_trim_possible();
|
|
||||||
// Acknowledge op
|
// Acknowledge op
|
||||||
op->retval = 0;
|
op->retval = 0;
|
||||||
FINISH_OP(op);
|
FINISH_OP(op);
|
||||||
|
@ -232,6 +231,7 @@ void blockstore_impl_t::erase_dirty(blockstore_dirty_db_t::iterator dirty_start,
|
||||||
if (used == 0)
|
if (used == 0)
|
||||||
{
|
{
|
||||||
journal.used_sectors.erase(dirty_it->second.journal_sector);
|
journal.used_sectors.erase(dirty_it->second.journal_sector);
|
||||||
|
flusher->mark_trim_possible();
|
||||||
}
|
}
|
||||||
if (dsk.clean_entry_bitmap_size > sizeof(void*))
|
if (dsk.clean_entry_bitmap_size > sizeof(void*))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue