On 04/21/2013 03:17 PM, mrhi...@linux.vnet.ibm.com wrote: > From: "Michael R. Hines" <mrhi...@us.ibm.com> > > This functions allows you to perform your own per-QEMUFileOps > calculation for the value of 'max_size'. > > For RDMA, this calculation artificially limits migration throughput > and needs to be done differently for high-throughput links. > > Signed-off-by: Michael R. Hines <mrhi...@us.ibm.com> > ---
> > +size_t qemu_get_max_size(QEMUFile *f, uint64_t transferred_bytes, > + uint64_t time_spent, uint64_t max_downtime) > +{ > + if (time_spent) { > + mbps = (((double) transferred_bytes * 8.0) / > + ((double) time_spent / 1000.0)) / 1000.0 / 1000.0; > + } else { > + mbps = -1.0; > + } > + > + if (f->ops->get_max_size) { > + return f->ops->get_max_size(f, f->opaque, > + transferred_bytes, time_spent, max_downtime); > + } > + > + return ((double) (transferred_bytes / time_spent)) * > + max_downtime / 1000000; Cast to double is too late; you've already suffered from integer division truncation when you compute (transferred_bytes/time_spent). -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature