1. 19 5月, 2011 1 次提交
  2. 08 5月, 2011 4 次提交
  3. 27 4月, 2011 1 次提交
  4. 26 4月, 2011 1 次提交
  5. 07 4月, 2011 1 次提交
    • M
      exit if -drive specified is invalid instead of ignoring the "wrong" -drive · e2982c3a
      Michael Tokarev 提交于
      This fixes the problem when qemu continues even if -drive specification
      is somehow invalid, resulting in a mess.  Applicable for both current
      master and for stable-0.14 (and the same issue exist 0.13 and 0.12 too).
      
      The prob can actually be seriuos: when you start guest with two drives
      and make an error in the specification of one of them, and the guest
      has something like a raid array on the two drives, guest may start failing
      that array or kick "missing" drives which may result in a mess - this is
      what actually happened to me, I did't want a resync at all, and a resync
      resulted in re-writing (and allocating) a 4TB virtual drive I used for
      testing, which in turn resulted in my filesystem filling up and whole
      thing failing badly.  Yes it was just testing VM, I experimented with
      larger raid arrays, but the end result was quite, well, unexpected.
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      Acked-by: NJes Sorensen <Jes.Sorensen@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      e2982c3a
  6. 04 4月, 2011 3 次提交
  7. 29 3月, 2011 1 次提交
  8. 26 3月, 2011 1 次提交
  9. 25 3月, 2011 1 次提交
  10. 22 3月, 2011 6 次提交
  11. 21 3月, 2011 1 次提交
    • P
      change all rt_clock references to use millisecond resolution accessors · 7bd427d8
      Paolo Bonzini 提交于
      This was done with:
      
          sed -i '/get_clock\>.*rt_clock/s/get_clock\>/get_clock_ms/' \
              $(git grep -l 'get_clock\>.*rt_clock' )
          sed -i '/new_timer\>.*rt_clock/s/new_timer\>/new_timer_ms/' \
              $(git grep -l 'new_timer\>.*rt_clock' )
      
      after checking that get_clock and new_timer never occur twice
      on the same line.  There were no missed occurrences; however, even
      if there had been, they would have been caught by the compiler.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7bd427d8
  12. 16 3月, 2011 1 次提交
  13. 15 3月, 2011 1 次提交
  14. 07 3月, 2011 1 次提交
    • S
      simpletrace: Thread-safe tracing · 0b5538c3
      Stefan Hajnoczi 提交于
      Trace events outside the global mutex cannot be used with the simple
      trace backend since it is not thread-safe.  There is no check to prevent
      them being enabled so people sometimes learn this the hard way.
      
      This patch restructures the simple trace backend with a ring buffer
      suitable for multiple concurrent writers.  A writeout thread empties the
      trace buffer when threshold fill levels are reached.  Should the
      writeout thread be unable to keep up with trace generation, records will
      simply be dropped.
      
      Each time events are dropped a special record is written to the trace
      file indicating how many events were dropped.  The event ID is
      0xfffffffffffffffe and its signature is dropped(uint32_t count).
      Signed-off-by: NStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
      0b5538c3
  15. 14 2月, 2011 7 次提交
  16. 05 2月, 2011 1 次提交
  17. 31 1月, 2011 4 次提交
    • M
      blockdev: Fix drive_add for drives without media · 319ae529
      Markus Armbruster 提交于
      Watch this:
      
          (qemu) drive_add 0 if=none
          (qemu) info block
          none0: type=hd removable=0 [not inserted]
          (qemu) drive_del none0
          Segmentation fault (core dumped)
      
      add_init_drive() is confused about drive_init()'s failure modes, and
      cleans up when it shouldn't.  This leaves the DriveInfo with member
      opts dangling.  drive_del attempts to free it, and dies.
      
      drive_init() behaves as follows:
      
      * If it created a drive with media, it returns its DriveInfo.
      
      * If it created a drive without media, it clears *fatal_error and
        returns NULL.
      
      * If it couldn't create a drive, it sets *fatal_error and returns
        NULL.
      
      Of its three callers:
      
      * drive_init_func() is correct.
      
      * usb_msd_init() assumes drive_init() failed when it returns NULL.
        This is correct only because it always passes option "file", and
        "drive without media" can't happen then.
      
      * add_init_drive() assumes drive_init() failed when it returns NULL.
        This is incorrect.
      
      Clean up drive_init() to return NULL on failure and only on failure.
      Drop its parameter fatal_error.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      319ae529
    • M
      blockdev: Replace drive_add()'s fmt, ... by optstr parameter · 5645b0f4
      Markus Armbruster 提交于
      Let the callers build the optstr.  Only one wants to.  All the others
      become simpler, because they don't have to worry about escaping '%'.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      5645b0f4
    • M
      blockdev: Reject multiple definitions for the same drive · 4e5d9b57
      Markus Armbruster 提交于
      We silently ignore multiple definitions for the same drive:
      
          $ qemu-system-x86_64 -nodefaults -vnc :1 -S -monitor stdio -drive if=ide,index=1,file=tmp.qcow2 -drive if=ide,index=1,file=nonexistant
          QEMU 0.13.50 monitor - type 'help' for more information
          (qemu) info block
          ide0-hd1: type=hd removable=0 file=tmp.qcow2 backing_file=tmp.img ro=0 drv=qcow2 encrypted=0
      
      With if=none, this can become quite confusing:
      
          $ qemu-system-x86_64 -nodefaults -vnc :1 -S -monitor stdio -drive if=none,index=1,file=tmp.qcow2,id=eins -drive if=none,index=1,file=nonexistant,id=zwei -device ide-drive,drive=eins -device ide-drive,drive=zwei
          qemu-system-x86_64: -device ide-drive,drive=zwei: Property 'ide-drive.drive' can't find value 'zwei'
      
      The second -device fails, because it refers to drive zwei, which got
      silently ignored.
      
      Make multiple drive definitions fail cleanly.
      
      Unfortunately, there's code that relies on multiple drive definitions
      being silently ignored: main() merrily adds default drives even when
      the user already defined these drives.  Fix that up.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      4e5d9b57
    • M
      blockdev: Make drive_add() take explicit type, index parameters · 2292ddae
      Markus Armbruster 提交于
      Before, type & index were hidden in printf-like fmt, ... parameters,
      which get expanded into an option string.  Rather inconvenient for
      uses later in this series.
      
      New IF_DEFAULT to ask for the machine's default interface.  Before,
      that was done by having no option "if" in the option string.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      2292ddae
  18. 24 1月, 2011 1 次提交
  19. 23 1月, 2011 1 次提交
  20. 28 12月, 2010 1 次提交
  21. 20 12月, 2010 1 次提交
    • I
      qbus: register reset handler for qbus whose parent is NULL · 80376c3f
      Isaku Yamahata 提交于
      Stefan Weil reported the regression caused by
      ec990eb6 as follows
      
      > The second regression also occurs with MIPS malta.
      > Networking no longer works with the default pcnet nic.
      >
      > This is caused because the reset function for pcnet is no
      > longer called during system boot. The result in an invalid
      > mac address (all zero) and a non-working nic.
      >
      > For this second regression I still have no simple solution.
      > Of course mips_malta.c should be converted to qdev which
      > would fix both problems (but only for malta system emulation).
      
      The issue is, it is assumed that all qbuses, qdeves are under
      main_system_bus. But there are qbuses whose parent is NULL. So it
      is necessary to trigger reset for those qbuses.
      (On the other hand, if NULL is passed to qdev_create(), its parent bus
      is main_system_bus.)
      Ideally those buses should be moved under bus controller
      device which is qdev. But it's not done yet.
      So register qbus reset handler for qbus whose parent is NULL.
      Reported-by: NStefan Weil <weil@mail.berlios.de>
      Signed-off-by: N"Michael S. Tsirkin" <mst@redhat.com>
      Signed-off-by: NIsaku Yamahata <yamahata@valinux.co.jp>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      80376c3f