Il 28/07/2012 15:46, Eric Blake ha scritto: > On 07/24/2012 05:04 AM, Paolo Bonzini wrote: >> There is really no change in the behavior of the job here, since there >> is still a maximum of one in-flight I/O operation between the source and >> the target. However, this patch already introduces moves the copy logic > > grammar: 'already introduces moves' is awkward, but I'm not sure what > you meant. > >> from mirror_iteration to AIO callbacks; it also adds the logic to count >> in-flight operations, and only complete the job after they have finished. > > s/complete/completes/
Wow, I'm embarrassed... >> >> Some care is required in the error and cancellation cases, in order >> to avoid access to dangling pointers (and consequent corruption). >> >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> --- >> block/mirror.c | 161 >> ++++++++++++++++++++++++++++++++++++++++++-------------- >> trace-events | 2 + >> 2 files changed, 123 insertions(+), 40 deletions(-) >> >> diff --git a/block/mirror.c b/block/mirror.c >> index 81a600b..971c923 100644 >> --- a/block/mirror.c >> +++ b/block/mirror.c >> @@ -17,7 +17,7 @@ >> #include "qemu/ratelimit.h" >> #include "bitmap.h" >> >> -#define SLICE_TIME 100000000ULL /* ns */ >> +#define SLICE_TIME 100000000ULL /* ns */ > > Why the spurious respacing? This patch was split from the one that introduces MAX_IN_FLIGHT. #define SLICE_TIME 100000000ULL /* ns */ +#define MAX_IN_FLIGHT 16 so the respacing belongs there. Paolo