mirror: finish earlier on error
authorVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Wed, 3 Aug 2016 12:56:44 +0000 (15:56 +0300)
committerKevin Wolf <kwolf@redhat.com>
Mon, 8 Aug 2016 11:05:43 +0000 (13:05 +0200)
Stop to produce new async copy requests from mirror_iteration if
critical error (error action = BLOCK_ERROR_ACTION_REPORT) detected.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/mirror.c

index d6034f5b709f7fe3b452d472022dd2e28ead0361..e0b3f4180f302cfa7edb2d82f8a613d16fe150be 100644 (file)
@@ -419,6 +419,10 @@ static uint64_t coroutine_fn mirror_iteration(MirrorBlockJob *s)
             mirror_wait_for_io(s);
         }
 
+        if (s->ret < 0) {
+            return 0;
+        }
+
         mirror_clip_sectors(s, sector_num, &io_sectors);
         switch (mirror_method) {
         case MIRROR_METHOD_COPY: