mirror of
https://github.com/ceph/ceph
synced 2025-02-23 02:57:21 +00:00
osd: pass a stream to flush_cache commands for more verbosity
Signed-off-by: Mohamad Gebai <mgebai@suse.com>
This commit is contained in:
parent
d6eed7bfee
commit
7e4ed82f01
@ -1479,7 +1479,7 @@ public:
|
||||
|
||||
virtual void get_db_statistics(Formatter *f) { }
|
||||
virtual void generate_db_histogram(Formatter *f) { }
|
||||
virtual int flush_cache() { return 0; }
|
||||
virtual int flush_cache(ostream *os = NULL) { return 0; }
|
||||
virtual void dump_perf_counters(Formatter *f) {}
|
||||
virtual int get_cache_obj_count() {
|
||||
return -1;
|
||||
|
@ -12554,7 +12554,7 @@ void BlueStore::_flush_cache()
|
||||
// We use a best-effort policy instead, e.g.,
|
||||
// we don't care if there are still some pinned onodes/data in the cache
|
||||
// after this command is completed.
|
||||
int BlueStore::flush_cache()
|
||||
int BlueStore::flush_cache(ostream *os)
|
||||
{
|
||||
dout(10) << __func__ << dendl;
|
||||
for (auto i : cache_shards) {
|
||||
|
@ -2356,7 +2356,7 @@ public:
|
||||
void get_db_statistics(Formatter *f) override;
|
||||
void generate_db_histogram(Formatter *f) override;
|
||||
void _flush_cache();
|
||||
int flush_cache() override;
|
||||
int flush_cache(ostream *os = NULL) override;
|
||||
void dump_perf_counters(Formatter *f) override {
|
||||
f->open_object_section("perf_counters");
|
||||
logger->dump_formatted(f, false);
|
||||
|
@ -1413,22 +1413,28 @@ int FileStore::version_stamp_is_valid(uint32_t *version)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int FileStore::flush_cache()
|
||||
int FileStore::flush_cache(ostream *os)
|
||||
{
|
||||
string drop_caches_file = "/proc/sys/vm/drop_caches";
|
||||
int drop_caches_fd = ::open(drop_caches_file.c_str(), O_WRONLY), ret = 0;
|
||||
int drop_caches_fd = ::open(drop_caches_file.c_str(), O_WRONLY|O_CLOEXEC), ret = 0;
|
||||
char buf[2] = "3";
|
||||
int len = strlen(buf);
|
||||
size_t len = strlen(buf);
|
||||
|
||||
if (drop_caches_fd < 0) {
|
||||
ret = -errno;
|
||||
derr << __FUNC__ << ": failed to open " << drop_caches_file << ": " << cpp_strerror(ret) << dendl;
|
||||
if (os) {
|
||||
*os << "FileStore flush_cache: failed to open " << drop_caches_file << ": " << cpp_strerror(ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (::write(drop_caches_fd, buf, len) < 0) {
|
||||
ret = -errno;
|
||||
derr << __FUNC__ << ": failed to write to " << drop_caches_file << ": " << cpp_strerror(ret) << dendl;
|
||||
if (os) {
|
||||
*os << "FileStore flush_cache: failed to write to " << drop_caches_file << ": " << cpp_strerror(ret);
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -504,7 +504,7 @@ public:
|
||||
f->close_section();
|
||||
}
|
||||
|
||||
int flush_cache() override;
|
||||
int flush_cache(ostream *os = NULL) override;
|
||||
int write_version_stamp();
|
||||
int version_stamp_is_valid(uint32_t *version);
|
||||
int update_version_stamp();
|
||||
|
@ -2397,7 +2397,7 @@ will start to track new ops received afterwards.";
|
||||
} else if (admin_command == "calc_objectstore_db_histogram") {
|
||||
store->generate_db_histogram(f);
|
||||
} else if (admin_command == "flush_store_cache") {
|
||||
store->flush_cache();
|
||||
store->flush_cache(&ss);
|
||||
} else if (admin_command == "dump_pgstate_history") {
|
||||
f->open_object_section("pgstate_history");
|
||||
vector<PGRef> pgs;
|
||||
@ -6020,8 +6020,8 @@ COMMAND("compact",
|
||||
COMMAND("smart name=devid,type=CephString,req=False",
|
||||
"runs smartctl on this osd devices. ",
|
||||
"osd", "rw", "cli,rest")
|
||||
COMMAND("clear_cache",
|
||||
"Clear OSD caches",
|
||||
COMMAND("drop cache",
|
||||
"Drop all OSD caches",
|
||||
"osd", "rw", "cli,rest")
|
||||
COMMAND("get_cache_object_count",
|
||||
"Get OSD caches object count",
|
||||
@ -6502,11 +6502,11 @@ int OSD::_do_command(
|
||||
probe_smart(devid, ds);
|
||||
}
|
||||
|
||||
else if (prefix == "clear_cache") {
|
||||
else if (prefix == "drop cache") {
|
||||
dout(20) << "clearing all caches" << dendl;
|
||||
// Clear the objectstore's cache - onode and buffer for Bluestore,
|
||||
// system's pagecache for Filestore
|
||||
r = store->flush_cache();
|
||||
r = store->flush_cache(&ss);
|
||||
if (r < 0) {
|
||||
ds << "Error flushing objectstore cache: " << cpp_strerror(r);
|
||||
goto out;
|
||||
|
Loading…
Reference in New Issue
Block a user