Skip to content
  • David Hildenbrand's avatar
    dd8eeb96
    virtio-balloon: always indicate S_DONE when migration fails · dd8eeb96
    David Hildenbrand authored
    
    
    If something goes wrong during precopy, before stopping the VM, we will
    never send a S_DONE indication to the VM, resulting in the hinted pages
    not getting released to be used by the guest OS (e.g., Linux).
    
    Easy to reproduce:
    1. Start migration (e.g., HMP "migrate -d 'exec:gzip -c > STATEFILE.gz'")
    2. Cancel migration (e.g., HMP "migrate_cancel")
    3. Oberve in the guest (e.g., cat /proc/meminfo) that there is basically
       no free memory left.
    
    While at it, add similar locking to virtio_balloon_free_page_done() as
    done in virtio_balloon_free_page_stop. Locking is still weird, but that
    has to be sorted out separately.
    
    There is nothing to do in the PRECOPY_NOTIFY_COMPLETE case. Add some
    comments regarding S_DONE handling.
    
    Fixes: c13c4153 ("virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT")
    Reviewed-by: default avatarAlexander Duyck <alexander.h.duyck@linux.intel.com>
    Cc: Wei Wang <wei.w.wang@intel.com>
    Cc: Alexander Duyck <alexander.duyck@gmail.com>
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20200629080615.26022-1-david@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    dd8eeb96
    virtio-balloon: always indicate S_DONE when migration fails
    David Hildenbrand authored
    
    
    If something goes wrong during precopy, before stopping the VM, we will
    never send a S_DONE indication to the VM, resulting in the hinted pages
    not getting released to be used by the guest OS (e.g., Linux).
    
    Easy to reproduce:
    1. Start migration (e.g., HMP "migrate -d 'exec:gzip -c > STATEFILE.gz'")
    2. Cancel migration (e.g., HMP "migrate_cancel")
    3. Oberve in the guest (e.g., cat /proc/meminfo) that there is basically
       no free memory left.
    
    While at it, add similar locking to virtio_balloon_free_page_done() as
    done in virtio_balloon_free_page_stop. Locking is still weird, but that
    has to be sorted out separately.
    
    There is nothing to do in the PRECOPY_NOTIFY_COMPLETE case. Add some
    comments regarding S_DONE handling.
    
    Fixes: c13c4153 ("virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT")
    Reviewed-by: default avatarAlexander Duyck <alexander.h.duyck@linux.intel.com>
    Cc: Wei Wang <wei.w.wang@intel.com>
    Cc: Alexander Duyck <alexander.duyck@gmail.com>
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20200629080615.26022-1-david@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Loading