[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 47/54] migration/block: Use real permissions
From: |
Max Reitz |
Subject: |
Re: [Qemu-devel] [PATCH 47/54] migration/block: Use real permissions |
Date: |
Sat, 25 Feb 2017 15:54:35 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 |
On 21.02.2017 15:58, Kevin Wolf wrote:
> Request BLK_PERM_CONSISTENT_READ for the source of block migration, and
> handle potential permission errors as good as we can in this place
> (which is not very good, but it matches the other failure cases).
>
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
> migration/block.c | 21 ++++++++++++++++-----
> 1 file changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/migration/block.c b/migration/block.c
> index d259936..958d0fc 100644
> --- a/migration/block.c
> +++ b/migration/block.c
> @@ -379,7 +379,7 @@ static void unset_dirty_tracking(void)
> }
> }
>
> -static void init_blk_migration(QEMUFile *f)
> +static int init_blk_migration(QEMUFile *f)
> {
> BlockDriverState *bs;
> BlkMigDevState *bmds;
> @@ -390,6 +390,8 @@ static void init_blk_migration(QEMUFile *f)
> BlkMigDevState *bmds;
> BlockDriverState *bs;
> } *bmds_bs;
> + Error *local_err = NULL;
> + int ret;
>
> block_mig_state.submitted = 0;
> block_mig_state.read_done = 0;
> @@ -411,12 +413,12 @@ static void init_blk_migration(QEMUFile *f)
>
> sectors = bdrv_nb_sectors(bs);
> if (sectors <= 0) {
> + ret = sectors;
> goto out;
> }
>
> bmds = g_new0(BlkMigDevState, 1);
> - /* FIXME Use real permissions */
> - bmds->blk = blk_new(0, BLK_PERM_ALL);
> + bmds->blk = blk_new(BLK_PERM_CONSISTENT_READ, BLK_PERM_ALL);
> bmds->blk_name = g_strdup(bdrv_get_device_name(bs));
> bmds->bulk_completed = 0;
> bmds->total_sectors = sectors;
> @@ -446,7 +448,11 @@ static void init_blk_migration(QEMUFile *f)
> BlockDriverState *bs = bmds_bs[i].bs;
>
> if (bmds) {
> - blk_insert_bs(bmds->blk, bs, &error_abort);
> + ret = blk_insert_bs(bmds->blk, bs, &local_err);
> + if (ret < 0) {
> + error_report_err(local_err);
> + goto out;
> + }
>
> alloc_aio_bitmap(bmds);
> error_setg(&bmds->blocker, "block device is in use by
> migration");
> @@ -454,8 +460,10 @@ static void init_blk_migration(QEMUFile *f)
> }
> }
>
> + ret = 0;
> out:
> g_free(bmds_bs);
> + return ret;
> }
>
> /* Called with no lock taken. */
> @@ -706,7 +714,10 @@ static int block_save_setup(QEMUFile *f, void *opaque)
> block_mig_state.submitted, block_mig_state.transferred);
>
> qemu_mutex_lock_iothread();
> - init_blk_migration(f);
> + ret = init_blk_migration(f);
> + if (ret < 0) {
What about qemu_mutex_unlock_iothread()?
Max
> + return ret;
> + }
>
> /* start track dirty blocks */
> ret = set_dirty_tracking();
>
signature.asc
Description: OpenPGP digital signature
- Re: [Qemu-devel] [PATCH 42/54] mirror: Use real permissions in mirror/active commit block job, (continued)
- [Qemu-devel] [PATCH 46/54] hmp: Request permissions in qemu-io, Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 45/54] commit: Add filter-node-name to block-commit, Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 49/54] tests: Remove FIXME comments, Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 51/54] block: Assertions for write permissions, Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 47/54] migration/block: Use real permissions, Kevin Wolf, 2017/02/21
- Re: [Qemu-devel] [PATCH 47/54] migration/block: Use real permissions,
Max Reitz <=
- [Qemu-devel] [PATCH 50/54] block: Pass BdrvChild to bdrv_aligned_preadv/pwritev, Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 48/54] nbd/server: Use real permissions for NBD exports, Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 52/54] block: Assertions for resize permission, Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 53/54] block: Add Error parameter to bdrv_set_backing_hd(), Kevin Wolf, 2017/02/21
- [Qemu-devel] [PATCH 54/54] block: Add Error parameter to bdrv_append(), Kevin Wolf, 2017/02/21