]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/osd/ECTransaction.cc
import 15.2.0 Octopus source
[ceph.git] / ceph / src / osd / ECTransaction.cc
index ee791d633c6ea8ecdba5005cae452626228d6057..1eec367c976c54941d47c3fadec69288d996191e 100644 (file)
@@ -105,7 +105,8 @@ void ECTransaction::generate_transactions(
   map<shard_id_t, ObjectStore::Transaction> *transactions,
   set<hobject_t> *temp_added,
   set<hobject_t> *temp_removed,
-  DoutPrefixProvider *dpp)
+  DoutPrefixProvider *dpp,
+  const ceph_release_t require_osd_release)
 {
   ceph_assert(written_map);
   ceph_assert(transactions);
@@ -184,7 +185,7 @@ void ECTransaction::generate_transactions(
        entry->mod_desc.update_snaps(op.updated_snaps->first);
       }
 
-      map<string, boost::optional<bufferlist> > xattr_rollback;
+      map<string, std::optional<bufferlist> > xattr_rollback;
       ceph_assert(hinfo);
       bufferlist old_hinfo;
       encode(*hinfo, old_hinfo);
@@ -200,7 +201,7 @@ void ECTransaction::generate_transactions(
        if (op.truncate->first != op.truncate->second) {
          op.truncate->first = op.truncate->second;
        } else {
-         op.truncate = boost::none;
+         op.truncate = std::nullopt;
        }
 
        op.delete_first = true;
@@ -218,7 +219,7 @@ void ECTransaction::generate_transactions(
       }
 
       if (op.delete_first) {
-       /* We also want to remove the boost::none entries since
+       /* We also want to remove the std::nullopt entries since
           * the keys already won't exist */
        for (auto j = op.attr_updates.begin();
             j != op.attr_updates.end();
@@ -264,9 +265,15 @@ void ECTransaction::generate_transactions(
        [&](const PGTransaction::ObjectOperation::Init::None &) {},
        [&](const PGTransaction::ObjectOperation::Init::Create &op) {
          for (auto &&st: *transactions) {
-           st.second.touch(
-             coll_t(spg_t(pgid, st.first)),
-             ghobject_t(oid, ghobject_t::NO_GEN, st.first));
+           if (require_osd_release >= ceph_release_t::octopus) {
+             st.second.create(
+               coll_t(spg_t(pgid, st.first)),
+               ghobject_t(oid, ghobject_t::NO_GEN, st.first));
+           } else {
+             st.second.touch(
+               coll_t(spg_t(pgid, st.first)),
+               ghobject_t(oid, ghobject_t::NO_GEN, st.first));
+           }
          }
        },
        [&](const PGTransaction::ObjectOperation::Init::Clone &op) {
@@ -332,13 +339,13 @@ void ECTransaction::generate_transactions(
                xattr_rollback.insert(
                  make_pair(
                    j.first,
-                   boost::optional<bufferlist>(citer->second)));
+                   std::optional<bufferlist>(citer->second)));
              } else {
                // won't overwrite anything we put in earlier
                xattr_rollback.insert(
                  make_pair(
                    j.first,
-                   boost::none));
+                   std::nullopt));
              }
            }
            if (j.second) {