1. 12 Sep, 2013 1 commit
  2. 22 Mar, 2013 1 commit
  3. 15 Mar, 2013 1 commit
  4. 01 Feb, 2013 2 commits
  5. 19 Dec, 2012 2 commits
  6. 21 Oct, 2011 2 commits
    • Paolo Bonzini's avatar
      block: take lock around bdrv_read implementations · 2914caa0
      Paolo Bonzini authored
      This does the first part of the conversion to coroutines, by
      wrapping bdrv_read implementations to take the mutex.
      
      Drivers that implement bdrv_read rather than bdrv_co_readv can
      then benefit from asynchronous operation (at least if the underlying
      protocol supports it, which is not the case for raw-win32), even
      though they still operate with a bounce buffer.
      
      raw-win32 does not need the lock, because it cannot yield.
      nbd also doesn't probably, but better be safe.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      2914caa0
    • Paolo Bonzini's avatar
      block: add a CoMutex to synchronous read drivers · 848c66e8
      Paolo Bonzini authored
      The big conversion of bdrv_read/write to coroutines caused the two
      homonymous callbacks in BlockDriver to become reentrant.  It goes
      like this:
      
      1) bdrv_read is now called in a coroutine, and calls bdrv_read or
      bdrv_pread.
      
      2) the nested bdrv_read goes through the fast path in bdrv_rw_co_entry;
      
      3) in the common case when the protocol is file, bdrv_co_do_readv calls
      bdrv_co_readv_em (and from here goes to bdrv_co_io_em), which yields
      until the AIO operation is complete;
      
      4) if bdrv_read had been called from a bottom half, the main loop
      is free to iterate again: a device model or another bottom half
      can then come and call bdrv_read again.
      
      This applies to all four of read/write/flush/discard.  It would also
      apply to is_allocated, but it is not used from within coroutines:
      besides qemu-img.c and qemu-io.c, which operate synchronously, the
      only user is the monitor.  Copy-on-read will introduce a use in the
      block layer, and will require converting it.
      
      The solution is "simply" to convert all drivers to coroutines!  We
      just need to add a CoMutex that is taken around affected operations.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      848c66e8
  7. 20 Aug, 2011 1 commit
  8. 17 May, 2010 3 commits
  9. 03 May, 2010 1 commit
    • Kevin Wolf's avatar
      block: Open the underlying image file in generic code · 66f82cee
      Kevin Wolf authored
      Format drivers shouldn't need to bother with things like file names, but rather
      just get an open BlockDriverState for the underlying protocol. This patch
      introduces this behaviour for bdrv_open implementation. For protocols which
      need to access the filename to open their file/device/connection/... a new
      callback bdrv_file_open is introduced which doesn't get an underlying file
      opened.
      
      For now, also some of the more obscure formats use bdrv_file_open because they
      open() the file themselves instead of using the block.c functions. They need to
      be fixed in later patches.
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      66f82cee
  10. 11 Jan, 2010 1 commit
  11. 09 Jul, 2009 1 commit
  12. 29 Jun, 2009 1 commit
    • Ram Pai's avatar
      support colon in filenames · 707c0dbc
      Ram Pai authored
      Problem: It is impossible to feed filenames with the character colon because
      qemu interprets such names as a protocol. For example filename scsi:0, is
      interpreted as a protocol by name "scsi".
      
      This patch allows user to espace colon characters. For example the above
      filename can now be expressed either as 'scsi\:0' or as file:scsi:0
      
      anything following the "file:" tag is interpreted verbatin. However if "file:"
      tag is omitted then any colon characters in the string must be escaped using
      backslash.
      
      Here are couple of examples:
      
      scsi\:0\:abc is a local file scsi:0:abc
      http\://myweb is a local file by name http://myweb
      file:scsi:0:abc is a local file scsi:0:abc
      file:http://myweb is a local file by name http://mywebSigned-off-by: default avatarRam Pai <linuxram@us.ibm.com>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      707c0dbc
  13. 14 May, 2009 2 commits
  14. 07 Mar, 2009 2 commits
  15. 05 Feb, 2009 1 commit
  16. 13 Dec, 2008 1 commit
  17. 06 Aug, 2008 1 commit
  18. 10 Nov, 2007 1 commit
  19. 17 Sep, 2007 1 commit
  20. 16 Sep, 2007 1 commit
  21. 01 Aug, 2006 1 commit
  22. 01 Feb, 2006 1 commit
  23. 28 Apr, 2005 1 commit
  24. 03 Jan, 2005 1 commit
  25. 12 Dec, 2004 1 commit