block/blkio: use FUA flag on write zeroes only if supported
libblkio supports BLKIO_REQ_FUA with write zeros requests only since version 1.4.0, so let's inform the block layer that the blkio driver supports it only in this case. Otherwise we can have runtime errors as reported in https://issues.redhat.com/browse/RHEL-32878 Fixes: fd66dbd424 ("blkio: add libblkio block driver") Cc: qemu-stable@nongnu.org Buglink: https://issues.redhat.com/browse/RHEL-32878 Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20240808080545.40744-1-sgarzare@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
0f397dcfec
commit
547c4e5092
@ -899,8 +899,10 @@ static int blkio_open(BlockDriverState *bs, QDict *options, int flags,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bs->supported_write_flags = BDRV_REQ_FUA | BDRV_REQ_REGISTERED_BUF;
|
bs->supported_write_flags = BDRV_REQ_FUA | BDRV_REQ_REGISTERED_BUF;
|
||||||
bs->supported_zero_flags = BDRV_REQ_FUA | BDRV_REQ_MAY_UNMAP |
|
bs->supported_zero_flags = BDRV_REQ_MAY_UNMAP | BDRV_REQ_NO_FALLBACK;
|
||||||
BDRV_REQ_NO_FALLBACK;
|
#ifdef CONFIG_BLKIO_WRITE_ZEROS_FUA
|
||||||
|
bs->supported_zero_flags |= BDRV_REQ_FUA;
|
||||||
|
#endif
|
||||||
|
|
||||||
qemu_mutex_init(&s->blkio_lock);
|
qemu_mutex_init(&s->blkio_lock);
|
||||||
qemu_co_mutex_init(&s->bounce_lock);
|
qemu_co_mutex_init(&s->bounce_lock);
|
||||||
|
@ -2305,6 +2305,8 @@ config_host_data.set('CONFIG_BLKIO', blkio.found())
|
|||||||
if blkio.found()
|
if blkio.found()
|
||||||
config_host_data.set('CONFIG_BLKIO_VHOST_VDPA_FD',
|
config_host_data.set('CONFIG_BLKIO_VHOST_VDPA_FD',
|
||||||
blkio.version().version_compare('>=1.3.0'))
|
blkio.version().version_compare('>=1.3.0'))
|
||||||
|
config_host_data.set('CONFIG_BLKIO_WRITE_ZEROS_FUA',
|
||||||
|
blkio.version().version_compare('>=1.4.0'))
|
||||||
endif
|
endif
|
||||||
config_host_data.set('CONFIG_CURL', curl.found())
|
config_host_data.set('CONFIG_CURL', curl.found())
|
||||||
config_host_data.set('CONFIG_CURSES', curses.found())
|
config_host_data.set('CONFIG_CURSES', curses.found())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user