From: Sage Weil Date: Fri, 8 Jan 2016 16:16:22 +0000 (-0500) Subject: os/bluestore: make fiemap return valid result beyond EOF X-Git-Tag: v10.0.3~88^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b1f76f7d7903e036813cfb7633d5375e1a196147;p=ceph.git os/bluestore: make fiemap return valid result beyond EOF Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index ca833de1cf91c..915a9086dedba 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -2464,22 +2464,22 @@ int BlueStore::fiemap( } _dump_onode(o); + dout(20) << __func__ << " " << offset << "~" << len << " size " + << o->onode.size << dendl; + + map::iterator bp, bend; + map::iterator op, oend; + if (offset == len && offset == 0) len = o->onode.size; if (offset > o->onode.size) - return 0; + goto out; if (offset + len > o->onode.size) { len = o->onode.size - offset; } - dout(20) << __func__ << " " << offset << "~" << len << " size " - << o->onode.size << dendl; - - map::iterator bp, bend; - map::iterator op, oend; - // loop over overlays and data fragments. overlays take precedence. bend = o->onode.block_map.end(); bp = o->onode.block_map.lower_bound(offset); @@ -2542,6 +2542,7 @@ int BlueStore::fiemap( continue; } + out: ::encode(m, bl); dout(20) << __func__ << " " << offset << "~" << len << " size = 0 (" << m << ")" << dendl;