> > We don't need a way to pass data from before to after hooks, a simple > > scan of a linked list will do. > > So in this case the linked list is the way.
Point taken. :) > > > Does the "if there was no room" part mean that the mirror is active only > > > sometimes? > > > > Yes, otherwise the guest can allocate arbitrary amounts of memory in the > > host just by starting a few very large I/O operations. > > I think I would rather throttle I/O in this case, i.e. requests wait > until they can get the space. At least for a synchronous mirror we > have to do something like this. Yes, but this is still asynchronous. The active part is just an optimization to avoid write amplification (where small random writes require I/O of an entire block as big as the bitmap granularity). > > > And why even bother with a dirty bitmap for an active mirror? The > > > background job that sequentially processes the whole image only needs a > > > counter, no bitmap. > > > > That's not enough for the case when the host crashes and you have to > > restart the mirroring or complete it offline. > > You're thinking of a persistent bitmap here? Makes sense then, I didn't > think about that. Yes. Paolo