Spdk/test/unit/lib
Jim Harris 59b75da71e blob: use uint64_t for unmap and write_zeroes lba count
Previous patches (5363eb3c) tried to work around the
32-bit unmap and write_zeroes LBA counts by breaking
up larger operations into smaller chunks of max size
UINT32_MAX lba chunks.

But some SSDs may just ignore unmap operations that
are not aligned to full physical block boundaries -
and a UINT32_MAX lba unmap on a 512B logical /
4KiB physical SSD would not be aligned.  If the SSD
decided to ignore the unmap/deallocate (which it is
allowed to do according to NVMe spec), we could end
up with not unmapping *any* blocks.  Probably SSDs
should always be trying hard to unmap as many
blocks as possible, but let's not try to depend on
that in blobstore.

So one option would be to break them into chunks
close to UINT32_MAX which are still aligned to
4KiB boundaries.  But the better fix is to just
change the unmap and write_zeroes APIs to take
64-bit arguments, and then we can avoid the
chunking altogether.

Fixes issue #2190.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I23998e493a764d466927c3520c7a8c7f943000a6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9737
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Xiaodong Liu <xiaodong.liu@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Dong Yi <dongx.yi@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2022-06-30 13:32:26 -04:00
..
accel test/accel: add UT for test_spdk_accel_submit_copy_crc32c() 2022-06-30 13:32:26 -04:00
bdev bdev/nvme: admin_passthru() submits to the first found unfailed ctrlr 2022-06-30 13:32:26 -04:00
blob blob: use uint64_t for unmap and write_zeroes lba count 2022-06-30 13:32:26 -04:00
blobfs test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
dma dma: Introduce memory domain 2021-08-20 07:26:10 +00:00
env_dpdk test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
event scheduler/dynamic: don't adjust tsc too much for very busy cores 2022-06-30 13:32:25 -04:00
ftl test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
idxd test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
init nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
ioat test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
iscsi scsi: Manage LUNs per device by not fixed size array but linked list 2022-06-30 13:32:26 -04:00
json test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
jsonrpc test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
log test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
lvol test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
notify test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme ut/nvme_qpair: add missing mutex init 2022-06-30 13:32:25 -04:00
nvmf nvmf/vfio-user: check SQ doorbell is valid or not before use 2022-06-30 13:32:25 -04:00
reduce test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
rpc ut/rpc: wrap syscalls using spdk.mock.unittest.mk 2022-06-30 13:32:25 -04:00
scsi scsi: SCSI device supports 256 LUNs at the maximum by default 2022-06-30 13:32:26 -04:00
sock test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
thread test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
util test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
vhost test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
json_mock.c ut/json_mock: Add spdk_json_write_string_fmt() 2021-02-09 11:29:53 +00:00
Makefile unittest/rpc: add rpc unittest 2021-09-06 09:55:33 +00:00