All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: "Denis V. Lunev" <den@openvz.org>
Cc: Kevin Wolf <kwolf@redhat.com>,
	qemu-devel@nongnu.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH 11/11] migration: normalize locking in migration/savevm.c
Date: Wed, 18 Nov 2015 12:25:17 +0100	[thread overview]
Message-ID: <87ziybmtwi.fsf@emacs.mitica> (raw)
In-Reply-To: <1447751311-2317-12-git-send-email-den@openvz.org> (Denis V. Lunev's message of "Tue, 17 Nov 2015 12:08:31 +0300")

"Denis V. Lunev" <den@openvz.org> wrote:
> basically all bdrv_* operations must be called under aio_context_acquire
> except ones with bdrv_all prefix.
>
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> Reviewed-by: Fam Zheng <famz@redhat.com>
> CC: Juan Quintela <quintela@redhat.com>
> CC: Kevin Wolf <kwolf@redhat.com>

I will preffer that migration code don't know about aiocontexts.


> @@ -2048,9 +2054,12 @@ int load_vmstate(const char *name)
>          error_report("No block device supports snapshots");
>          return -ENOTSUP;
>      }
> +    aio_context = bdrv_get_aio_context(bs);
>  
>      /* Don't even try to load empty VM states */
> +    aio_context_acquire(aio_context);
>      ret = bdrv_snapshot_find(bs_vm_state, &sn, name);
> +    aio_context_release(aio_context);

Why are we dropping it here?
I can understand doing it on the error case.

>      if (ret < 0) {
>          return ret;
>      } else if (sn.vm_state_size == 0) {
> @@ -2078,9 +2087,12 @@ int load_vmstate(const char *name)
>  
>      qemu_system_reset(VMRESET_SILENT);
>      migration_incoming_state_new(f);
> -    ret = qemu_loadvm_state(f);
>  
> +    aio_context_acquire(aio_context);

We have done a qemu_fopen_bdrv() without acquiring the context, not sure
if we really need it (or not).  My understanding of locking is that we
should get the context on first use and maintain it until last use.

Does it work in a different way?


> +    ret = qemu_loadvm_state(f);
>      qemu_fclose(f);
> +    aio_context_release(aio_context);
> +
>      migration_incoming_state_destroy();
>      if (ret < 0) {
>          error_report("Error %d while loading VM state", ret);
> @@ -2111,14 +2123,19 @@ void hmp_info_snapshots(Monitor *mon, const QDict *qdict)
>      int nb_sns, i;
>      int total;
>      int *available_snapshots;
> +    AioContext *aio_context;
>  
>      bs = bdrv_all_find_vmstate_bs();
>      if (!bs) {
>          monitor_printf(mon, "No available block device supports snapshots\n");
>          return;
>      }
> +    aio_context = bdrv_get_aio_context(bs);
>  
> +    aio_context_acquire(aio_context);
>      nb_sns = bdrv_snapshot_list(bs, &sn_tab);
> +    aio_context_release(aio_context);
> +
>      if (nb_sns < 0) {
>          monitor_printf(mon, "bdrv_snapshot_list: error %d\n", nb_sns);
>          return;


I will very much preffer to have a:


bdrv_snapshot_list_full_whatever()

That does the two operations and don't make me know about aio_contexts.
What I need there really is just the block layer to fill the sn_tab and
to told me if there is a problem, no real need of knowing about
contexts, no?

Thanks, Juan.

  reply	other threads:[~2015-11-18 11:25 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-17  9:08 [Qemu-devel] [PATCH for 2.9 v8 0/10] dataplane snapshot fixes Denis V. Lunev
2015-11-17  9:08 ` [Qemu-devel] [PATCH 01/11] snapshot: create helper to test that block drivers supports snapshots Denis V. Lunev
2015-11-18 10:57   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 02/11] snapshot: return error code from bdrv_snapshot_delete_by_id_or_name Denis V. Lunev
2015-11-18 10:59   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 03/11] snapshot: create bdrv_all_delete_snapshot helper Denis V. Lunev
2015-11-18 11:01   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 04/11] snapshot: create bdrv_all_goto_snapshot helper Denis V. Lunev
2015-11-18 11:02   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 05/11] migration: factor our snapshottability check in load_vmstate Denis V. Lunev
2015-11-17 11:51   ` Fam Zheng
2015-11-18 11:05   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 06/11] snapshot: create bdrv_all_find_snapshot helper Denis V. Lunev
2015-11-17 11:55   ` Fam Zheng
2015-11-18 11:09   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 07/11] migration: drop find_vmstate_bs check in hmp_delvm Denis V. Lunev
2015-11-18 11:08   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 08/11] snapshot: create bdrv_all_create_snapshot helper Denis V. Lunev
2015-11-18 11:10   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 09/11] migration: reorder processing in hmp_savevm Denis V. Lunev
2015-11-18 11:15   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 10/11] migration: implement bdrv_all_find_vmstate_bs helper Denis V. Lunev
2015-11-18 11:12   ` Juan Quintela
2015-11-17  9:08 ` [Qemu-devel] [PATCH 11/11] migration: normalize locking in migration/savevm.c Denis V. Lunev
2015-11-18 11:25   ` Juan Quintela [this message]
2015-11-18 14:26     ` Denis V. Lunev
2015-11-18 13:59   ` Greg Kurz
2015-11-18 10:56 ` [Qemu-devel] [PATCH for 2.9 v8 0/10] dataplane snapshot fixes Juan Quintela
2015-11-18 11:09   ` Denis V. Lunev
2015-11-18 11:26 ` Juan Quintela
2015-11-18 14:15 ` Greg Kurz
2015-11-18 14:31   ` Juan Quintela
2015-11-18 14:54     ` Denis V. Lunev
2015-11-18 15:24       ` Juan Quintela
2015-11-18 15:27         ` Denis V. Lunev
2015-11-19  6:42 [Qemu-devel] [PATCH for 2.5 v10 " Denis V. Lunev
2015-11-19  6:42 ` [Qemu-devel] [PATCH 11/11] migration: normalize locking in migration/savevm.c Denis V. Lunev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ziybmtwi.fsf@emacs.mitica \
    --to=quintela@redhat.com \
    --cc=den@openvz.org \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.