]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/ObjectStore: fix bug about calc largest_data_off_in_data_bl.
authorJianpeng Ma <jianpeng.ma@intel.com>
Fri, 13 May 2016 23:33:23 +0000 (07:33 +0800)
committerSage Weil <sage@redhat.com>
Thu, 3 Nov 2016 16:08:25 +0000 (12:08 -0400)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/os/ObjectStore.h

index 0d4739c2fddd6f85680eaaaac7012c2c2e08c608..f99dc0e1e2d123e7b8418c2a3f90c01b18671b92 100644 (file)
@@ -827,7 +827,8 @@ public:
        return data.largest_data_off_in_data_bl +
          sizeof(__u8) +      // encode struct_v
          sizeof(__u8) +      // encode compat_v
-         sizeof(__u32);      // encode len
+         sizeof(__u32) +     // encode len
+         sizeof(__u32);      // data_bl len
       }
       return 0;  // none
     }
@@ -1044,6 +1045,7 @@ public:
      */
     void write(const coll_t& cid, const ghobject_t& oid, uint64_t off, uint64_t len,
               const bufferlist& write_data, uint32_t flags = 0) {
+      uint32_t orig_len = data_bl.length();
       Op* _op = _get_next_op();
       _op->op = OP_WRITE;
       _op->cid = _get_coll_id(cid);
@@ -1057,7 +1059,7 @@ public:
       if (write_data.length() > data.largest_data_len) {
        data.largest_data_len = write_data.length();
        data.largest_data_off = off;
-       data.largest_data_off_in_data_bl = data_bl.length() + sizeof(__u32);  // we are about to
+       data.largest_data_off_in_data_bl = orig_len + sizeof(__u32);  // we are about to
       }
       data.ops++;
     }