]> git.proxmox.com Git - qemu.git/commitdiff
Merge remote-tracking branch 'quintela/thread.next' into staging
authorAnthony Liguori <aliguori@us.ibm.com>
Mon, 21 Jan 2013 19:22:43 +0000 (13:22 -0600)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 21 Jan 2013 19:22:43 +0000 (13:22 -0600)
# By Juan Quintela (7) and Paolo Bonzini (6)
# Via Juan Quintela
* quintela/thread.next:
  migration: remove argument to qemu_savevm_state_cancel
  migration: Only go to the iterate stage if there is anything to send
  migration: unfold rest of migrate_fd_put_ready() into thread
  migration: move exit condition to migration thread
  migration: Add buffered_flush error handling
  migration: move beginning stage to the migration thread
  qemu-file: Only set last_error if it is not already set
  migration: fix off-by-one in buffered_rate_limit
  migration: remove double call to migrate_fd_close
  migration: make function static
  use XFER_LIMIT_RATIO consistently
  Protect migration_bitmap_sync() with the ramlist lock
  Unlock ramlist lock also in error case

1  2 
include/sysemu/sysemu.h
savevm.c

diff --combined include/sysemu/sysemu.h
index 6599617def4b7b32437bac176564c592b19c8667,d65a9f1195e52464cb189cf8055c2089da13ce7b..337ce7df0cc750c476c377945244f07b42edd84a
@@@ -68,7 -68,7 +68,7 @@@ void qemu_add_machine_init_done_notifie
  void do_savevm(Monitor *mon, const QDict *qdict);
  int load_vmstate(const char *name);
  void do_delvm(Monitor *mon, const QDict *qdict);
 -void do_info_snapshots(Monitor *mon);
 +void do_info_snapshots(Monitor *mon, const QDict *qdict);
  
  void qemu_announce_self(void);
  
@@@ -77,7 -77,7 +77,7 @@@ int qemu_savevm_state_begin(QEMUFile *f
                              const MigrationParams *params);
  int qemu_savevm_state_iterate(QEMUFile *f);
  int qemu_savevm_state_complete(QEMUFile *f);
- void qemu_savevm_state_cancel(QEMUFile *f);
+ void qemu_savevm_state_cancel(void);
  uint64_t qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size);
  int qemu_loadvm_state(QEMUFile *f);
  
@@@ -171,7 -171,7 +171,7 @@@ extern CharDriverState *parallel_hds[MA
  
  void do_usb_add(Monitor *mon, const QDict *qdict);
  void do_usb_del(Monitor *mon, const QDict *qdict);
 -void usb_info(Monitor *mon);
 +void usb_info(Monitor *mon, const QDict *qdict);
  
  void rtc_change_mon_event(struct tm *tm);
  
@@@ -179,7 -179,7 +179,7 @@@ void register_devices(void)
  
  void add_boot_device_path(int32_t bootindex, DeviceState *dev,
                            const char *suffix);
 -char *get_boot_devices_list(uint32_t *size);
 +char *get_boot_devices_list(size_t *size);
  
  bool usb_enabled(bool default_usb);
  
diff --combined savevm.c
index d9ff1d9b7220684a408f0ecc7adcb965cf9a6d1a,913a6235ab2f6465df943866e5cf93e63f4b18ef..304d1effe5490345971410c0de1398a163694d1c
+++ b/savevm.c
@@@ -419,7 -419,9 +419,9 @@@ int qemu_file_get_error(QEMUFile *f
  
  static void qemu_file_set_error(QEMUFile *f, int ret)
  {
-     f->last_error = ret;
+     if (f->last_error == 0) {
+         f->last_error = ret;
+     }
  }
  
  /** Flushes QEMUFile buffer
@@@ -1588,13 -1590,13 +1590,13 @@@ int qemu_savevm_state_begin(QEMUFile *f
  
          ret = se->ops->save_live_setup(f, se->opaque);
          if (ret < 0) {
-             qemu_savevm_state_cancel(f);
+             qemu_savevm_state_cancel();
              return ret;
          }
      }
      ret = qemu_file_get_error(f);
      if (ret != 0) {
-         qemu_savevm_state_cancel(f);
+         qemu_savevm_state_cancel();
      }
  
      return ret;
@@@ -1645,7 -1647,7 +1647,7 @@@ int qemu_savevm_state_iterate(QEMUFile 
      }
      ret = qemu_file_get_error(f);
      if (ret != 0) {
-         qemu_savevm_state_cancel(f);
+         qemu_savevm_state_cancel();
      }
      return ret;
  }
@@@ -1725,7 -1727,7 +1727,7 @@@ uint64_t qemu_savevm_state_pending(QEMU
      return ret;
  }
  
- void qemu_savevm_state_cancel(QEMUFile *f)
+ void qemu_savevm_state_cancel(void)
  {
      SaveStateEntry *se;
  
@@@ -2307,7 -2309,7 +2309,7 @@@ void do_delvm(Monitor *mon, const QDic
      }
  }
  
 -void do_info_snapshots(Monitor *mon)
 +void do_info_snapshots(Monitor *mon, const QDict *qdict)
  {
      BlockDriverState *bs, *bs1;
      QEMUSnapshotInfo *sn_tab, *sn, s, *sn_info = &s;