Commit 32e0dd48 authored by Changpeng Liu's avatar Changpeng Liu Committed by Jim Harris
Browse files

lib/ublk: fix overflow of MAX DISCARD|WRITE ZEROES settings



The configuration of maximum discard|write zeroes sectors
are unsigned int type, we should not use uint64 type to
to calculate it , here just use a fixed 16MiB value,
this is the same as vhost-blk settings.

Fix #3623.

Change-Id: I2bdf980b4c7febf30e887e7394ff03c4bbc29285
Signed-off-by: default avatarChangpeng Liu <changpeliu@tencent.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/25762


Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarGangCao <gang.cao@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
parent b6db1af7
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1745,11 +1745,13 @@ ublk_info_param_init(struct spdk_ublk_dev *ublk)
	if (spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) {
		uparams.types |= UBLK_PARAM_TYPE_DISCARD;
		uparams.discard.discard_alignment = sectors_per_block;
		uparams.discard.max_discard_sectors = num_blocks * sectors_per_block;
		/* 32768 sectors for 16MiB */
		uparams.discard.max_discard_sectors = 32768;
		uparams.discard.max_discard_segments = 1;
		uparams.discard.discard_granularity = blk_size;
		if (spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_WRITE_ZEROES)) {
			uparams.discard.max_write_zeroes_sectors = num_blocks * sectors_per_block;
			/* 32768 sectors for 16MiB */
			uparams.discard.max_write_zeroes_sectors = 32768;
		}
	}