On Tue, May 14, 2013 at 12:45 PM, Paolo Bonzini <pbonz...@redhat.com> wrote:
> No, I'll just reuse the same hooks within block/mirror.c (almost... it > looks like I need after_write too, not just before_write :( that's a > pity). Basically: > > 1) before the write, if there is space in the job's buffers, allocate a > MirrorOp and a data buffer for the write. Also record whether the block > was dirty before; > > 2) after the write, do nothing if there was no room to allocate the data > buffer. Else clear the block from the dirty bitmap. If the block was > dirty, read the whole cluster from the source as in passive mirroring. > If it wasn't, copy the data from guest memory to the preallocated buffer > and write it to the destination; > > > If I knew more about what you > > had in mind, I wouldn't mind trying to add this 'active' mode to > > 'drive-mirror' > > and test it with my use case. I want to avoid duplicate work, so if you > > want to implement it yourself I can defer this. > > Also the other way round. If you want to give it a shot based on the > above spec just tell me. Talked with my group here as well. I think I'd like to give it a shot based on the above spec rather than refactor my code into a new command. This way it will hopefully reduce duplicated efforts, and provide extra testing for the "active mirroring" code. I'll take a pass through the mirror code to make sure I understand it better than I currently do. Would you like to coordinate off-list until we have a patch? -- Wolf