Skip to content

Commit

Permalink
block: Add BlockDriver.is_format
Browse files Browse the repository at this point in the history
We want to unify child_format and child_file at some point.  One of the
important things that set format drivers apart from other drivers is
that they do not expect other format nodes under them (except in the
backing chain), i.e. we must not probe formats inside of formats.  That
means we need something on which to distinguish format drivers from
others, and hence this flag.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Message-Id: <20200513110544.176672-3-mreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
XanClic authored and kevmw committed May 18, 2020
1 parent 6540fd1 commit d67066d
Show file tree
Hide file tree
Showing 14 changed files with 21 additions and 0 deletions.
1 change: 1 addition & 0 deletions block/bochs.c
Expand Up @@ -301,6 +301,7 @@ static BlockDriver bdrv_bochs = {
.bdrv_refresh_limits = bochs_refresh_limits,
.bdrv_co_preadv = bochs_co_preadv,
.bdrv_close = bochs_close,
.is_format = true,
};

static void bdrv_bochs_init(void)
Expand Down
1 change: 1 addition & 0 deletions block/cloop.c
Expand Up @@ -297,6 +297,7 @@ static BlockDriver bdrv_cloop = {
.bdrv_refresh_limits = cloop_refresh_limits,
.bdrv_co_preadv = cloop_co_preadv,
.bdrv_close = cloop_close,
.is_format = true,
};

static void bdrv_cloop_init(void)
Expand Down
2 changes: 2 additions & 0 deletions block/crypto.c
Expand Up @@ -771,6 +771,8 @@ static BlockDriver bdrv_crypto_luks = {
.bdrv_get_info = block_crypto_get_info_luks,
.bdrv_get_specific_info = block_crypto_get_specific_info_luks,

.is_format = true,

.strong_runtime_opts = block_crypto_strong_runtime_opts,
};

Expand Down
1 change: 1 addition & 0 deletions block/dmg.c
Expand Up @@ -753,6 +753,7 @@ static BlockDriver bdrv_dmg = {
.bdrv_child_perm = bdrv_format_default_perms,
.bdrv_co_preadv = dmg_co_preadv,
.bdrv_close = dmg_close,
.is_format = true,
};

static void bdrv_dmg_init(void)
Expand Down
1 change: 1 addition & 0 deletions block/parallels.c
Expand Up @@ -918,6 +918,7 @@ static BlockDriver bdrv_parallels = {
.bdrv_co_flush_to_os = parallels_co_flush_to_os,
.bdrv_co_readv = parallels_co_readv,
.bdrv_co_writev = parallels_co_writev,
.is_format = true,
.supports_backing = true,
.bdrv_co_create = parallels_co_create,
.bdrv_co_create_opts = parallels_co_create_opts,
Expand Down
1 change: 1 addition & 0 deletions block/qcow.c
Expand Up @@ -1185,6 +1185,7 @@ static BlockDriver bdrv_qcow = {
.bdrv_co_create = qcow_co_create,
.bdrv_co_create_opts = qcow_co_create_opts,
.bdrv_has_zero_init = bdrv_has_zero_init_1,
.is_format = true,
.supports_backing = true,
.bdrv_refresh_limits = qcow_refresh_limits,

Expand Down
1 change: 1 addition & 0 deletions block/qcow2.c
Expand Up @@ -5767,6 +5767,7 @@ BlockDriver bdrv_qcow2 = {
.bdrv_save_vmstate = qcow2_save_vmstate,
.bdrv_load_vmstate = qcow2_load_vmstate,

.is_format = true,
.supports_backing = true,
.bdrv_change_backing_file = qcow2_change_backing_file,

Expand Down
1 change: 1 addition & 0 deletions block/qed.c
Expand Up @@ -1665,6 +1665,7 @@ static BlockDriver bdrv_qed = {
.format_name = "qed",
.instance_size = sizeof(BDRVQEDState),
.create_opts = &qed_create_opts,
.is_format = true,
.supports_backing = true,

.bdrv_probe = bdrv_qed_probe,
Expand Down
1 change: 1 addition & 0 deletions block/raw-format.c
Expand Up @@ -566,6 +566,7 @@ BlockDriver bdrv_raw = {
.bdrv_co_copy_range_to = &raw_co_copy_range_to,
.bdrv_co_truncate = &raw_co_truncate,
.bdrv_getlength = &raw_getlength,
.is_format = true,
.has_variable_length = true,
.bdrv_measure = &raw_measure,
.bdrv_get_info = &raw_get_info,
Expand Down
1 change: 1 addition & 0 deletions block/vdi.c
Expand Up @@ -1053,6 +1053,7 @@ static BlockDriver bdrv_vdi = {

.bdrv_get_info = vdi_get_info,

.is_format = true,
.create_opts = &vdi_create_opts,
.bdrv_co_check = vdi_co_check,
};
Expand Down
1 change: 1 addition & 0 deletions block/vhdx.c
Expand Up @@ -2254,6 +2254,7 @@ static BlockDriver bdrv_vhdx = {
.bdrv_co_check = vhdx_co_check,
.bdrv_has_zero_init = vhdx_has_zero_init,

.is_format = true,
.create_opts = &vhdx_create_opts,
};

Expand Down
1 change: 1 addition & 0 deletions block/vmdk.c
Expand Up @@ -3070,6 +3070,7 @@ static BlockDriver bdrv_vmdk = {
.bdrv_get_info = vmdk_get_info,
.bdrv_gather_child_options = vmdk_gather_child_options,

.is_format = true,
.supports_backing = true,
.create_opts = &vmdk_create_opts,
};
Expand Down
1 change: 1 addition & 0 deletions block/vpc.c
Expand Up @@ -1250,6 +1250,7 @@ static BlockDriver bdrv_vpc = {

.bdrv_get_info = vpc_get_info,

.is_format = true,
.create_opts = &vpc_create_opts,
.bdrv_has_zero_init = vpc_has_zero_init,
.strong_runtime_opts = vpc_strong_runtime_opts,
Expand Down
7 changes: 7 additions & 0 deletions include/block/block_int.h
Expand Up @@ -95,6 +95,13 @@ struct BlockDriver {
* must implement them and return -ENOTSUP.
*/
bool is_filter;
/*
* Set to true if the BlockDriver is a format driver. Format nodes
* generally do not expect their children to be other format nodes
* (except for backing files), and so format probing is disabled
* on those children.
*/
bool is_format;
/*
* Return true if @to_replace can be replaced by a BDS with the
* same data as @bs without it affecting @bs's behavior (that is,
Expand Down

0 comments on commit d67066d

Please sign in to comment.