]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Fix clone problem
authorHaomai Wang <haomaiwang@gmail.com>
Sat, 3 May 2014 04:53:06 +0000 (12:53 +0800)
committerSage Weil <sage@inktank.com>
Tue, 6 May 2014 20:06:27 +0000 (13:06 -0700)
When clone happened, the origin header also will be updated in GenericObjectMap,
so the new header wraper(StripObjectHeader) should be updated too.

Fix #8282
Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
(cherry picked from commit 3aee1e0ffe0583f74c02d9c9e86c7fb267f3515c)

src/os/KeyValueStore.cc

index cc117fa3a6718b49e61bc0b6cb537317fe8ea149..fb459b226b86f23a25699cfab329a71649e94df3 100644 (file)
@@ -204,11 +204,14 @@ void StripObjectMap::clone_wrap(StripObjectHeader &old_header,
 
   if (target_header)
     *target_header = old_header;
+  if (origin_header)
+    *origin_header = old_header;
 
   clone(old_header.header, cid, oid, t, &new_origin_header,
         &target_header->header);
 
-  old_header.header = new_origin_header;
+  if(origin_header)
+    origin_header->header = new_origin_header;
 
   if (target_header) {
     target_header->oid = oid;