Abort opening a zoned device as a raw file in case the chosen block backend driver lacks proper support for this type of storage.
Signed-off-by: Dmitry Fomichev <dmitry.fomic...@wdc.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> --- block/file-posix.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/block/file-posix.c b/block/file-posix.c index caacb21f07..3de371a97d 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -2934,6 +2934,20 @@ static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared, goto fail; } } + + /* + * If we are opening a zoned block device, check if the backend + * driver can properly handle host-managed devices, abort if not. + */ + if (bdrv_is_hm_zoned(bs) && + !(shared & BLK_PERM_SUPPORT_HM_ZONED) && + !(perm & BLK_PERM_SUPPORT_HM_ZONED)) { + error_setg(errp, + "block backend driver doesn't support host-managed zoned devices"); + ret = -ENOTSUP; + goto fail; + } + return 0; fail: -- 2.21.0