From df082c931e5a6197b7fc98d5d9988364387595aa Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Thu, 28 Mar 2019 09:25:34 -0700 Subject: [PATCH] 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 Change-Id: Iaf9c78a1c1d6045070e7625c6a54ab3d227c8ea7 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/449498 Tested-by: SPDK CI Jenkins Reviewed-by: Paul Luse Reviewed-by: Shuhei Matsumoto Reviewed-by: Changpeng Liu --- lib/reduce/reduce.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/reduce/reduce.c b/lib/reduce/reduce.c index 77df471c4..27dbf19f6 100644 --- a/lib/reduce/reduce.c +++ b/lib/reduce/reduce.c @@ -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 */); }