From 10b607672227fa1e5f3af2a7a8187f2d79bba641 Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Wed, 1 Mar 2023 16:04:23 +0300 Subject: [PATCH] os/bluestore: proper override rocksdb::WritableFile::Allocate Failing to do that makes BlueFS file frgmentation higher. Fixes: https://tracker.ceph.com/issues/58966 Signed-off-by: Igor Fedotov (cherry picked from commit 2d8b9e9ed58bca4917b90ea5eaa43264a89dff75) --- src/os/bluestore/BlueRocksEnv.cc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/os/bluestore/BlueRocksEnv.cc b/src/os/bluestore/BlueRocksEnv.cc index f8a2b7025d49f..e34e50630f08b 100644 --- a/src/os/bluestore/BlueRocksEnv.cc +++ b/src/os/bluestore/BlueRocksEnv.cc @@ -283,14 +283,12 @@ class BlueRocksWritableFile : public rocksdb::WritableFile { return rocksdb::Status::OK(); } - using rocksdb::WritableFile::RangeSync; // Sync a file range with disk. // offset is the starting byte of the file range to be synchronized. // nbytes specifies the length of the range to be synchronized. // This asks the OS to initiate flushing the cached data to disk, // without waiting for completion. - // Default implementation does nothing. - rocksdb::Status RangeSync(off_t offset, off_t nbytes) { + rocksdb::Status RangeSync(uint64_t offset, uint64_t nbytes) override { // round down to page boundaries int partial = offset & 4095; offset -= partial; @@ -302,11 +300,10 @@ class BlueRocksWritableFile : public rocksdb::WritableFile { } protected: - using rocksdb::WritableFile::Allocate; /* * Pre-allocate space for a file. */ - rocksdb::Status Allocate(off_t offset, off_t len) { + rocksdb::Status Allocate(uint64_t offset, uint64_t len) override { int r = fs->preallocate(h->file, offset, len); return err_to_status(r); } -- 2.39.5