On 02/27/2012 12:42 PM, Stefan Hajnoczi wrote: >> > >> > Once non-incremental mode is added, I suspect blkmirror will diverge >> > from blkverify significantly. In particular, we would need to track >> > where have writes been done in the destination. We also would need to >> > hooks for block/stream.c, or perhaps a completely separate >> > implementation of streaming. > I'm not familiar with non-incremental mode, could you please explain > it or link to it?
Non-incremental mode is "pre-copy" migration. It would stream in the background from the source to the destination. In this case: - you need to differentiate streaming writes from other writes. When streaming, you do not want to issue spurious writes to the source; - you can skip streaming anything that has been written to the destination already. This means that you need: 1) a bitmap similar to is_allocated; 2) to widen writes to a cluster; 3) serialization similar to copy-on-read. I'm not yet sure how much of this will be generalized in the block layer and block/stream.c, and how much will be specific to blkmirror, but in general none of this applies to blkverify. Paolo