Skip to content
  • Richard W.M. Jones's avatar
    796a060b
    block/curl: Don't lose original error when a connection fails. · 796a060b
    Richard W.M. Jones authored
    Currently if qemu is connected to a curl source (eg. web server), and
    the web server fails / times out / dies, you always see a bogus EIO
    "Input/output error".
    
    For example, choose a large file located on any local webserver which
    you control:
    
      $ qemu-img convert -p http://example.com/large.iso /tmp/test
    
    Once it starts copying the file, stop the webserver and you will see
    qemu-img fail with:
    
      qemu-img: error while reading sector 61440: Input/output error
    
    This patch does two things: Firstly print the actual error from curl
    so it doesn't get lost.  Secondly, change EIO to EPROTO.  EPROTO is a
    POSIX.1 compatible errno which more accurately reflects that there was
    a protocol error, rather than some kind of hardware failure.
    
    After this patch is applied, the error changes to:
    
      $ qemu-img convert -p http://example.com/large.iso
    
     /tmp/test
      qemu-img: curl: transfer closed with 469989 bytes remaining to read
      qemu-img: error while reading sector 16384: Protocol error
    
    Signed-off-by: default avatarRichard W.M. Jones <rjones@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarJeff Cody <jcody@redhat.com>
    796a060b
    block/curl: Don't lose original error when a connection fails.
    Richard W.M. Jones authored
    Currently if qemu is connected to a curl source (eg. web server), and
    the web server fails / times out / dies, you always see a bogus EIO
    "Input/output error".
    
    For example, choose a large file located on any local webserver which
    you control:
    
      $ qemu-img convert -p http://example.com/large.iso /tmp/test
    
    Once it starts copying the file, stop the webserver and you will see
    qemu-img fail with:
    
      qemu-img: error while reading sector 61440: Input/output error
    
    This patch does two things: Firstly print the actual error from curl
    so it doesn't get lost.  Secondly, change EIO to EPROTO.  EPROTO is a
    POSIX.1 compatible errno which more accurately reflects that there was
    a protocol error, rather than some kind of hardware failure.
    
    After this patch is applied, the error changes to:
    
      $ qemu-img convert -p http://example.com/large.iso
    
     /tmp/test
      qemu-img: curl: transfer closed with 469989 bytes remaining to read
      qemu-img: error while reading sector 16384: Protocol error
    
    Signed-off-by: default avatarRichard W.M. Jones <rjones@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarJeff Cody <jcody@redhat.com>
Loading