• David Hildenbrand's avatar
    virtio-mem: remove unsafe unplug in Big Block Mode (BBM) · f504e15b
    David Hildenbrand authored
    When "unsafe unplug" is enabled, we don't fake-offline all memory ahead of
    actual memory offlining using alloc_contig_range(). Instead, we rely on
    offline_pages() to also perform actual page migration, which might fail
    or take a very long time.
    
    In that case, it's possible to easily run into endless loops that cannot be
    aborted anymore (as offlining is triggered by a workqueue then): For
    example, a single (accidentally) permanently unmovable page in
    ZONE_MOVABLE results in an endless loop. For ZONE_NORMAL, races between
    isolating the pageblock (and checking for unmovable pages) and
    concurrent page allocation are possible and similarly result in endless
    loops.
    
    The idea of the unsafe unplug mode was to make it possible to more
    reliably unplug large memory blocks. However, (a) we really should be
    tackling that differently, by extending the alloc_contig_range()-based
    mechanism; and (b) this mode is not the default and as far as I know,
    it's unused either way.
    
    So let's simply get rid of it.
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20230713145551.2824980-2-david@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    f504e15b
virtio_mem.c 78.9 KB