]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/bluefs: Force metadata sync after file rename and file deletion 41168/head
authorAdam Kupczyk <akupczyk@redhat.com>
Wed, 5 May 2021 09:35:39 +0000 (11:35 +0200)
committerAdam Kupczyk <akupczyk@redhat.com>
Wed, 5 May 2021 09:35:39 +0000 (11:35 +0200)
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 <akupczyk@redhat.com>
src/os/bluestore/BlueRocksEnv.cc

index 8c4f80c7ed10bfb46d761cb3778b6cfedd1e8f93..524043f142cacc48b5d15ebdb9e07f9f5fe57316 100644 (file)
@@ -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();
 }