[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-6.1? v2 1/7] mirror: Keep s->synced on error
From: |
Max Reitz |
Subject: |
[PATCH for-6.1? v2 1/7] mirror: Keep s->synced on error |
Date: |
Mon, 26 Jul 2021 16:46:07 +0200 |
An error does not take us out of the READY phase, which is what
s->synced signifies. It does of course mean that source and target are
no longer in sync, but that is what s->actively_sync is for -- s->synced
never meant that source and target are in sync, only that they were at
some point (and at that point we transitioned into the READY phase).
The tangible problem is that we transition to READY once we are in sync
and s->synced is false. By resetting s->synced here, we will transition
from READY to READY once the error is resolved (if the job keeps
running), and that transition is not allowed.
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
block/mirror.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/block/mirror.c b/block/mirror.c
index 98fc66eabf..d73b704473 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -121,7 +121,6 @@ typedef enum MirrorMethod {
static BlockErrorAction mirror_error_action(MirrorBlockJob *s, bool read,
int error)
{
- s->synced = false;
s->actively_synced = false;
if (read) {
return block_job_error_action(&s->common, s->on_source_error,
--
2.31.1
- [PATCH for-6.1? v2 0/7] mirror: Handle errors after READY cancel, Max Reitz, 2021/07/26
- [PATCH for-6.1? v2 1/7] mirror: Keep s->synced on error,
Max Reitz <=
- [PATCH for-6.1? v2 2/7] mirror: Drop s->synced, Max Reitz, 2021/07/26
- [PATCH for-6.1? v2 4/7] jobs: Give Job.force_cancel more meaning, Max Reitz, 2021/07/26
- [PATCH for-6.1? v2 3/7] job: @force parameter for job_cancel_sync{, _all}(), Max Reitz, 2021/07/26
- [PATCH for-6.1? v2 5/7] job: Add job_cancel_requested(), Max Reitz, 2021/07/26