diff mbox

[RFC,10/41] block: Request child permissions in format drivers

Message ID 1487006583-24350-11-git-send-email-kwolf@redhat.com
State New
Headers show

Commit Message

Kevin Wolf Feb. 13, 2017, 5:22 p.m. UTC
This makes use of the .bdrv_child_perm() implementation for formats that
we just added. All format drivers expose the permissions they actually
need nows, so that they can be set accordingly and updated when parents
are attached or detached.

The only format not included here is raw, which was already converted
with the other filter drivers.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/bochs.c     | 1 +
 block/cloop.c     | 1 +
 block/crypto.c    | 1 +
 block/dmg.c       | 1 +
 block/parallels.c | 1 +
 block/qcow.c      | 1 +
 block/qcow2.c     | 1 +
 block/qed.c       | 1 +
 block/vdi.c       | 1 +
 block/vhdx.c      | 1 +
 block/vmdk.c      | 1 +
 block/vpc.c       | 1 +
 12 files changed, 12 insertions(+)

Comments

Max Reitz Feb. 15, 2017, 5:26 p.m. UTC | #1
On 13.02.2017 18:22, Kevin Wolf wrote:
> This makes use of the .bdrv_child_perm() implementation for formats that
> we just added. All format drivers expose the permissions they actually
> need nows, so that they can be set accordingly and updated when parents
> are attached or detached.
> 
> The only format not included here is raw, which was already converted
> with the other filter drivers.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  block/bochs.c     | 1 +

In theory it might make sense to have another category "read-only format
drivers". In practice those are the drivers we don't care much about,
soooo...

>  block/cloop.c     | 1 +
>  block/crypto.c    | 1 +

I'm not sure whether the crypto driver qualifies more as a format driver
than as a filter driver. I guess saying it's a format driver is a bit
more strict and it's better to be strict when it doubt.

Max

>  block/dmg.c       | 1 +
>  block/parallels.c | 1 +
>  block/qcow.c      | 1 +
>  block/qcow2.c     | 1 +
>  block/qed.c       | 1 +
>  block/vdi.c       | 1 +
>  block/vhdx.c      | 1 +
>  block/vmdk.c      | 1 +
>  block/vpc.c       | 1 +
>  12 files changed, 12 insertions(+)
> 
> diff --git a/block/bochs.c b/block/bochs.c
> index 7dd2ac4..516da56 100644
> --- a/block/bochs.c
> +++ b/block/bochs.c
> @@ -293,6 +293,7 @@ static BlockDriver bdrv_bochs = {
>      .instance_size	= sizeof(BDRVBochsState),
>      .bdrv_probe		= bochs_probe,
>      .bdrv_open		= bochs_open,
> +    .bdrv_child_perm     = bdrv_format_default_perms,
>      .bdrv_refresh_limits = bochs_refresh_limits,
>      .bdrv_co_preadv = bochs_co_preadv,
>      .bdrv_close		= bochs_close,
> diff --git a/block/cloop.c b/block/cloop.c
> index 877c9b0..a6c7b9d 100644
> --- a/block/cloop.c
> +++ b/block/cloop.c
> @@ -290,6 +290,7 @@ static BlockDriver bdrv_cloop = {
>      .instance_size  = sizeof(BDRVCloopState),
>      .bdrv_probe     = cloop_probe,
>      .bdrv_open      = cloop_open,
> +    .bdrv_child_perm     = bdrv_format_default_perms,
>      .bdrv_refresh_limits = cloop_refresh_limits,
>      .bdrv_co_preadv = cloop_co_preadv,
>      .bdrv_close     = cloop_close,
> diff --git a/block/crypto.c b/block/crypto.c
> index 200fd0b..ca46883 100644
> --- a/block/crypto.c
> +++ b/block/crypto.c
> @@ -628,6 +628,7 @@ BlockDriver bdrv_crypto_luks = {
>      .bdrv_probe         = block_crypto_probe_luks,
>      .bdrv_open          = block_crypto_open_luks,
>      .bdrv_close         = block_crypto_close,
> +    .bdrv_child_perm    = bdrv_format_default_perms,
>      .bdrv_create        = block_crypto_create_luks,
>      .bdrv_truncate      = block_crypto_truncate,
>      .create_opts        = &block_crypto_create_opts_luks,
> diff --git a/block/dmg.c b/block/dmg.c
> index 8e387cd..a7d25fc 100644
> --- a/block/dmg.c
> +++ b/block/dmg.c
> @@ -697,6 +697,7 @@ static BlockDriver bdrv_dmg = {
>      .bdrv_probe     = dmg_probe,
>      .bdrv_open      = dmg_open,
>      .bdrv_refresh_limits = dmg_refresh_limits,
> +    .bdrv_child_perm     = bdrv_format_default_perms,
>      .bdrv_co_preadv = dmg_co_preadv,
>      .bdrv_close     = dmg_close,
>  };
> diff --git a/block/parallels.c b/block/parallels.c
> index d3970e1..b79e7df 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -762,6 +762,7 @@ static BlockDriver bdrv_parallels = {
>      .bdrv_probe		= parallels_probe,
>      .bdrv_open		= parallels_open,
>      .bdrv_close		= parallels_close,
> +    .bdrv_child_perm          = bdrv_format_default_perms,
>      .bdrv_co_get_block_status = parallels_co_get_block_status,
>      .bdrv_has_zero_init       = bdrv_has_zero_init_1,
>      .bdrv_co_flush_to_os      = parallels_co_flush_to_os,
> diff --git a/block/qcow.c b/block/qcow.c
> index a6dfe1a..3a95d4f 100644
> --- a/block/qcow.c
> +++ b/block/qcow.c
> @@ -1052,6 +1052,7 @@ static BlockDriver bdrv_qcow = {
>      .bdrv_probe		= qcow_probe,
>      .bdrv_open		= qcow_open,
>      .bdrv_close		= qcow_close,
> +    .bdrv_child_perm        = bdrv_format_default_perms,
>      .bdrv_reopen_prepare    = qcow_reopen_prepare,
>      .bdrv_create            = qcow_create,
>      .bdrv_has_zero_init     = bdrv_has_zero_init_1,
> diff --git a/block/qcow2.c b/block/qcow2.c
> index 4684554..dac3fb8 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -3399,6 +3399,7 @@ BlockDriver bdrv_qcow2 = {
>      .bdrv_reopen_commit   = qcow2_reopen_commit,
>      .bdrv_reopen_abort    = qcow2_reopen_abort,
>      .bdrv_join_options    = qcow2_join_options,
> +    .bdrv_child_perm      = bdrv_format_default_perms,
>      .bdrv_create        = qcow2_create,
>      .bdrv_has_zero_init = bdrv_has_zero_init_1,
>      .bdrv_co_get_block_status = qcow2_co_get_block_status,
> diff --git a/block/qed.c b/block/qed.c
> index 1ea5114..eda9402 100644
> --- a/block/qed.c
> +++ b/block/qed.c
> @@ -1678,6 +1678,7 @@ static BlockDriver bdrv_qed = {
>      .bdrv_open                = bdrv_qed_open,
>      .bdrv_close               = bdrv_qed_close,
>      .bdrv_reopen_prepare      = bdrv_qed_reopen_prepare,
> +    .bdrv_child_perm          = bdrv_format_default_perms,
>      .bdrv_create              = bdrv_qed_create,
>      .bdrv_has_zero_init       = bdrv_has_zero_init_1,
>      .bdrv_co_get_block_status = bdrv_qed_co_get_block_status,
> diff --git a/block/vdi.c b/block/vdi.c
> index 18b4773..fd6e26d 100644
> --- a/block/vdi.c
> +++ b/block/vdi.c
> @@ -891,6 +891,7 @@ static BlockDriver bdrv_vdi = {
>      .bdrv_open = vdi_open,
>      .bdrv_close = vdi_close,
>      .bdrv_reopen_prepare = vdi_reopen_prepare,
> +    .bdrv_child_perm          = bdrv_format_default_perms,
>      .bdrv_create = vdi_create,
>      .bdrv_has_zero_init = bdrv_has_zero_init_1,
>      .bdrv_co_get_block_status = vdi_co_get_block_status,
> diff --git a/block/vhdx.c b/block/vhdx.c
> index 4dc2743..8c5ade2 100644
> --- a/block/vhdx.c
> +++ b/block/vhdx.c
> @@ -1983,6 +1983,7 @@ static BlockDriver bdrv_vhdx = {
>      .bdrv_open              = vhdx_open,
>      .bdrv_close             = vhdx_close,
>      .bdrv_reopen_prepare    = vhdx_reopen_prepare,
> +    .bdrv_child_perm        = bdrv_format_default_perms,
>      .bdrv_co_readv          = vhdx_co_readv,
>      .bdrv_co_writev         = vhdx_co_writev,
>      .bdrv_create            = vhdx_create,
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 9d68ec5..f5e2fb5 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -2359,6 +2359,7 @@ static BlockDriver bdrv_vmdk = {
>      .bdrv_open                    = vmdk_open,
>      .bdrv_check                   = vmdk_check,
>      .bdrv_reopen_prepare          = vmdk_reopen_prepare,
> +    .bdrv_child_perm              = bdrv_format_default_perms,
>      .bdrv_co_preadv               = vmdk_co_preadv,
>      .bdrv_co_pwritev              = vmdk_co_pwritev,
>      .bdrv_co_pwritev_compressed   = vmdk_co_pwritev_compressed,
> diff --git a/block/vpc.c b/block/vpc.c
> index d0df2a1..b9c9832 100644
> --- a/block/vpc.c
> +++ b/block/vpc.c
> @@ -1067,6 +1067,7 @@ static BlockDriver bdrv_vpc = {
>      .bdrv_open              = vpc_open,
>      .bdrv_close             = vpc_close,
>      .bdrv_reopen_prepare    = vpc_reopen_prepare,
> +    .bdrv_child_perm        = bdrv_format_default_perms,
>      .bdrv_create            = vpc_create,
>  
>      .bdrv_co_preadv             = vpc_co_preadv,
>
diff mbox

Patch

diff --git a/block/bochs.c b/block/bochs.c
index 7dd2ac4..516da56 100644
--- a/block/bochs.c
+++ b/block/bochs.c
@@ -293,6 +293,7 @@  static BlockDriver bdrv_bochs = {
     .instance_size	= sizeof(BDRVBochsState),
     .bdrv_probe		= bochs_probe,
     .bdrv_open		= bochs_open,
+    .bdrv_child_perm     = bdrv_format_default_perms,
     .bdrv_refresh_limits = bochs_refresh_limits,
     .bdrv_co_preadv = bochs_co_preadv,
     .bdrv_close		= bochs_close,
diff --git a/block/cloop.c b/block/cloop.c
index 877c9b0..a6c7b9d 100644
--- a/block/cloop.c
+++ b/block/cloop.c
@@ -290,6 +290,7 @@  static BlockDriver bdrv_cloop = {
     .instance_size  = sizeof(BDRVCloopState),
     .bdrv_probe     = cloop_probe,
     .bdrv_open      = cloop_open,
+    .bdrv_child_perm     = bdrv_format_default_perms,
     .bdrv_refresh_limits = cloop_refresh_limits,
     .bdrv_co_preadv = cloop_co_preadv,
     .bdrv_close     = cloop_close,
diff --git a/block/crypto.c b/block/crypto.c
index 200fd0b..ca46883 100644
--- a/block/crypto.c
+++ b/block/crypto.c
@@ -628,6 +628,7 @@  BlockDriver bdrv_crypto_luks = {
     .bdrv_probe         = block_crypto_probe_luks,
     .bdrv_open          = block_crypto_open_luks,
     .bdrv_close         = block_crypto_close,
+    .bdrv_child_perm    = bdrv_format_default_perms,
     .bdrv_create        = block_crypto_create_luks,
     .bdrv_truncate      = block_crypto_truncate,
     .create_opts        = &block_crypto_create_opts_luks,
diff --git a/block/dmg.c b/block/dmg.c
index 8e387cd..a7d25fc 100644
--- a/block/dmg.c
+++ b/block/dmg.c
@@ -697,6 +697,7 @@  static BlockDriver bdrv_dmg = {
     .bdrv_probe     = dmg_probe,
     .bdrv_open      = dmg_open,
     .bdrv_refresh_limits = dmg_refresh_limits,
+    .bdrv_child_perm     = bdrv_format_default_perms,
     .bdrv_co_preadv = dmg_co_preadv,
     .bdrv_close     = dmg_close,
 };
diff --git a/block/parallels.c b/block/parallels.c
index d3970e1..b79e7df 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -762,6 +762,7 @@  static BlockDriver bdrv_parallels = {
     .bdrv_probe		= parallels_probe,
     .bdrv_open		= parallels_open,
     .bdrv_close		= parallels_close,
+    .bdrv_child_perm          = bdrv_format_default_perms,
     .bdrv_co_get_block_status = parallels_co_get_block_status,
     .bdrv_has_zero_init       = bdrv_has_zero_init_1,
     .bdrv_co_flush_to_os      = parallels_co_flush_to_os,
diff --git a/block/qcow.c b/block/qcow.c
index a6dfe1a..3a95d4f 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -1052,6 +1052,7 @@  static BlockDriver bdrv_qcow = {
     .bdrv_probe		= qcow_probe,
     .bdrv_open		= qcow_open,
     .bdrv_close		= qcow_close,
+    .bdrv_child_perm        = bdrv_format_default_perms,
     .bdrv_reopen_prepare    = qcow_reopen_prepare,
     .bdrv_create            = qcow_create,
     .bdrv_has_zero_init     = bdrv_has_zero_init_1,
diff --git a/block/qcow2.c b/block/qcow2.c
index 4684554..dac3fb8 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -3399,6 +3399,7 @@  BlockDriver bdrv_qcow2 = {
     .bdrv_reopen_commit   = qcow2_reopen_commit,
     .bdrv_reopen_abort    = qcow2_reopen_abort,
     .bdrv_join_options    = qcow2_join_options,
+    .bdrv_child_perm      = bdrv_format_default_perms,
     .bdrv_create        = qcow2_create,
     .bdrv_has_zero_init = bdrv_has_zero_init_1,
     .bdrv_co_get_block_status = qcow2_co_get_block_status,
diff --git a/block/qed.c b/block/qed.c
index 1ea5114..eda9402 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -1678,6 +1678,7 @@  static BlockDriver bdrv_qed = {
     .bdrv_open                = bdrv_qed_open,
     .bdrv_close               = bdrv_qed_close,
     .bdrv_reopen_prepare      = bdrv_qed_reopen_prepare,
+    .bdrv_child_perm          = bdrv_format_default_perms,
     .bdrv_create              = bdrv_qed_create,
     .bdrv_has_zero_init       = bdrv_has_zero_init_1,
     .bdrv_co_get_block_status = bdrv_qed_co_get_block_status,
diff --git a/block/vdi.c b/block/vdi.c
index 18b4773..fd6e26d 100644
--- a/block/vdi.c
+++ b/block/vdi.c
@@ -891,6 +891,7 @@  static BlockDriver bdrv_vdi = {
     .bdrv_open = vdi_open,
     .bdrv_close = vdi_close,
     .bdrv_reopen_prepare = vdi_reopen_prepare,
+    .bdrv_child_perm          = bdrv_format_default_perms,
     .bdrv_create = vdi_create,
     .bdrv_has_zero_init = bdrv_has_zero_init_1,
     .bdrv_co_get_block_status = vdi_co_get_block_status,
diff --git a/block/vhdx.c b/block/vhdx.c
index 4dc2743..8c5ade2 100644
--- a/block/vhdx.c
+++ b/block/vhdx.c
@@ -1983,6 +1983,7 @@  static BlockDriver bdrv_vhdx = {
     .bdrv_open              = vhdx_open,
     .bdrv_close             = vhdx_close,
     .bdrv_reopen_prepare    = vhdx_reopen_prepare,
+    .bdrv_child_perm        = bdrv_format_default_perms,
     .bdrv_co_readv          = vhdx_co_readv,
     .bdrv_co_writev         = vhdx_co_writev,
     .bdrv_create            = vhdx_create,
diff --git a/block/vmdk.c b/block/vmdk.c
index 9d68ec5..f5e2fb5 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -2359,6 +2359,7 @@  static BlockDriver bdrv_vmdk = {
     .bdrv_open                    = vmdk_open,
     .bdrv_check                   = vmdk_check,
     .bdrv_reopen_prepare          = vmdk_reopen_prepare,
+    .bdrv_child_perm              = bdrv_format_default_perms,
     .bdrv_co_preadv               = vmdk_co_preadv,
     .bdrv_co_pwritev              = vmdk_co_pwritev,
     .bdrv_co_pwritev_compressed   = vmdk_co_pwritev_compressed,
diff --git a/block/vpc.c b/block/vpc.c
index d0df2a1..b9c9832 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -1067,6 +1067,7 @@  static BlockDriver bdrv_vpc = {
     .bdrv_open              = vpc_open,
     .bdrv_close             = vpc_close,
     .bdrv_reopen_prepare    = vpc_reopen_prepare,
+    .bdrv_child_perm        = bdrv_format_default_perms,
     .bdrv_create            = vpc_create,
 
     .bdrv_co_preadv             = vpc_co_preadv,