]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test: Add undocumented corrupt-size for testing
authorDavid Zafman <dzafman@redhat.com>
Fri, 30 Jun 2017 00:13:50 +0000 (17:13 -0700)
committerNathan Cutler <ncutler@suse.com>
Tue, 23 Jan 2018 10:09:17 +0000 (11:09 +0100)
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit c0606b9eea977074b560b44c4cd1a3d8e8bc3e0a)
(cherry picked from commit feb02bdd64531e9098dca580b673e3886ba922b1)

src/tools/ceph_objectstore_tool.cc

index 9bf5030e46de094b89c6a5b4f913da879aa153d0..50ff450a9fb1e7d3ccc5e0bff202b2de032cb03e 100644 (file)
@@ -1881,7 +1881,7 @@ int print_obj_info(ObjectStore *store, coll_t coll, ghobject_t &ghobj, Formatter
 }
 
 int set_size(ObjectStore *store, coll_t coll, ghobject_t &ghobj, uint64_t setsize, Formatter* formatter,
-            ObjectStore::Sequencer &osr)
+            ObjectStore::Sequencer &osr, bool corrupt)
 {
   if (ghobj.hobj.is_snapdir()) {
     cerr << "Can't set the size of a snapdir" << std::endl;
@@ -1958,7 +1958,9 @@ int set_size(ObjectStore *store, coll_t coll, ghobject_t &ghobj, uint64_t setsiz
     ::encode(oi, attr);
     ObjectStore::Transaction t;
     t.setattr(coll, ghobj, OI_ATTR, attr);
-    t.truncate(coll, ghobj, setsize);
+    // Only modify object info if we want to corrupt it
+    if (!corrupt)
+      t.truncate(coll, ghobj, setsize);
     if (is_snap) {
       bufferlist snapattr;
       snapattr.clear();
@@ -3081,7 +3083,9 @@ int main(int argc, char **argv)
        }
        ret = print_obj_info(fs, coll, ghobj, formatter);
        goto out;
-      } else if (objcmd == "set-size") {
+      } else if (objcmd == "set-size" || objcmd == "corrupt-size") {
+       // Undocumented testing feature
+       bool corrupt = (objcmd == "corrupt-size");
         // Extra arg
        if (vm.count("arg1") == 0 || vm.count("arg2")) {
          usage(desc);
@@ -3094,7 +3098,7 @@ int main(int argc, char **argv)
          goto out;
        }
        uint64_t size = atoll(arg1.c_str());
-       ret = set_size(fs, coll, ghobj, size, formatter, *osr);
+       ret = set_size(fs, coll, ghobj, size, formatter, *osr, corrupt);
        goto out;
       } else if (objcmd == "clear-snapset") {
         // UNDOCUMENTED: For testing zap SnapSet