diff options
author | Sage Weil <sage@inktank.com> | 2013-10-01 15:22:05 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-10-01 17:21:21 -0700 |
commit | 20974dc0520c754ea58e4364ac79cbb143b2f577 (patch) | |
tree | e1e8b4e352f7053a79c354bc8ec002e590fa2bdc | |
parent | a9e5323586b5a3771a045c335f7b31cc912c7fe7 (diff) | |
download | ceph-20974dc0520c754ea58e4364ac79cbb143b2f577.tar.gz |
rados: make 'tmap dump' gracefully handle non-tmap data
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/tools/rados/rados.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index fdf7e61d41e..009df5cd0af 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -1813,8 +1813,15 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, bufferlist::iterator p = outdata.begin(); bufferlist header; map<string, bufferlist> kv; - ::decode(header, p); - ::decode(kv, p); + try { + ::decode(header, p); + ::decode(kv, p); + } + catch (buffer::error& e) { + cerr << "error decoding tmap " << pool_name << "/" << oid << std::endl; + ret = -EINVAL; + goto out; + } cout << "header (" << header.length() << " bytes):\n"; header.hexdump(cout); cout << "\n"; |