@@ -3599,6 +3599,9 @@ void usage(po::options_description &desc)
35993599 cerr << " ceph-objectstore-tool ... <object> set-size" << std::endl;
36003600 cerr << " ceph-objectstore-tool ... <object> clear-data-digest" << std::endl;
36013601 cerr << " ceph-objectstore-tool ... <object> remove-clone-metadata <cloneid>" << std::endl;
3602+ cerr << " ceph-objectstore-tool ... <object> clear-snapset "
3603+ " [(corrupt|seq|snaps|clones|clone_size|clone_overlap|size)]"
3604+ << std::endl;
36023605 cerr << std::endl;
36033606 cerr << " <object> can be a JSON object description as displayed" << std::endl;
36043607 cerr << " by --op list." << std::endl;
@@ -3609,6 +3612,19 @@ void usage(po::options_description &desc)
36093612 cerr << std::endl;
36103613 cerr << " The optional [file] argument will read stdin or write stdout" << std::endl;
36113614 cerr << " if not specified or if '-' specified." << std::endl;
3615+ cerr << std::endl;
3616+ cerr << " clear-snapset options:" << std::endl;
3617+ cerr << " clear-snapset : by default, clear clones, "
3618+ " clone_size and clone_overlap"
3619+ << std::endl;
3620+ cerr << " clear-snapset corrupt : clear entire snapset" << std::endl;
3621+ cerr << " clear-snapset seq : clear snapset.seq" << std::endl;
3622+ cerr << " clear-snapset clone_size : clear clone_size" << std::endl;
3623+ cerr << " clear-snapset clone_overlap : clear clone_overlap" << std::endl;
3624+ cerr << " clear-snapset clones : clear clones" << std::endl;
3625+ cerr << " clear-snapset snaps : clear clone_snaps" << std::endl;
3626+ cerr << " clear-snapset size : break all clone sizes by adding 1"
3627+ << std::endl;
36123628}
36133629
36143630bool ends_with (const string& check, const string& ending)
@@ -4691,9 +4707,22 @@ int main(int argc, char **argv)
46914707 ret = clear_data_digest (fs.get (), coll, ghobj);
46924708 goto out;
46934709 } else if (objcmd == " clear-snapset" ) {
4694- // UNDOCUMENTED: For testing zap SnapSet
4695- // IGNORE extra args since not in usage anyway
4696- if (!ghobj.hobj .has_snapset ()) {
4710+ if (vm.count (" arg1" ) == 0 ) {
4711+ usage (desc);
4712+ ret = 1 ;
4713+ goto out;
4714+ }
4715+
4716+ if (vm.count (" arg2" ) != 0 ) {
4717+ if (arg2 != " corrupt" && arg2 != " seq" && arg2 != " snaps" &&
4718+ arg2 != " clones" && arg2 != " clone_size" &&
4719+ arg2 != " clone_overlap" && arg2 != " size" ) {
4720+ usage (desc);
4721+ ret = 1 ;
4722+ goto out;
4723+ }
4724+ }
4725+ if (!ghobj.hobj .has_snapset ()) {
46974726 cerr << " '" << objcmd << " ' requires a head or snapdir object" << std::endl;
46984727 ret = 1 ;
46994728 goto out;
0 commit comments