On 05/20/2016 03:36 PM, Changlong Xie wrote:
+
+ /*
+ * Must protect backup target if backup job was stopped/cancelled
+ * unexpectedly
+ */
+ bdrv_ref(s->hidden_disk->bs);
+
+ backup_start(s->secondary_disk->bs, s->hidden_disk->bs, 0,
+ MIRROR_SYNC_MODE_NONE, NULL, BLOCKDEV_ON_ERROR_REPORT,
+ BLOCKDEV_ON_ERROR_REPORT, backup_job_completed,
+ s, NULL, &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ backup_job_cleanup(s);
+ bdrv_unref(s->hidden_disk->bs);
+ aio_context_release(aio_context);
+ return;
+ }
+ break;
+ default:
+ aio_context_release(aio_context);
+ abort();
+ }
commit 5c438bc6 introduce BB for I/O, so we don't need protect backup
target by ourself now.
- /*
- * Must protect backup target if backup job was stopped/cancelled
- * unexpectedly
- */
- bdrv_ref(s->hidden_disk->bs);
-
backup_start(s->secondary_disk->bs, s->hidden_disk->bs, 0,
MIRROR_SYNC_MODE_NONE, NULL,
BLOCKDEV_ON_ERROR_REPORT,
BLOCKDEV_ON_ERROR_REPORT, backup_job_completed,
@@ -508,7 +502,6 @@ static void replication_start(ReplicationState *rs,
ReplicationMode mode,
if (local_err) {
error_propagate(errp, local_err);
backup_job_cleanup(s);
- bdrv_unref(s->hidden_disk->bs);
aio_context_release(aio_context);
return;
}
will update in next version.