All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org, dgilbert@redhat.com
Subject: Re: [Qemu-devel] [PATCH 01/51] ram: Update all functions comments
Date: Sun, 26 Mar 2017 21:43:31 +0800	[thread overview]
Message-ID: <20170326134331.GH17755@pxdev.xzpeter.org> (raw)
In-Reply-To: <87mvca7vcp.fsf@secure.mitica>

On Fri, Mar 24, 2017 at 12:44:06PM +0100, Juan Quintela wrote:
> Peter Xu <peterx@redhat.com> wrote:
> > Hi, Juan,
> >
> > Got several nitpicks below... (along with some questions)
> >
> > On Thu, Mar 23, 2017 at 09:44:54PM +0100, Juan Quintela wrote:
> >
> > [...]
> >
> >>  static void xbzrle_cache_zero_page(ram_addr_t current_addr)
> >>  {
> >> @@ -459,8 +474,8 @@ static void xbzrle_cache_zero_page(ram_addr_t current_addr)
> >>   *          -1 means that xbzrle would be longer than normal
> >>   *
> >>   * @f: QEMUFile where to send the data
> >> - * @current_data:
> >> - * @current_addr:
> >> + * @current_data: contents of the page
> >
> > Since current_data is a double pointer, so... maybe "pointer to the
> > address of page content"?
> 
> ok. changed.
> 
> > Btw, a question not related to this series... Why here in
> > save_xbzrle_page() we need to update *current_data to be the newly
> > created page cache? I see that we have:
> >
> >     /* update *current_data when the page has been
> >        inserted into cache */
> >     *current_data = get_cached_data(XBZRLE.cache, current_addr);
> >
> > What would be the difference if we just use the old pointer in
> > RAMBlock.host?
> 
> Its contents could have been changed since we inserted it into the
> cache.  Then we could end having "memory corruption" during transfer.

Oh yes. Hmm I noticed that the content will be changed along the way
(IIUC even before we insert the page into the cache, since we are
doing everything in migration thread, while at the same time vcpu
thread might be doing anything), but I didn't notice that we need to
make sure the cached page be exactly the same as the one sent to the
destination side, or the "diff" may not match. Thanks for pointing
out. :)

> 
> 
> > [...]
> >
> >> @@ -1157,11 +1186,12 @@ static bool get_queued_page(MigrationState
> >> *ms, PageSearchStatus *pss,
> >>  }
> >>  
> >>  /**
> >> - * flush_page_queue: Flush any remaining pages in the ram request queue
> >> - *    it should be empty at the end anyway, but in error cases there may be
> >> - *    some left.
> >> + * flush_page_queue: flush any remaining pages in the ram request queue
> >
> > Here the comment says (just like mentioned in function name) that we
> > will "flush any remaining pages in the ram request queue", however in
> > the implementation, we should be only freeing everything in
> > src_page_requests. The problem is "flush" let me think about "flushing
> > the rest of the pages to the other side"... while it's not.
> >
> > Would it be nice we just rename the function into something else, like
> > migration_page_queue_free()? We can tune the comments correspondingly
> > as well.
> 
> I will let this one to dave to answer O:-)
> I agree than previous name is not perfect, but not sure that the new one
> is mucth better either.
> 
> migration_drop_page_queue()?

This is indeed a nitpick of mine... So please feel free to ignore it.
:)

But if we will keep the function name, I would slightly prefer that at
least we mention in the comment that, this is only freeing things up,
not sending anything out.

> 
> 
> >
> > [...]
> >
> >> -/*
> >> - * Helper for postcopy_chunk_hostpages; it's called twice to cleanup
> >> - *   the two bitmaps, that are similar, but one is inverted.
> >> +/**
> >> + * postcopy_chuck_hostpages_pass: canocalize bitmap in hostpages
> >                   ^ should be n?     ^^^^^^^^^^ canonicalize?
> 
> Fixed.
> 
> >> - * We search for runs of target-pages that don't start or end on a
> >> - * host page boundary;
> >> - * unsent_pass=true: Cleans up partially unsent host pages by searching
> >> - *                 the unsentmap
> >> - * unsent_pass=false: Cleans up partially dirty host pages by searching
> >> - *                 the main migration bitmap
> >> + * Helper for postcopy_chunk_hostpages; it's called twice to
> >> + * canonicalize the two bitmaps, that are similar, but one is
> >> + * inverted.
> >>   *
> >> + * Postcopy requires that all target pages in a hostpage are dirty or
> >> + * clean, not a mix.  This function canonicalizes the bitmaps.
> >> + *
> >> + * @ms: current migration state
> >> + * @unsent_pass: if true we need to canonicalize partially unsent host pages
> >> + *               otherwise we need to canonicalize partially dirty host pages
> >> + * @block: block that contains the page we want to canonicalize
> >> + * @pds: state for postcopy
> >>   */
> >>  static void postcopy_chunk_hostpages_pass(MigrationState *ms, bool unsent_pass,
> >>                                            RAMBlock *block,
> >
> > [...]
> >
> >> +/**
> >> + * ram_save_setup: iterative stage for migration
> >       ^^^^^^^^^^^^^^ should be ram_save_iterate()?
> 
> fixed.  Too much copy and paste.
> 
> >
> >> + *
> >> + * Returns zero to indicate success and negative for error
> >> + *
> >> + * @f: QEMUFile where to send the data
> >> + * @opaque: RAMState pointer
> >> + */
> >>  static int ram_save_iterate(QEMUFile *f, void *opaque)
> >>  {
> >>      int ret;
> >> @@ -2091,7 +2169,16 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
> >>      return done;
> >>  }
> >
> > [...]
> >
> >> -/*
> >> - * Allocate data structures etc needed by incoming migration with postcopy-ram
> >> - * postcopy-ram's similarly names postcopy_ram_incoming_init does the work
> >> +/**
> >> + * ram_postococpy_incoming_init: allocate postcopy data structures
> >> + *
> >> + * Returns 0 for success and negative if there was one error
> >> + *
> >> + * @mis: current migration incoming state
> >> + *
> >> + * Allocate data structures etc needed by incoming migration with
> >> + * postcopy-ram postcopy-ram's similarly names
> >> + * postcopy_ram_incoming_init does the work
> >
> > This sentence is slightly hard to understand... But I think the
> > function name explained itself enough though. :)
> 
> I didn't want to remove Dave comments at this point, jusnt doing the
> formating8 and put them consintent.  I agree that this file comments
> could be improved.

Totally fine with me.

With all the fixes above, please add:

Reviewed-by: Peter Xu <peterx@redhat.com>

-- peterx

  reply	other threads:[~2017-03-26 13:43 UTC|newest]

Thread overview: 167+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-23 20:44 [Qemu-devel] [PATCH v2 00/51] Creating RAMState for migration Juan Quintela
2017-03-23 20:44 ` [Qemu-devel] [PATCH 01/51] ram: Update all functions comments Juan Quintela
2017-03-24  9:55   ` Peter Xu
2017-03-24 11:44     ` Juan Quintela
2017-03-26 13:43       ` Peter Xu [this message]
2017-03-28 18:32         ` Juan Quintela
2017-03-31 14:43     ` Dr. David Alan Gilbert
2017-04-03 20:40       ` Juan Quintela
2017-03-31 15:51   ` Dr. David Alan Gilbert
2017-04-04 17:12     ` Juan Quintela
2017-03-23 20:44 ` [Qemu-devel] [PATCH 02/51] ram: rename block_name to rbname Juan Quintela
2017-03-24 11:11   ` Dr. David Alan Gilbert
2017-03-24 17:15   ` Eric Blake
2017-03-28 10:52     ` Juan Quintela
2017-03-23 20:44 ` [Qemu-devel] [PATCH 03/51] ram: Create RAMState Juan Quintela
2017-03-27  4:43   ` Peter Xu
2017-03-23 20:44 ` [Qemu-devel] [PATCH 04/51] ram: Add dirty_rate_high_cnt to RAMState Juan Quintela
2017-03-27  7:24   ` Peter Xu
2017-03-23 20:44 ` [Qemu-devel] [PATCH 05/51] ram: Move bitmap_sync_count into RAMState Juan Quintela
2017-03-27  7:34   ` Peter Xu
2017-03-28 10:56     ` Juan Quintela
2017-03-29  6:55       ` Peter Xu
2017-03-29  8:56         ` Juan Quintela
2017-03-29  9:07           ` Peter Xu
2017-03-23 20:44 ` [Qemu-devel] [PATCH 06/51] ram: Move start time " Juan Quintela
2017-03-27  7:54   ` Peter Xu
2017-03-28 11:00     ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 07/51] ram: Move bytes_xfer_prev " Juan Quintela
2017-03-27  8:04   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 08/51] ram: Move num_dirty_pages_period " Juan Quintela
2017-03-27  8:07   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 09/51] ram: Move xbzrle_cache_miss_prev " Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 10/51] ram: Move iterations_prev " Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 11/51] ram: Move dup_pages " Juan Quintela
2017-03-27  9:23   ` Peter Xu
2017-03-28 18:43     ` Juan Quintela
2017-03-29  7:02       ` Peter Xu
2017-03-29  8:26         ` Juan Quintela
2017-03-31 14:58       ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 12/51] ram: Remove unused dup_mig_bytes_transferred() Juan Quintela
2017-03-27  9:24   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 13/51] ram: Remove unused pages_skipped variable Juan Quintela
2017-03-27  9:26   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 14/51] ram: Move norm_pages to RAMState Juan Quintela
2017-03-27  9:43   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 15/51] ram: Remove norm_mig_bytes_transferred Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 16/51] ram: Move iterations into RAMState Juan Quintela
2017-03-27 10:46   ` Peter Xu
2017-03-28 18:34     ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 17/51] ram: Move xbzrle_bytes " Juan Quintela
2017-03-24 10:12   ` Dr. David Alan Gilbert
2017-03-27 10:48   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 18/51] ram: Move xbzrle_pages " Juan Quintela
2017-03-24 10:13   ` Dr. David Alan Gilbert
2017-03-27 10:59   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 19/51] ram: Move xbzrle_cache_miss " Juan Quintela
2017-03-24 10:15   ` Dr. David Alan Gilbert
2017-03-27 11:00   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 20/51] ram: Move xbzrle_cache_miss_rate " Juan Quintela
2017-03-24 10:17   ` Dr. David Alan Gilbert
2017-03-27 11:01   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 21/51] ram: Move xbzrle_overflows " Juan Quintela
2017-03-24 10:22   ` Dr. David Alan Gilbert
2017-03-27 11:03   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 22/51] ram: Move migration_dirty_pages to RAMState Juan Quintela
2017-03-30  6:24   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 23/51] ram: Everything was init to zero, so use memset Juan Quintela
2017-03-29 17:14   ` Dr. David Alan Gilbert
2017-03-30  6:25   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 24/51] ram: Move migration_bitmap_mutex into RAMState Juan Quintela
2017-03-30  6:25   ` Peter Xu
2017-03-30  8:49   ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 25/51] ram: Move migration_bitmap_rcu " Juan Quintela
2017-03-30  6:25   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 26/51] ram: Move bytes_transferred " Juan Quintela
2017-03-29 17:38   ` Dr. David Alan Gilbert
2017-03-30  6:26   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 27/51] ram: Use the RAMState bytes_transferred parameter Juan Quintela
2017-03-30  6:27   ` Peter Xu
2017-03-30 16:05     ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 28/51] ram: Remove ram_save_remaining Juan Quintela
2017-03-24 15:34   ` Dr. David Alan Gilbert
2017-03-30  6:24   ` Peter Xu
2017-03-30 16:07     ` Juan Quintela
2017-03-31  2:57       ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 29/51] ram: Move last_req_rb to RAMState Juan Quintela
2017-03-30  6:49   ` Peter Xu
2017-03-30 16:08     ` Juan Quintela
2017-03-31  3:00       ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 30/51] ram: Move src_page_req* " Juan Quintela
2017-03-30  6:56   ` Peter Xu
2017-03-30 16:09     ` Juan Quintela
2017-03-31 15:25     ` Dr. David Alan Gilbert
2017-04-01  7:15       ` Peter Xu
2017-04-05 10:27         ` Dr. David Alan Gilbert
2017-03-31 16:52   ` Dr. David Alan Gilbert
2017-04-04 17:42     ` Juan Quintela
2017-04-05 10:34       ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 31/51] ram: Create ram_dirty_sync_count() Juan Quintela
2017-03-29  9:06   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 32/51] ram: Remove dirty_bytes_rate Juan Quintela
2017-03-30  7:00   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 33/51] ram: Move dirty_pages_rate to RAMState Juan Quintela
2017-03-30  7:04   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 34/51] ram: Move postcopy_requests into RAMState Juan Quintela
2017-03-30  7:06   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 35/51] ram: Add QEMUFile to RAMState Juan Quintela
2017-03-24 10:52   ` Dr. David Alan Gilbert
2017-03-24 11:14     ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 36/51] ram: Move QEMUFile into RAMState Juan Quintela
2017-03-31 14:21   ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 37/51] ram: Move compression_switch to RAMState Juan Quintela
2017-03-29 18:02   ` Dr. David Alan Gilbert
2017-03-30 16:19     ` Juan Quintela
2017-03-30 16:27     ` Juan Quintela
2017-03-30  7:52   ` Peter Xu
2017-03-30 16:30     ` Juan Quintela
2017-03-31  3:04       ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 38/51] migration: Remove MigrationState from migration_in_postcopy Juan Quintela
2017-03-24 15:27   ` Dr. David Alan Gilbert
2017-03-30  8:06   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 39/51] ram: We don't need MigrationState parameter anymore Juan Quintela
2017-03-24 15:28   ` Dr. David Alan Gilbert
2017-03-30  8:05   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 40/51] ram: Rename qemu_target_page_bits() to qemu_target_page_size() Juan Quintela
2017-03-24 15:32   ` Dr. David Alan Gilbert
2017-03-30  8:03   ` Peter Xu
2017-03-30  8:55     ` Dr. David Alan Gilbert
2017-03-30  9:11     ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 41/51] Add page-size to output in 'info migrate' Juan Quintela
2017-03-24 17:17   ` Eric Blake
2017-03-23 20:45 ` [Qemu-devel] [PATCH 42/51] ram: Pass RAMBlock to bitmap_sync Juan Quintela
2017-03-24  1:10   ` Yang Hongyang
2017-03-24  8:29     ` Juan Quintela
2017-03-24  9:11       ` Yang Hongyang
2017-03-24 10:05         ` Juan Quintela
2017-03-28 17:12       ` Dr. David Alan Gilbert
2017-03-28 18:45         ` Juan Quintela
2017-03-30  9:07   ` Dr. David Alan Gilbert
2017-03-30 11:38     ` Juan Quintela
2017-03-30 19:10       ` Dr. David Alan Gilbert
2017-04-04 17:46         ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 43/51] ram: ram_discard_range() don't use the mis parameter Juan Quintela
2017-03-29 18:43   ` Dr. David Alan Gilbert
2017-03-30 10:28   ` Peter Xu
2017-03-23 20:45 ` [Qemu-devel] [PATCH 44/51] ram: reorganize last_sent_block Juan Quintela
2017-03-31  8:35   ` Peter Xu
2017-03-31  8:40   ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 45/51] ram: Use page number instead of an address for the bitmap operations Juan Quintela
2017-03-31 12:22   ` Dr. David Alan Gilbert
2017-04-04 18:21     ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 46/51] ram: Remember last_page instead of last_offset Juan Quintela
2017-03-31  9:09   ` Dr. David Alan Gilbert
2017-04-04 18:24     ` Juan Quintela
2017-03-23 20:45 ` [Qemu-devel] [PATCH 47/51] ram: Change offset field in PageSearchStatus to page Juan Quintela
2017-03-31 12:31   ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 48/51] ram: Use ramblock and page offset instead of absolute offset Juan Quintela
2017-03-31 17:17   ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 49/51] ram: rename last_ram_offset() last_ram_pages() Juan Quintela
2017-03-31 14:23   ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 50/51] ram: Use RAMBitmap type for coherence Juan Quintela
2017-03-31 14:27   ` Dr. David Alan Gilbert
2017-03-23 20:45 ` [Qemu-devel] [PATCH 51/51] migration: Remove MigrationState parameter from migration_is_idle() Juan Quintela
2017-03-24 16:38   ` Dr. David Alan Gilbert
2017-03-31 14:34 ` [Qemu-devel] [PATCH v2 00/51] Creating RAMState for migration Dr. David Alan Gilbert
2017-04-04 17:22   ` Juan Quintela
2017-04-04 17:36     ` Dr. David Alan Gilbert

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=20170326134331.GH17755@pxdev.xzpeter.org \
    --to=peterx@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@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.