Skip to content
  • Sergio Lopez's avatar
    virtio-blk: schedule virtio_notify_config to run on main context · 9b92fbcf
    Sergio Lopez authored
    
    
    virtio_notify_config() needs to acquire the global mutex, which isn't
    allowed from an iothread, and may lead to a deadlock like this:
    
     - main thead
      * Has acquired: qemu_global_mutex.
      * Is trying the acquire: iothread AioContext lock via
        AIO_WAIT_WHILE (after aio_poll).
    
     - iothread
      * Has acquired: AioContext lock.
      * Is trying to acquire: qemu_global_mutex (via
        virtio_notify_config->prepare_mmio_access).
    
    If virtio_blk_resize() is called from an iothread, schedule
    virtio_notify_config() to be run in the main context BH.
    
    [Removed unnecessary newline as suggested by Kevin Wolf
    <kwolf@redhat.com>.
    --Stefan]
    
    Signed-off-by: default avatarSergio Lopez <slp@redhat.com>
    Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
    Message-id: 20190916112411.21636-1-slp@redhat.com
    Message-Id: <20190916112411.21636-1-slp@redhat.com>
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    9b92fbcf