lib/ftl: Fix padding size calculation

Padding size calculation should take into account
already acquired write buffer entries in case
number of blocks left for closing band is less than
write buffer size.

Change-Id: I0f9c9bc94eb5a4736eede30ec424c81103e1256f
Signed-off-by: Wojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463525
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Wojciech Malikowski 2019-07-29 11:32:12 -04:00 committed by Jim Harris
parent 7a260a5e99
commit b08337c216

View File

@ -775,8 +775,10 @@ ftl_wptr_pad_band(struct ftl_wptr *wptr)
size_t blocks_left, rwb_size, pad_size;
blocks_left = ftl_wptr_user_lbks_left(wptr);
assert(size <= blocks_left);
assert(blocks_left % dev->xfer_size == 0);
rwb_size = ftl_rwb_size(dev->rwb) - size;
pad_size = spdk_min(blocks_left, rwb_size);
pad_size = spdk_min(blocks_left - size, rwb_size);
/* Pad write buffer until band is full */
ftl_rwb_pad(dev, pad_size);