Il 26/11/2013 14:53, Lei Li ha scritto:
1) ram_save_setup stage, it will send all the bytes in this stages
to destination, and send_pipefd by ram_control_before_iterate
at the end of it.
ram_save_setup runs doesn't send anything from guest RAM. It sends the
lengths of the various blocks. As you said, at the end of
ram_save_setup you send the pipefd.
ram_save_iterate runs before ram_save_complete. ram_save_iterate and
ram_save_complete write data with exactly the same format. Both of them
can use ram_save_page
It should not matter if some pages are sent as part of ram_save_iterate
and others as part of ram_save_complete.
One possibility is that you are hitting a bug due to the way you ignore
the "0x01" byte that send_pipefd places on the socket.
Oops. I might have said this before thinking about postcopy and/or
before seeing the benchmark results from Juan's patches. If this part
of the patch is just an optimization, I'd rather leave it out for now.
I am afraid that page flipping can not proceed correctly without this..
I really would like to understand why, because it really shouldn't (this
shouldn't be a place where you need a hook).