reduce: fix chunk_is_compressed calculation

Stupid bug - a chunk is compressed when the number
of io_units for the compressed data does *not* equal
the number of io_units per chunk.

Paul found this during some of his initial DPDK
framework integration testing.  I have some better
unit tests coming up to test this further, but want
to get this obvious fix in for now.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Iaf9c78a1c1d6045070e7625c6a54ab3d227c8ea7

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/449498
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Jim Harris 2019-03-28 09:25:34 -07:00 committed by Changpeng Liu
parent fb51565a59
commit df082c931e

View File

@ -994,7 +994,7 @@ _reduce_vol_write_chunk(struct spdk_reduce_vol_request *req, reduce_request_fn n
req->chunk = _reduce_vol_get_chunk_map(vol, req->chunk_map_index);
req->num_io_units = spdk_divide_round_up(compressed_size,
vol->params.backing_io_unit_size);
req->chunk_is_compressed = (req->num_io_units == vol->backing_io_units_per_chunk);
req->chunk_is_compressed = (req->num_io_units != vol->backing_io_units_per_chunk);
req->chunk->compressed_size =
req->chunk_is_compressed ? compressed_size : vol->params.chunk_size;
@ -1191,7 +1191,7 @@ _reduce_vol_read_chunk(struct spdk_reduce_vol_request *req, reduce_request_fn ne
assert(req->chunk->compressed_size == vol->params.chunk_size);
req->num_io_units = spdk_divide_round_up(req->chunk->compressed_size,
vol->params.backing_io_unit_size);
req->chunk_is_compressed = (req->num_io_units == vol->backing_io_units_per_chunk);
req->chunk_is_compressed = (req->num_io_units != vol->backing_io_units_per_chunk);
_issue_backing_ops(req, vol, next_fn, false /* read */);
}