From 1a5a1c69401ddf5a34a02377a59b7f4ebb979b0a 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 0d76a859719..68040af4282 100644 --- a/src/os/bluestore/BlueRocksEnv.cc +++ b/src/os/bluestore/BlueRocksEnv.cc @@ -285,14 +285,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; @@ -304,11 +302,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