From 22a969acb1297f5cc7e156f71ab587f50fd8ea8e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 23 Jul 2019 17:11:04 -0500 Subject: [PATCH] kv/KeyValueDB: take key_prefix for estimate_prefix_size() Signed-off-by: Sage Weil --- src/kv/KeyValueDB.h | 3 ++- src/kv/RocksDBStore.cc | 15 ++++++++------- src/kv/RocksDBStore.h | 3 ++- src/os/bluestore/BlueStore.cc | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/kv/KeyValueDB.h b/src/kv/KeyValueDB.h index b7c3722cc17..2ac43e7daac 100644 --- a/src/kv/KeyValueDB.h +++ b/src/kv/KeyValueDB.h @@ -367,7 +367,8 @@ public: virtual ~KeyValueDB() {} /// estimate space utilization for a prefix (in bytes) - virtual int64_t estimate_prefix_size(const string& prefix) { + virtual int64_t estimate_prefix_size(const string& prefix, + const string& key_prefix) { return 0; } diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index 4756697f270..df5a2ef0d7b 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -691,7 +691,8 @@ void RocksDBStore::split_stats(const std::string &s, char delim, std::vectorGetApproximateSizes(cf, &r, 1, &size, flags); } else { - string limit = prefix + "\xff\xff\xff\xff"; - rocksdb::Range r(prefix, limit); - db->GetApproximateSizes(default_cf, - &r, 1, &size, flags); + string start = prefix + key_prefix; + string limit = prefix + key_prefix + "\xff\xff\xff\xff"; + rocksdb::Range r(start, limit); + db->GetApproximateSizes(default_cf, &r, 1, &size, flags); } return size; } diff --git a/src/kv/RocksDBStore.h b/src/kv/RocksDBStore.h index ea7c77d3c76..5eb9549c286 100644 --- a/src/kv/RocksDBStore.h +++ b/src/kv/RocksDBStore.h @@ -197,7 +197,8 @@ public: return logger; } - int64_t estimate_prefix_size(const string& prefix) override; + int64_t estimate_prefix_size(const string& prefix, + const string& key_prefix) override; struct RocksWBHandler: public rocksdb::WriteBatch::Handler { std::string seen ; diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 7190a6e4a22..8d443fd895d 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -8211,7 +8211,7 @@ void BlueStore::_get_statfs_overall(struct store_statfs_t *buf) { buf->reset(); - buf->omap_allocated = db->estimate_prefix_size(PREFIX_OMAP); + buf->omap_allocated = db->estimate_prefix_size(PREFIX_OMAP, string()); uint64_t bfree = alloc->get_free(); -- 2.47.3