* Yang Hongyang (yanghy@xxxxxxxxxxxxxx) wrote: > We need a buffer to store migration data. > > On save side: > all saved data was write into colo buffer first, so that we can know > the total size of the migration data. this can also separate the data > transmission from colo control data, we use colo control data over > socket fd to synchronous both side's stat. > > On restore side: > all migration data was read into colo buffer first, then load data > from the buffer: If network error happens while data transmission, > the slaver can still functinal because the migration data are not yet > loaded. This is very similar to the QEMUSizedBuffer based QEMUFile's that Stefan Berger wrote and that I use in both my postcopy and BER patchsets: http://lists.gnu.org/archive/html/qemu-devel/2014-07/msg00846.html (and to the similar code from Isaku Yamahata). I think we should be able to use a shared version even if we need some changes. > > Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> > --- > migration-colo.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 112 insertions(+) > > diff --git a/migration-colo.c b/migration-colo.c > index d566b9d..b90d9b6 100644 > --- a/migration-colo.c > +++ b/migration-colo.c > @@ -11,6 +11,7 @@ > #include "qemu/main-loop.h" > #include "qemu/thread.h" > #include "block/coroutine.h" > +#include "qemu/error-report.h" > #include "migration/migration-colo.h" > > static QEMUBH *colo_bh; > @@ -20,14 +21,122 @@ bool colo_supported(void) > return true; > } > > +/* colo buffer */ > + > +#define COLO_BUFFER_BASE_SIZE (1000*1000*4ULL) > +#define COLO_BUFFER_MAX_SIZE (1000*1000*1000*10ULL) Powers of 2 are nicer! Dave -- Dr. David Alan Gilbert / dgilbert@xxxxxxxxxx / Manchester, UK -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html