mirror of
https://github.com/ceph/ceph
synced 2025-01-20 01:51:34 +00:00
Merge pull request #15592 from david-z/wip-fix-dump-cache
mds: explicitly output error msg for dump cache asok command Reviewed-by: John Spray <john.spray@redhat.com>
This commit is contained in:
commit
412b397dc5
@ -11882,26 +11882,26 @@ void MDCache::show_cache()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MDCache::dump_cache(std::string const &file_name)
|
int MDCache::dump_cache(std::string const &file_name)
|
||||||
{
|
{
|
||||||
dump_cache(file_name.c_str(), NULL);
|
return dump_cache(file_name.c_str(), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MDCache::dump_cache(Formatter *f)
|
int MDCache::dump_cache(Formatter *f)
|
||||||
{
|
{
|
||||||
dump_cache(NULL, f);
|
return dump_cache(NULL, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MDCache::dump_cache(const string& dump_root, int depth, Formatter *f)
|
int MDCache::dump_cache(const string& dump_root, int depth, Formatter *f)
|
||||||
{
|
{
|
||||||
dump_cache(NULL, f, dump_root, depth);
|
return dump_cache(NULL, f, dump_root, depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dump the metadata cache, either to a Formatter, if
|
* Dump the metadata cache, either to a Formatter, if
|
||||||
* provided, else to a plain text file.
|
* provided, else to a plain text file.
|
||||||
*/
|
*/
|
||||||
void MDCache::dump_cache(const char *fn, Formatter *f,
|
int MDCache::dump_cache(const char *fn, Formatter *f,
|
||||||
const string& dump_root, int depth)
|
const string& dump_root, int depth)
|
||||||
{
|
{
|
||||||
int r = 0;
|
int r = 0;
|
||||||
@ -11921,7 +11921,7 @@ void MDCache::dump_cache(const char *fn, Formatter *f,
|
|||||||
fd = ::open(fn, O_WRONLY|O_CREAT|O_EXCL, 0600);
|
fd = ::open(fn, O_WRONLY|O_CREAT|O_EXCL, 0600);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
derr << "failed to open " << fn << ": " << cpp_strerror(errno) << dendl;
|
derr << "failed to open " << fn << ": " << cpp_strerror(errno) << dendl;
|
||||||
return;
|
return errno;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12023,6 +12023,7 @@ void MDCache::dump_cache(const char *fn, Formatter *f,
|
|||||||
} else {
|
} else {
|
||||||
::close(fd);
|
::close(fd);
|
||||||
}
|
}
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1117,14 +1117,14 @@ public:
|
|||||||
void discard_delayed_expire(CDir *dir);
|
void discard_delayed_expire(CDir *dir);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void dump_cache(const char *fn, Formatter *f,
|
int dump_cache(const char *fn, Formatter *f,
|
||||||
const std::string& dump_root = "",
|
const std::string& dump_root = "",
|
||||||
int depth = -1);
|
int depth = -1);
|
||||||
public:
|
public:
|
||||||
void dump_cache() {dump_cache(NULL, NULL);}
|
int dump_cache() { return dump_cache(NULL, NULL); }
|
||||||
void dump_cache(const std::string &filename);
|
int dump_cache(const std::string &filename);
|
||||||
void dump_cache(Formatter *f);
|
int dump_cache(Formatter *f);
|
||||||
void dump_cache(const std::string& dump_root, int depth, Formatter *f);
|
int dump_cache(const std::string& dump_root, int depth, Formatter *f);
|
||||||
|
|
||||||
void dump_resolve_status(Formatter *f) const;
|
void dump_resolve_status(Formatter *f) const;
|
||||||
void dump_rejoin_status(Formatter *f) const;
|
void dump_rejoin_status(Formatter *f) const;
|
||||||
|
@ -1919,10 +1919,15 @@ bool MDSRankDispatcher::handle_asok_command(
|
|||||||
} else if (command == "dump cache") {
|
} else if (command == "dump cache") {
|
||||||
Mutex::Locker l(mds_lock);
|
Mutex::Locker l(mds_lock);
|
||||||
string path;
|
string path;
|
||||||
|
int r;
|
||||||
if(!cmd_getval(g_ceph_context, cmdmap, "path", path)) {
|
if(!cmd_getval(g_ceph_context, cmdmap, "path", path)) {
|
||||||
mdcache->dump_cache(f);
|
r = mdcache->dump_cache(f);
|
||||||
} else {
|
} else {
|
||||||
mdcache->dump_cache(path);
|
r = mdcache->dump_cache(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r != 0) {
|
||||||
|
ss << "Failed to dump cache: " << cpp_strerror(r);
|
||||||
}
|
}
|
||||||
} else if (command == "dump tree") {
|
} else if (command == "dump tree") {
|
||||||
string root;
|
string root;
|
||||||
@ -1932,7 +1937,10 @@ bool MDSRankDispatcher::handle_asok_command(
|
|||||||
depth = -1;
|
depth = -1;
|
||||||
{
|
{
|
||||||
Mutex::Locker l(mds_lock);
|
Mutex::Locker l(mds_lock);
|
||||||
mdcache->dump_cache(root, depth, f);
|
int r = mdcache->dump_cache(root, depth, f);
|
||||||
|
if (r != 0) {
|
||||||
|
ss << "Failed to dump tree: " << cpp_strerror(r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (command == "force_readonly") {
|
} else if (command == "force_readonly") {
|
||||||
Mutex::Locker l(mds_lock);
|
Mutex::Locker l(mds_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user