diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 1fec0bb1c..6458789d1 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -4557,6 +4557,7 @@ static void bdev_compare_do_read_done(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg) { struct spdk_bdev_io *parent_io = cb_arg; + struct spdk_bdev *bdev = parent_io->bdev; uint8_t *read_buf = bdev_io->u.bdev.iovs[0].iov_base; int i, rc = 0; @@ -4577,6 +4578,12 @@ bdev_compare_do_read_done(struct spdk_bdev_io *bdev_io, bool success, void *cb_a read_buf += parent_io->u.bdev.iovs[i].iov_len; } + if (rc == 0 && parent_io->u.bdev.md_buf && spdk_bdev_is_md_separate(bdev)) { + rc = memcmp(bdev_io->u.bdev.md_buf, + parent_io->u.bdev.md_buf, + spdk_bdev_get_md_size(bdev)); + } + spdk_bdev_free_io(bdev_io); if (rc == 0) {