diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 153f24018..d106fa0c2 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -742,6 +742,11 @@ spdk_bdev_has_write_cache(const struct spdk_bdev *bdev) static bool spdk_bdev_io_valid(struct spdk_bdev *bdev, uint64_t offset, uint64_t nbytes) { + /* Return failure if offset is not a multiple of bdev->blocklen */ + if (offset % bdev->blocklen) { + return false; + } + /* Return failure if nbytes is not a multiple of bdev->blocklen */ if (nbytes % bdev->blocklen) { return false; diff --git a/test/unit/lib/bdev/bdev.c/bdev_ut.c b/test/unit/lib/bdev/bdev.c/bdev_ut.c index 9a83d5b31..c1f82de20 100644 --- a/test/unit/lib/bdev/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/bdev.c/bdev_ut.c @@ -316,8 +316,7 @@ io_valid_test(void) CU_ASSERT(spdk_bdev_io_valid(&bdev, 512, 1024) == true); /* Offset not a block multiple */ - /* TODO: add a check for this in spdk_bdev_io_valid() */ - /* CU_ASSERT(spdk_bdev_io_valid(&bdev, 3, 512) == false); */ + CU_ASSERT(spdk_bdev_io_valid(&bdev, 3, 512) == false); /* Length not a block multiple */ CU_ASSERT(spdk_bdev_io_valid(&bdev, 512, 3) == false);