Skip to content
  • Kevin Wolf's avatar
    aa269ff8
    qcow2: Fix open with 'file' in iothread · aa269ff8
    Kevin Wolf authored
    
    
    qcow2_open() doesn't work correctly when opening the 'file' child moves
    bs to an iothread, for several reasons:
    
    - It uses BDRV_POLL_WHILE() to wait for the qcow2_open_entry()
      coroutine, which involves dropping the AioContext lock for bs when it
      is not in the main context - but we don't hold it, so this crashes.
    
    - It runs the qcow2_open_entry() coroutine in the current thread instead
      of the new AioContext of bs.
    
    - qcow2_open_entry() doesn't notify the main loop when it's done.
    
    This patches fixes these issues around delegating work to a coroutine.
    Temporarily dropping the main AioContext lock is not necessary because
    we know we run in the main thread.
    
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    Message-Id: <20230525124713.401149-7-kwolf@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    aa269ff8
    qcow2: Fix open with 'file' in iothread
    Kevin Wolf authored
    
    
    qcow2_open() doesn't work correctly when opening the 'file' child moves
    bs to an iothread, for several reasons:
    
    - It uses BDRV_POLL_WHILE() to wait for the qcow2_open_entry()
      coroutine, which involves dropping the AioContext lock for bs when it
      is not in the main context - but we don't hold it, so this crashes.
    
    - It runs the qcow2_open_entry() coroutine in the current thread instead
      of the new AioContext of bs.
    
    - qcow2_open_entry() doesn't notify the main loop when it's done.
    
    This patches fixes these issues around delegating work to a coroutine.
    Temporarily dropping the main AioContext lock is not necessary because
    we know we run in the main thread.
    
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    Message-Id: <20230525124713.401149-7-kwolf@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Loading