]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Fix keyvaluestore fiemap bug
authorHaomai Wang <haomaiwang@gmail.com>
Wed, 4 Jun 2014 04:58:07 +0000 (12:58 +0800)
committerroot <root@ceph-test.(none)>
Tue, 26 Aug 2014 04:28:19 +0000 (04:28 +0000)
The result of fiemap is wrong and the offset get from
"StripObjectMap::file_to_extents" need to multiply by sequence number

Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
src/os/KeyValueStore.cc

index d9cdd05c0646dff5c519993b635f82b1a208f015..f9a912abe99bdddb51abe4a8f632021e04915519 100644 (file)
@@ -1673,7 +1673,8 @@ int KeyValueStore::fiemap(coll_t cid, const ghobject_t& oid,
   map<uint64_t, uint64_t> m;
   for (vector<StripObjectMap::StripExtent>::iterator iter = extents.begin();
        iter != extents.end(); ++iter) {
-    m[iter->offset] = iter->len;
+    uint64_t off = iter->no * header.strip_size + iter->offset;
+    m[off] = iter->len;
   }
   ::encode(m, bl);
   return 0;