Otherwise we call the flushed_callback too soon.
if (commit_set_callback &&
ob->last_commit_tid == ob->last_write_tid) {
ob->uncommitted_item.remove_myself();
- if (uncommitted_by_ino[ob->get_ino()].empty()) {
+ if (uncommitted_by_ino[ob->get_ino()].empty()) { // no uncommitted in flight
uncommitted_by_ino.erase(ob->get_ino());
- commit_set_callback(flush_set_callback_arg, ob->get_ino());
+ if (dirty_tx_by_ino[ob->get_ino()] == 0) // AND nothing dirty/tx
+ commit_set_callback(flush_set_callback_arg, ob->get_ino());
}
}
}