From: Sage Weil Date: Tue, 23 Jul 2019 22:11:04 +0000 (-0500) Subject: kv/KeyValueDB: take key_prefix for estimate_prefix_size() X-Git-Tag: v15.1.0~1915^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=22a969acb1297f5cc7e156f71ab587f50fd8ea8e;p=ceph-ci.git kv/KeyValueDB: take key_prefix for estimate_prefix_size() Signed-off-by: Sage Weil --- 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();