1. 03 12月, 2009 18 次提交
  2. 09 11月, 2009 2 次提交
  3. 15 10月, 2009 1 次提交
  4. 05 10月, 2009 2 次提交
  5. 11 9月, 2009 1 次提交
    • C
      block: add enable_write_cache flag · e900a7b7
      Christoph Hellwig 提交于
      Add a enable_write_cache flag in the block driver state, and use it to
      decide if we claim to have a volatile write cache that needs controlled
      flushing from the guest.  The flag is off if cache=writethrough is
      defined because O_DSYNC guarantees that every write goes to stable
      storage, and it is on for cache=none and cache=writeback.
      
      Both scsi-disk and ide now use the new flage, changing from their
      defaults of always off (ide) or always on (scsi-disk).
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      e900a7b7
  6. 10 9月, 2009 1 次提交
  7. 30 7月, 2009 1 次提交
    • M
      Fix VM state change handlers running out of order · 213189ab
      Markus Armbruster 提交于
      When a VM state change handler changes VM state, other VM state change
      handlers can see the state transitions out of order.
      
      bmdma_map(), scsi_disk_init() and virtio_blk_init() install VM state
      change handlers to restart DMA.  These handlers can vm_stop() by
      running into a write error on a drive with werror=stop.  This throws
      the VM state change handler callback into disarray.  Here's an example
      case I observed:
      
      0. The virtual IDE drive goes south.  All future writes return errors.
      
      1. Something encounters a write error, and duly stops the VM with
         vm_stop().
      
      2. vm_stop() calls vm_state_notify(0).
      
      3. vm_state_notify() runs the callbacks in list vm_change_state_head.
         It contains ide_dma_restart_cb() installed by bmdma_map().  It also
         contains audio_vm_change_state_handler() installed by audio_init().
      
      4. audio_vm_change_state_handler() stops audio stuff.
      
      5. User continues VM with monitor command "c".  This runs vm_start().
      
      6. vm_start() calls vm_state_notify(1).
      
      7. vm_state_notify() runs the callbacks in vm_change_state_head.
      
      8. ide_dma_restart_cb() happens to come first.  It does its work, runs
         into a write error, and duly stops the VM with vm_stop().
      
      9. vm_stop() runs vm_state_notify(0).
      
      10. vm_state_notify() runs the callbacks in vm_change_state_head.
      
      11. audio_vm_change_state_handler() stops audio stuff.  Which isn't
         running.
      
      12. vm_stop() finishes, ide_dma_restart_cb() finishes, step 7's
         vm_state_notify() resumes running handlers.
      
      13. audio_vm_change_state_handler() starts audio stuff.  Oopsie.
      
      Fix this by moving the actual write from each VM state change handler
      into a new bottom half (suggested by Gleb Natapov).
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      213189ab
  8. 21 7月, 2009 1 次提交
  9. 14 5月, 2009 1 次提交
  10. 14 4月, 2009 1 次提交
  11. 08 4月, 2009 1 次提交
  12. 29 3月, 2009 4 次提交
  13. 30 1月, 2009 1 次提交
  14. 29 1月, 2009 3 次提交
  15. 23 1月, 2009 1 次提交
  16. 15 1月, 2009 1 次提交