Skip to content

Commit

Permalink
os/bluestore/BlueFS: do not start racing async compaction
Browse files Browse the repository at this point in the history
Compaction is triggred from sync_metadata.  If one compaction is
in progress and another thread also calls sync_metadata, do not
trigger a second async compaction!

Signed-off-by: Sage Weil <sage@redhat.com>
  • Loading branch information
liewegas committed Sep 7, 2016
1 parent f8abb62 commit dbe23c9
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/os/bluestore/BlueFS.cc
Expand Up @@ -998,10 +998,14 @@ bool BlueFS::_should_compact_log()
float ratio = (float)current / (float)expected;
dout(10) << __func__ << " current 0x" << std::hex << current
<< " expected " << expected << std::dec
<< " ratio " << ratio << dendl;
if (current < g_conf->bluefs_log_compact_min_size ||
ratio < g_conf->bluefs_log_compact_min_ratio)
<< " ratio " << ratio
<< (log_flushing ? " (async compaction in progress)" : "")
<< dendl;
if (log_flushing ||
current < g_conf->bluefs_log_compact_min_size ||
ratio < g_conf->bluefs_log_compact_min_ratio) {
return false;
}
return true;
}

Expand Down

0 comments on commit dbe23c9

Please sign in to comment.