mirror of
https://github.com/ceph/ceph
synced 2025-04-11 04:02:04 +00:00
Merge PR #35323 into master
* refs/pull/35323/head: tool: change coding style, indent with two spaces Reviewed-by: Zheng Yan <zyan@redhat.com> Reviewed-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
commit
dd56696230
@ -1,3 +1,5 @@
|
||||
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
|
||||
// vim: ts=8 sw=2 smarttab
|
||||
#include <string.h>
|
||||
#include <map>
|
||||
#include <sstream>
|
||||
@ -35,17 +37,20 @@ WRITE_RAW_ENCODER(unsigned char)
|
||||
#define dout_prefix *_dout << __func__ << ": "
|
||||
|
||||
|
||||
void MetaTool::meta_op::release(){
|
||||
void MetaTool::meta_op::release()
|
||||
{
|
||||
for (const auto& i : inodes) {
|
||||
delete i.second;
|
||||
}
|
||||
|
||||
while (!sub_ops.empty()) {
|
||||
delete sub_ops.top();
|
||||
sub_ops.pop();
|
||||
}
|
||||
}
|
||||
|
||||
void MetaTool::inode_meta_t::decode_json(JSONObj *obj){
|
||||
void MetaTool::inode_meta_t::decode_json(JSONObj *obj)
|
||||
{
|
||||
unsigned long long tmp;
|
||||
JSONDecoder::decode_json("snapid_t", tmp, obj, true);
|
||||
_f.val = tmp;
|
||||
@ -56,7 +61,8 @@ void MetaTool::inode_meta_t::decode_json(JSONObj *obj){
|
||||
JSONDecoder::decode_json("store", *_i, obj, true);
|
||||
}
|
||||
|
||||
void MetaTool::usage(){
|
||||
void MetaTool::usage()
|
||||
{
|
||||
generic_client_usage();
|
||||
}
|
||||
|
||||
@ -67,7 +73,8 @@ int MetaTool::main(string& mode,
|
||||
string& out,
|
||||
string& in,
|
||||
bool confirm
|
||||
){
|
||||
)
|
||||
{
|
||||
int r = 0;
|
||||
|
||||
std::string manual_meta_pool;
|
||||
@ -143,9 +150,8 @@ int MetaTool::main(string& mode,
|
||||
output.dup(io_meta);
|
||||
|
||||
// prepare io for data pool
|
||||
const std::vector<int64_t> & data_pools_v = fs->mds_map.get_data_pools();
|
||||
for(auto i = data_pools_v.begin(); i != data_pools_v.end(); ++i){
|
||||
r = rados.pool_reverse_lookup(*i, &pool_name);
|
||||
for (const auto p : fs->mds_map.get_data_pools()) {
|
||||
r = rados.pool_reverse_lookup(p, &pool_name);
|
||||
if (r < 0) {
|
||||
cerr << "Pool " << pool_id << " named in MDS map not found in RADOS!" << std::endl;
|
||||
return r;
|
||||
@ -181,7 +187,8 @@ int MetaTool::main(string& mode,
|
||||
return r;
|
||||
}
|
||||
|
||||
int MetaTool::process(string& mode, string& ino, string out, string in, bool confirm){
|
||||
int MetaTool::process(string& mode, string& ino, string out, string in, bool confirm)
|
||||
{
|
||||
if (mode == "showm") {
|
||||
return show_meta_info(ino, out);
|
||||
} else if (mode == "showfn") {
|
||||
@ -197,7 +204,8 @@ int MetaTool::process(string& mode, string& ino, string out, string in, bool con
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
int MetaTool::show_fnode(string& ino, string& out) {
|
||||
int MetaTool::show_fnode(string& ino, string& out)
|
||||
{
|
||||
if (ino != "0") {
|
||||
inodeno_t i_ino = conv2hexino(ino.c_str());
|
||||
meta_op op(_debug, out);
|
||||
@ -212,7 +220,8 @@ int MetaTool::show_fnode(string& ino, string& out) {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::amend_fnode(string& in, bool confirm){
|
||||
int MetaTool::amend_fnode(string& in, bool confirm)
|
||||
{
|
||||
meta_op op(_debug, "", in, confirm);
|
||||
meta_op::sub_op* nsop = new meta_op::sub_op(&op);
|
||||
nsop->sub_op_t = meta_op::OP_AMEND_FN;
|
||||
@ -221,7 +230,8 @@ int MetaTool::amend_fnode(string& in, bool confirm){
|
||||
op.push_op(nsop);
|
||||
return op_process(op);
|
||||
}
|
||||
int MetaTool::amend_meta_info(string& ino, string& in, bool confirm){
|
||||
int MetaTool::amend_meta_info(string& ino, string& in, bool confirm)
|
||||
{
|
||||
if (ino != "0" && in != "") {
|
||||
inodeno_t i_ino = conv2hexino(ino.c_str());
|
||||
meta_op op(_debug, "", in, confirm);
|
||||
@ -236,7 +246,8 @@ int MetaTool::amend_meta_info(string& ino, string& in, bool confirm){
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::list_meta_info(string& ino, string& out){
|
||||
int MetaTool::list_meta_info(string& ino, string& out)
|
||||
{
|
||||
if (ino != "0") {
|
||||
inodeno_t i_ino = conv2hexino(ino.c_str());
|
||||
meta_op op(_debug, out);
|
||||
@ -251,7 +262,8 @@ int MetaTool::list_meta_info(string& ino, string& out){
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::show_meta_info(string& ino, string& out){
|
||||
int MetaTool::show_meta_info(string& ino, string& out)
|
||||
{
|
||||
if (ino != "0") {
|
||||
inodeno_t i_ino = conv2hexino(ino.c_str());
|
||||
meta_op op(_debug, out);
|
||||
@ -268,7 +280,8 @@ int MetaTool::show_meta_info(string& ino, string& out){
|
||||
return 0;
|
||||
}
|
||||
|
||||
int MetaTool::op_process(meta_op& op){
|
||||
int MetaTool::op_process(meta_op& op)
|
||||
{
|
||||
int r = 0;
|
||||
while (!op.no_sops()) {
|
||||
if (_debug)
|
||||
@ -304,7 +317,8 @@ int MetaTool::op_process(meta_op& op){
|
||||
return r;
|
||||
}
|
||||
|
||||
int MetaTool::amend_meta(meta_op &op){
|
||||
int MetaTool::amend_meta(meta_op &op)
|
||||
{
|
||||
meta_op::sub_op* sop = op.top_op();
|
||||
auto item = op.inodes.find(sop->ino);
|
||||
auto item_k = op.okeys.find(sop->ino);
|
||||
@ -327,27 +341,32 @@ int MetaTool::amend_meta(meta_op &op){
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MetaTool::inode_meta_t::encode(::ceph::bufferlist& bl, uint64_t features){
|
||||
void MetaTool::inode_meta_t::encode(::ceph::bufferlist& bl, uint64_t features)
|
||||
{
|
||||
::encode(_f, bl);
|
||||
::encode(_t, bl);
|
||||
_i->encode_bare(bl, features);
|
||||
}
|
||||
int MetaTool::_amend_meta(string& k, inode_meta_t& inode_meta, const string& fn, meta_op& op){
|
||||
int MetaTool::_amend_meta(string& k, inode_meta_t& inode_meta, const string& fn, meta_op& op)
|
||||
{
|
||||
JSONParser parser;
|
||||
if (!parser.parse(fn.c_str())) {
|
||||
cout << "Error parsing create user response" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
try {
|
||||
inode_meta.decode_json(&parser);
|
||||
} catch (JSONDecoder::err& e) {
|
||||
cout << "failed to decode JSON input: " << e.what() << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!op.confirm_chg() || op.is_debug()) {
|
||||
cout << "you will amend info of inode ==>: " << std::endl;
|
||||
_show_meta(inode_meta, "");
|
||||
}
|
||||
|
||||
if (!op.confirm_chg()) {
|
||||
cout << "warning: this operation is irreversibl!!!\n"
|
||||
<< " You must confirm that all logs of mds have been flushed!!!\n"
|
||||
@ -355,6 +374,7 @@ int MetaTool::_amend_meta(string& k, inode_meta_t& inode_meta, const string& fn,
|
||||
<< std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
bufferlist bl;
|
||||
inode_meta.encode(bl, features);
|
||||
map<string, bufferlist> to_set;
|
||||
@ -372,7 +392,8 @@ int MetaTool::_amend_meta(string& k, inode_meta_t& inode_meta, const string& fn,
|
||||
to_set.clear();
|
||||
return ret;
|
||||
}
|
||||
int MetaTool::show_fn(meta_op &op){
|
||||
int MetaTool::show_fn(meta_op &op)
|
||||
{
|
||||
meta_op::sub_op* sop = op.top_op();
|
||||
auto item = op.inodes.find(sop->ino);
|
||||
if (item != op.inodes.end()) {
|
||||
@ -407,7 +428,7 @@ int MetaTool::_show_fn(inode_meta_t& inode_meta, const string& fn)
|
||||
string oid = obj_name(inode_meta.get_meta()->inode.ino, frag);
|
||||
int ret = io_meta.omap_get_header(oid, &hbl);
|
||||
if (ret < 0) {
|
||||
std::cerr << __func__ << " : cantn't find oid("<< oid << ")" << std::endl;
|
||||
std::cerr << __func__ << " : can't find oid("<< oid << ")" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
{
|
||||
@ -437,8 +458,7 @@ int MetaTool::_show_fn(inode_meta_t& inode_meta, const string& fn)
|
||||
if (o) {
|
||||
o << ds.str();
|
||||
o.close();
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
cout << "out to file (" << fn << ") failed" << std::endl;
|
||||
cout << ds.str() << std::endl;
|
||||
}
|
||||
@ -446,12 +466,14 @@ int MetaTool::_show_fn(inode_meta_t& inode_meta, const string& fn)
|
||||
std::cout << ds.str() << std::endl;
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::amend_fn(meta_op &op){
|
||||
int MetaTool::amend_fn(meta_op &op)
|
||||
{
|
||||
if (_amend_fn(op.infile(), op.confirm_chg()) < 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::_amend_fn(const string& fn, bool confirm){
|
||||
int MetaTool::_amend_fn(const string& fn, bool confirm)
|
||||
{
|
||||
JSONParser parser;
|
||||
if (!parser.parse(fn.c_str())) {
|
||||
cout << "Error parsing create user response : " << fn << std::endl;
|
||||
@ -496,7 +518,8 @@ int MetaTool::_amend_fn(const string& fn, bool confirm){
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::show_meta(meta_op &op){
|
||||
int MetaTool::show_meta(meta_op &op)
|
||||
{
|
||||
meta_op::sub_op* sop = op.top_op();
|
||||
auto item = op.inodes.find(sop->ino);
|
||||
if (item != op.inodes.end()) {
|
||||
@ -517,7 +540,8 @@ int MetaTool::show_meta(meta_op &op){
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::_show_meta(inode_meta_t& inode_meta, const string& fn){
|
||||
int MetaTool::_show_meta(inode_meta_t& inode_meta, const string& fn)
|
||||
{
|
||||
std::stringstream ds;
|
||||
std::string format = "json";
|
||||
InodeStore& inode_data = *inode_meta.get_meta();
|
||||
@ -553,8 +577,7 @@ int MetaTool::_show_meta(inode_meta_t& inode_meta, const string& fn){
|
||||
if (o) {
|
||||
o << ds.str();
|
||||
o.close();
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
cout << "out to file (" << fn << ") failed" << std::endl;
|
||||
cout << ds.str() << std::endl;
|
||||
}
|
||||
@ -563,7 +586,8 @@ int MetaTool::_show_meta(inode_meta_t& inode_meta, const string& fn){
|
||||
std::cout << ds.str() << std::endl;
|
||||
return 0;
|
||||
}
|
||||
int MetaTool::list_meta(meta_op &op){
|
||||
int MetaTool::list_meta(meta_op &op)
|
||||
{
|
||||
meta_op::sub_op* sop = op.top_op();
|
||||
|
||||
bool list_all = false;
|
||||
@ -598,7 +622,7 @@ int MetaTool::list_meta(meta_op &op){
|
||||
bufferlist hbl;
|
||||
int ret = io_meta.omap_get_header(oid, &hbl);
|
||||
if (ret < 0) {
|
||||
std::cerr << __func__ << " : cantn't find it, maybe it (ino:"<< sop->ino<< ")isn't a normal dir!" << std::endl;
|
||||
std::cerr << __func__ << " : can't find it, maybe it (ino:"<< sop->ino<< ")isn't a normal dir!" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -643,7 +667,7 @@ int MetaTool::list_meta(meta_op &op){
|
||||
op.push_op(nsop);
|
||||
return 1;
|
||||
} else {
|
||||
cerr << __func__ << "cann't find obj(" << oid << ") ,miss ancestors or miss some objs??? " << std::endl;
|
||||
cerr << __func__ << "can't find obj(" << oid << ") ,miss ancestors or miss some objs??? " << std::endl;
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
@ -691,7 +715,6 @@ int MetaTool::list_meta(meta_op &op){
|
||||
snapid_t last;
|
||||
dentry_key_t::decode_helper(p->first, dname, last);
|
||||
if (_debug)
|
||||
|
||||
last_dname = dname;
|
||||
try {
|
||||
if (!list_all) {
|
||||
@ -748,7 +771,8 @@ int MetaTool::list_meta(meta_op &op){
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
unsigned long long MetaTool::conv2hexino(const char* ino){
|
||||
unsigned long long MetaTool::conv2hexino(const char* ino)
|
||||
{
|
||||
unsigned long long iino = 0;
|
||||
std::stringstream conv;
|
||||
conv << ino;
|
||||
@ -757,7 +781,8 @@ unsigned long long MetaTool::conv2hexino(const char* ino){
|
||||
return iino;
|
||||
}
|
||||
|
||||
int MetaTool::file_meta(meta_op &op){
|
||||
int MetaTool::file_meta(meta_op &op)
|
||||
{
|
||||
int r = 0;
|
||||
if (op.top_op()->sub_ino_t == meta_op::INO_DIR) {
|
||||
r = _file_meta(op, io_meta);
|
||||
@ -784,7 +809,8 @@ int MetaTool::file_meta(meta_op &op){
|
||||
return -1;
|
||||
}
|
||||
|
||||
int MetaTool::_file_meta(meta_op &op, librados::IoCtx& io){
|
||||
int MetaTool::_file_meta(meta_op &op, librados::IoCtx& io)
|
||||
{
|
||||
inodeno_t ino = op.top_op()->ino;
|
||||
std::string oid = obj_name(ino);
|
||||
bufferlist pointer_bl;
|
||||
@ -847,7 +873,8 @@ int MetaTool::_file_meta(meta_op &op, librados::IoCtx& io){
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
std::string MetaTool::obj_name(inodeno_t ino, uint64_t offset, const char *suffix) const{
|
||||
std::string MetaTool::obj_name(inodeno_t ino, uint64_t offset, const char *suffix) const
|
||||
{
|
||||
char name[60];
|
||||
snprintf(name, sizeof(name), "%llx.%08llx%s", (long long unsigned)ino, (long long unsigned)offset, suffix ? suffix : "");
|
||||
return std::string(name);
|
||||
@ -876,7 +903,8 @@ int MetaTool::show_child(std::string_view key,
|
||||
const std::set<snapid_t> *snaps,
|
||||
bool *force_dirty,
|
||||
inodeno_t sp_ino,
|
||||
meta_op* op){
|
||||
meta_op* op)
|
||||
{
|
||||
bufferlist::const_iterator q = bl.cbegin();
|
||||
|
||||
snapid_t first;
|
||||
@ -897,7 +925,7 @@ int MetaTool::show_child(std::string_view key,
|
||||
}
|
||||
|
||||
// CDentry *dn = NULL;
|
||||
// look for existing dentry for _last_ snap, cann't process snap of obj
|
||||
// look for existing dentry for _last_ snap, can't process snap of obj
|
||||
//if *(stale)
|
||||
// dn = lookup_exact_snap(dname, last);
|
||||
//else
|
||||
@ -923,9 +951,7 @@ int MetaTool::show_child(std::string_view key,
|
||||
inode_data.decode_bare(q);
|
||||
|
||||
std::stringstream ds;
|
||||
//std::string format = "json-pretty";
|
||||
std::string format = "json";
|
||||
// Formatter f = new JSONFormatter(false);
|
||||
Formatter* f = Formatter::create(format);
|
||||
f->enable_line_break();
|
||||
f->open_object_section("meta");
|
||||
@ -967,4 +993,3 @@ int MetaTool::show_child(std::string_view key,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
|
||||
// vim: ts=8 sw=2 smarttab
|
||||
#ifndef METATOOL_H__
|
||||
#define METATOOL_H__
|
||||
|
||||
@ -60,10 +62,12 @@ class MetaTool : public MDSUtility
|
||||
OP_AMEND_FN,
|
||||
OP_NO
|
||||
} op_type;
|
||||
|
||||
typedef enum {
|
||||
INO_DIR = 0,
|
||||
INO_F
|
||||
} ino_type;
|
||||
|
||||
static string op_type_name(op_type& t) {
|
||||
string name;
|
||||
switch (t) {
|
||||
@ -256,6 +260,7 @@ class MetaTool : public MDSUtility
|
||||
MetaTool(bool debug=false):
|
||||
_debug(debug) {}
|
||||
~MetaTool() {}
|
||||
|
||||
int main(string& mode,
|
||||
string& rank_str,
|
||||
string& minfo,
|
||||
|
@ -1,3 +1,5 @@
|
||||
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
|
||||
// vim: ts=8 sw=2 smarttab
|
||||
#include <include/types.h>
|
||||
#include "common/config.h"
|
||||
#include "common/ceph_argparse.h"
|
||||
@ -15,7 +17,8 @@ using std::string;
|
||||
using namespace std;
|
||||
static string version = "cephfs-meta-injection v1.1";
|
||||
|
||||
int main(int argc, const char **argv){
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
vector<const char*> args;
|
||||
argv_to_vec(argc, argv, args);
|
||||
env_to_vec(args);
|
||||
@ -59,8 +62,7 @@ int main(int argc, const char **argv){
|
||||
} catch(exception &e) {
|
||||
cerr << "error : " << e.what() << std::endl;
|
||||
return -1;
|
||||
}
|
||||
catch(...){
|
||||
} catch(...) {
|
||||
cout << "param error" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user