X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fos%2Fbluestore%2FBlueFS.cc;h=36f0b3cb0498701585c6eddf1b71eccb6a49d21d;hb=224ce89bce8186937e77bdbda572a650953f8c23;hp=f73e27cf6030c2ef346c486d20de1a924932ed02;hpb=06dae762bfef1ba116dc58483c7b68b733d853e0;p=ceph.git diff --git a/ceph/src/os/bluestore/BlueFS.cc b/ceph/src/os/bluestore/BlueFS.cc index f73e27cf6..36f0b3cb0 100644 --- a/ceph/src/os/bluestore/BlueFS.cc +++ b/ceph/src/os/bluestore/BlueFS.cc @@ -1138,6 +1138,11 @@ void BlueFS::_compact_log_sync() assert(r == 0); wait_for_aio(log_writer); + list completed_ios; + _claim_completed_aios(log_writer, &completed_ios); + flush_bdev(); + completed_ios.clear(); + dout(10) << __func__ << " writing super" << dendl; super.log_fnode = log_file->fnode; ++super.version; @@ -1206,6 +1211,8 @@ void BlueFS::_compact_log_async(std::unique_lock& l) // 2. prepare compacted log bluefs_transaction_t t; + //avoid record two times in log_t and _compact_log_dump_metadata. + log_t.clear(); _compact_log_dump_metadata(&t); // conservative estimate for final encoded size @@ -1238,7 +1245,11 @@ void BlueFS::_compact_log_async(std::unique_lock& l) // 4. wait dout(10) << __func__ << " waiting for compacted log to sync" << dendl; wait_for_aio(new_log_writer); + + list completed_ios; + _claim_completed_aios(new_log_writer, &completed_ios); flush_bdev(); + completed_ios.clear(); // 5. retake lock lock.lock();