Skip to content
  • Stefan Hajnoczi's avatar
    5b82b703
    memory: RCU ram_list.dirty_memory[] for safe RAM hotplug · 5b82b703
    Stefan Hajnoczi authored
    
    
    Although accesses to ram_list.dirty_memory[] use atomics so multiple
    threads can safely dirty the bitmap, the data structure is not fully
    thread-safe yet.
    
    This patch handles the RAM hotplug case where ram_list.dirty_memory[] is
    grown.  ram_list.dirty_memory[] is change from a regular bitmap to an
    RCU array of pointers to fixed-size bitmap blocks.  Threads can continue
    accessing bitmap blocks while the array is being extended.  See the
    comments in the code for an in-depth explanation of struct
    DirtyMemoryBlocks.
    
    I have tested that live migration with virtio-blk dataplane works.
    
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Message-Id: <1453728801-5398-2-git-send-email-stefanha@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    5b82b703
    memory: RCU ram_list.dirty_memory[] for safe RAM hotplug
    Stefan Hajnoczi authored
    
    
    Although accesses to ram_list.dirty_memory[] use atomics so multiple
    threads can safely dirty the bitmap, the data structure is not fully
    thread-safe yet.
    
    This patch handles the RAM hotplug case where ram_list.dirty_memory[] is
    grown.  ram_list.dirty_memory[] is change from a regular bitmap to an
    RCU array of pointers to fixed-size bitmap blocks.  Threads can continue
    accessing bitmap blocks while the array is being extended.  See the
    comments in the code for an in-depth explanation of struct
    DirtyMemoryBlocks.
    
    I have tested that live migration with virtio-blk dataplane works.
    
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Message-Id: <1453728801-5398-2-git-send-email-stefanha@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading