From: Adam Kupczyk Date: Wed, 5 May 2021 09:35:39 +0000 (+0200) Subject: os/bluestore/bluefs: Force metadata sync after file rename and file deletion X-Git-Tag: v17.1.0~1298^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=227184651a7c2ee76a7b4bf3369e1a9da5fc5052;p=ceph.git os/bluestore/bluefs: Force metadata sync after file rename and file deletion Add metadata sync after RocksDB renames or deletes file. It makes possible for RocksDB to create meaningfull transition change on those actions. Important for log reuse/cycling and for CURRENT and MANIFEST files. Signed-off-by: Adam Kupczyk --- diff --git a/src/os/bluestore/BlueRocksEnv.cc b/src/os/bluestore/BlueRocksEnv.cc index 8c4f80c7ed10..524043f142ca 100644 --- a/src/os/bluestore/BlueRocksEnv.cc +++ b/src/os/bluestore/BlueRocksEnv.cc @@ -412,6 +412,7 @@ rocksdb::Status BlueRocksEnv::ReuseWritableFile( if (r < 0) return err_to_status(r); result->reset(new BlueRocksWritableFile(fs, h)); + fs->sync_metadata(false); return rocksdb::Status::OK(); } @@ -452,6 +453,7 @@ rocksdb::Status BlueRocksEnv::DeleteFile(const std::string& fname) int r = fs->unlink(dir, file); if (r < 0) return err_to_status(r); + fs->sync_metadata(false); return rocksdb::Status::OK(); } @@ -512,6 +514,7 @@ rocksdb::Status BlueRocksEnv::RenameFile( int r = fs->rename(old_dir, old_file, new_dir, new_file); if (r < 0) return err_to_status(r); + fs->sync_metadata(false); return rocksdb::Status::OK(); }