[thin_generate_metadata] Support setting transaction id and metadata snapshots
This commit is contained in:
parent
524de134a4
commit
ef8e94b22c
@ -40,6 +40,9 @@ namespace {
|
|||||||
METADATA_OP_CREATE_THIN,
|
METADATA_OP_CREATE_THIN,
|
||||||
METADATA_OP_CREATE_SNAP,
|
METADATA_OP_CREATE_SNAP,
|
||||||
METADATA_OP_DELETE_DEV,
|
METADATA_OP_DELETE_DEV,
|
||||||
|
METADATA_OP_SET_TRANSACTION_ID,
|
||||||
|
METADATA_OP_RESERVE_METADATA_SNAP,
|
||||||
|
METADATA_OP_RELEASE_METADATA_SNAP,
|
||||||
METADATA_OP_LAST
|
METADATA_OP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -57,6 +60,7 @@ namespace {
|
|||||||
block_address nr_data_blocks;
|
block_address nr_data_blocks;
|
||||||
optional<thin_dev_t> dev_id;
|
optional<thin_dev_t> dev_id;
|
||||||
optional<thin_dev_t> origin;
|
optional<thin_dev_t> origin;
|
||||||
|
optional<uint64_t> trans_id;
|
||||||
optional<string> output;
|
optional<string> output;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -88,6 +92,11 @@ namespace {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (op == METADATA_OP_SET_TRANSACTION_ID && !trans_id) {
|
||||||
|
cerr << "no transaction id provided." << endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,6 +124,15 @@ namespace {
|
|||||||
case flags::METADATA_OP_DELETE_DEV:
|
case flags::METADATA_OP_DELETE_DEV:
|
||||||
pool->del(*fs.dev_id);
|
pool->del(*fs.dev_id);
|
||||||
break;
|
break;
|
||||||
|
case flags::METADATA_OP_SET_TRANSACTION_ID:
|
||||||
|
pool->set_transaction_id(*fs.trans_id);
|
||||||
|
break;
|
||||||
|
case flags::METADATA_OP_RESERVE_METADATA_SNAP:
|
||||||
|
pool->reserve_metadata_snap();
|
||||||
|
break;
|
||||||
|
case flags::METADATA_OP_RELEASE_METADATA_SNAP:
|
||||||
|
pool->release_metadata_snap();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -142,6 +160,9 @@ thin_generate_metadata_cmd::usage(std::ostream &out) const
|
|||||||
<< " {--create-thin} <dev-id>\n"
|
<< " {--create-thin} <dev-id>\n"
|
||||||
<< " {--create-snap} <dev-id>\n"
|
<< " {--create-snap} <dev-id>\n"
|
||||||
<< " {--delete} <dev-id>\n"
|
<< " {--delete} <dev-id>\n"
|
||||||
|
<< " {--reserve-metadata-snap}\n"
|
||||||
|
<< " {--release-metadata-snap}\n"
|
||||||
|
<< " {--set-transaction-id} <tid>\n"
|
||||||
<< " {--data-block-size} <block size>\n"
|
<< " {--data-block-size} <block size>\n"
|
||||||
<< " {--nr-data-blocks} <nr>\n"
|
<< " {--nr-data-blocks} <nr>\n"
|
||||||
<< " {--origin} <origin-id>\n"
|
<< " {--origin} <origin-id>\n"
|
||||||
@ -163,6 +184,9 @@ thin_generate_metadata_cmd::run(int argc, char **argv)
|
|||||||
{ "create-thin", required_argument, NULL, 3 },
|
{ "create-thin", required_argument, NULL, 3 },
|
||||||
{ "create-snap", required_argument, NULL, 4 },
|
{ "create-snap", required_argument, NULL, 4 },
|
||||||
{ "delete", required_argument, NULL, 5 },
|
{ "delete", required_argument, NULL, 5 },
|
||||||
|
{ "set-transaction-id", required_argument, NULL, 6 },
|
||||||
|
{ "reserve-metadata-snap", no_argument, NULL, 7 },
|
||||||
|
{ "release-metadata-snap", no_argument, NULL, 8 },
|
||||||
{ "data-block-size", required_argument, NULL, 101 },
|
{ "data-block-size", required_argument, NULL, 101 },
|
||||||
{ "nr-data-blocks", required_argument, NULL, 102 },
|
{ "nr-data-blocks", required_argument, NULL, 102 },
|
||||||
{ "origin", required_argument, NULL, 401 },
|
{ "origin", required_argument, NULL, 401 },
|
||||||
@ -203,6 +227,19 @@ thin_generate_metadata_cmd::run(int argc, char **argv)
|
|||||||
fs.dev_id = parse_uint64(optarg, "device id");
|
fs.dev_id = parse_uint64(optarg, "device id");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
fs.op = flags::METADATA_OP_SET_TRANSACTION_ID;
|
||||||
|
fs.trans_id = parse_uint64(optarg, "transaction id");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
fs.op = flags::METADATA_OP_RESERVE_METADATA_SNAP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8:
|
||||||
|
fs.op = flags::METADATA_OP_RELEASE_METADATA_SNAP;
|
||||||
|
break;
|
||||||
|
|
||||||
case 101:
|
case 101:
|
||||||
fs.data_block_size = parse_uint64(optarg, "data block size");
|
fs.data_block_size = parse_uint64(optarg, "data block size");
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user