]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/memstore: deep copy on partial bufferptrs on setattrs
authorRongqi Sun <sunrongqi@huawei.com>
Wed, 13 Dec 2023 03:30:11 +0000 (11:30 +0800)
committerRongqi Sun <sunrongqi@huawei.com>
Wed, 13 Dec 2023 03:30:11 +0000 (11:30 +0800)
Signed-off-by: Rongqi Sun <sunrongqi@huawei.com>
src/os/memstore/MemStore.cc

index 99e99dcba0413998cc892420fa1328e3629033be..35711517708c7b7d2967b65ff1f12bd039af4ce2 100644 (file)
@@ -1131,8 +1131,14 @@ int MemStore::_setattrs(const coll_t& cid, const ghobject_t& oid,
   if (!o)
     return -ENOENT;
   std::lock_guard lock{o->xattr_mutex};
-  for (auto p = aset.begin(); p != aset.end(); ++p)
-    o->xattr[p->first] = p->second;
+  for (auto p = aset.begin(); p != aset.end(); ++p) {
+    if (p->second.is_partial()) {
+      o->xattr[p->first] = bufferptr(p->second.c_str(), p->second.length());
+    } else {
+      o->xattr[p->first] = p->second;
+    }
+  }
+
   return 0;
 }