• This patch changes the cache= option to accept none, writeback, or writethough
    to control the host page cache behavior.  By default, writethrough caching is
    now used which internally is implemented by using O_DSYNC to open the disk
    images.  When using -snapshot, writeback is used by default since data integrity
    it not at all an issue.
    
    cache=none has the same behavior as cache=off previously.  The later syntax is
    still supported by now deprecated.  I also cleaned up the O_DIRECT
    implementation to avoid many of the #ifdefs.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    
    
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5485 c046a42c-6fe2-441c-8c8c-71466251a162
    aliguori authored
     
    Browse Code »

  • This patch adds a bdrv_flush_all() function.  It's necessary to ensure that all
    IO operations have been flushed to disk before completely a live migration.
    
    N.B. we don't actually use this now.  We really should flush the block drivers
    using an live savevm callback to avoid unnecessary guest down time.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    
    
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5432 c046a42c-6fe2-441c-8c8c-71466251a162
    aliguori authored
     
    Browse Code »

  • This patch refactors the AIO layer to allow multiple AIO implementations.  It's
    only possible because of the recent signalfd() patch.  
    
    Right now, the AIO infrastructure is pretty specific to the block raw backend.
    For other block devices to implement AIO, the qemu_aio_wait function must
    support registration.  This patch introduces a new function,
    qemu_aio_set_fd_handler, which can be used to register a file descriptor to be
    called back.  qemu_aio_wait() now polls a set of file descriptors registered
    with this function until one becomes readable or writable.
    
    This patch should allow the implementation of alternative AIO backends (via a
    thread pool or linux-aio) and AIO backends in non-traditional block devices
    (like NBD).
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    
    
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5297 c046a42c-6fe2-441c-8c8c-71466251a162
    aliguori authored
     
    Browse Code »

  • Right now, we sprinkle #if defined(QEMU_IMG) && defined(QEMU_NBD) all over the
    code.  It's ugly and causes us to have to build multiple object files for
    linking against qemu and the tools.
    
    This patch introduces a new file, qemu-tool.c which contains enough for
    qemu-img, qemu-nbd, and QEMU to all share the same objects.
    
    This also required getting qemu-nbd to be a bit more Windows friendly.  I also
    changed the Windows block-raw to use normal IO instead of overlapping IO since
    we don't actually do AIO yet on Windows.  I changed the various #if 0's to
     #if WIN32_AIO to make it easier for someone to eventually fix AIO on Windows.
    
    After this patch, there are no longer any #ifdef's related to qemu-img and
    qemu-nbd.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    
    
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5226 c046a42c-6fe2-441c-8c8c-71466251a162
    aliguori authored
     
    Browse Code »

  • This patch introduces signalfd() to work around the signal/select race in
    checking for AIO completions.  For platforms that don't support signalfd(), we
    emulate it with threads.
    
    There was a long discussion about this approach.  I don't believe there are any
    fundamental problems with this approach and I believe eliminating the use of
    signals is a good thing.
    
    I've tested Windows and Linux using Windows and Linux guests.  I've also checked
    for disk IO performance regressions.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    
    
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5187 c046a42c-6fe2-441c-8c8c-71466251a162
    aliguori authored
     
    Browse File »