Commit b62aadf2 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Tomasz Zawadzki
Browse files

bdev/malloc: fix reads with separate metadata buffers



If the bdev was configured to use a separate buffers for metadata and
the user submitted a read with buffers=NULL, the metadata pointer would
not get set.

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: If19d5450edba7caf144a5795913212d8e0af682d
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21858


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarKarl Bonde Torp <k.torp@samsung.com>
parent 39846f0f
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -471,6 +471,10 @@ _bdev_malloc_submit_request(struct malloc_channel *mch, struct spdk_bdev_io *bde
			bdev_io->u.bdev.iovs[0].iov_base =
				disk->malloc_buf + bdev_io->u.bdev.offset_blocks * block_size;
			bdev_io->u.bdev.iovs[0].iov_len = bdev_io->u.bdev.num_blocks * block_size;
			if (spdk_bdev_is_md_separate(bdev_io->bdev)) {
				spdk_bdev_io_set_md_buf(bdev_io, malloc_get_md_buf(bdev_io),
							malloc_get_md_len(bdev_io));
			}
			malloc_complete_task(task, mch, SPDK_BDEV_IO_STATUS_SUCCESS);
			return 0;
		}
@@ -517,7 +521,10 @@ _bdev_malloc_submit_request(struct malloc_channel *mch, struct spdk_bdev_io *bde
			buf = disk->malloc_buf + bdev_io->u.bdev.offset_blocks * block_size;
			len = bdev_io->u.bdev.num_blocks * block_size;
			spdk_bdev_io_set_buf(bdev_io, buf, len);

			if (spdk_bdev_is_md_separate(bdev_io->bdev)) {
				spdk_bdev_io_set_md_buf(bdev_io, malloc_get_md_buf(bdev_io),
							malloc_get_md_len(bdev_io));
			}
		}
		malloc_complete_task(task, mch, SPDK_BDEV_IO_STATUS_SUCCESS);
		return 0;