From nobody Sat Sep 21 07:50:48 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1705071959; cv=none; d=zohomail.com; s=zohoarc; b=EYlMoOKCQLNiu9pYOAous+0GSoGqdshxEcp44kirDa00W1wxF9gjzLF0ZzSzREwXYmNHF4mKeOjqbySiNJ3z/L3VGiKUwy37tChOEnV5doF0jsZX3F8PqtY+rp7ggkBqVXT39bBA7mHJ5IaUetzZ/w2OKA9pygVBEdcla/56vqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705071959; h=Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pB10J5V4TlIpT6ePOcS4re0fCAW0nJLVqS3xWAeCGdg=; b=gGYc9EM0nroYDTgmDPPrXRfNyWd62fmnLNO45b3EI1RDA26hFpILFv8iVdMdE9EEqapJqwqTLISQRUvsXiztPsrh5L4CPIRPGP7t5qpfw8yylA99eEL7CPYDlaKFOmGeftV8LOxetxEfghvWrxmT5/2HyMjkha285KS/s3KhTCg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705071958980408.40200261154587; Fri, 12 Jan 2024 07:05:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rOJ6C-000116-E9; Fri, 12 Jan 2024 10:05:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOJ63-0000yP-Qt for qemu-devel@nongnu.org; Fri, 12 Jan 2024 10:05:24 -0500 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOJ61-0003b5-8Q for qemu-devel@nongnu.org; Fri, 12 Jan 2024 10:05:23 -0500 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40CEbRYb031080; Fri, 12 Jan 2024 15:05:19 GMT Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vk7bmg30n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 12 Jan 2024 15:05:19 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 40CEYT8t013975; Fri, 12 Jan 2024 15:05:18 GMT Received: from pps.reinject (localhost [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3vfurgd8s1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 12 Jan 2024 15:05:18 +0000 Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 40CF5BoO017833; Fri, 12 Jan 2024 15:05:18 GMT Received: from ca-dev63.us.oracle.com (ca-dev63.us.oracle.com [10.211.8.221]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTP id 3vfurgd8k6-10; Fri, 12 Jan 2024 15:05:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=corp-2023-11-20; bh=pB10J5V4TlIpT6ePOcS4re0fCAW0nJLVqS3xWAeCGdg=; b=nZnCmoMSZ8D9SsxnfOdHzoWuNWg3bBwrUM5otjfT3ZgwGKvgxF6bkrdb6hEnBqUEWTm1 Wnxk5vvm+QVjotFts01AZxvHIdnQk1l5JCjjufDnnUwjDzULF/RvWG6YuOVSGGxlFRiB h6SoiatXNH9rolz2nWuPVMSxOuNkygjsEB9UZjZNMIHvr6cs5HXg2FTwgqmPQ5NyXCIM 4BOgk/eMkXhq0B/s9E1ZZ582aQ+So8XrU+U/teFFMXNHNHtMQDyd5HyItiIPJ8iLyFND FuCrslL0ovNdGLOtEnNJ/juIAC8QlqiXd+RDXbcW2KDjbpfrgMlI4w++F3c3Uto0/Vx9 tQ== From: Steve Sistare To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , "Michael S. Tsirkin" , Jason Wang , Alex Williamson , Cedric Le Goater , Gerd Hoffmann , Marc-Andre Lureau , David Hildenbrand , Steve Sistare Subject: [PATCH V2 09/11] migration: notifier error checking Date: Fri, 12 Jan 2024 07:05:08 -0800 Message-Id: <1705071910-174321-10-git-send-email-steven.sistare@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1705071910-174321-1-git-send-email-steven.sistare@oracle.com> References: <1705071910-174321-1-git-send-email-steven.sistare@oracle.com> X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-12_06,2024-01-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401120117 X-Proofpoint-GUID: kY1BGuIMhKB-tM5N-8FvLpjU2Qy-ZaH8 X-Proofpoint-ORIG-GUID: kY1BGuIMhKB-tM5N-8FvLpjU2Qy-ZaH8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=steven.sistare@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @oracle.com) X-ZM-MESSAGEID: 1705071961222100003 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Check the status returned by migration notifiers and report errors. If notifiers fail, call the notifiers again so they can clean up. None of the notifiers return an error status at this time. Signed-off-by: Steve Sistare --- include/migration/misc.h | 2 +- migration/migration.c | 37 ++++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/include/migration/misc.h b/include/migration/misc.h index e79694f..782bdec 100644 --- a/include/migration/misc.h +++ b/include/migration/misc.h @@ -73,7 +73,7 @@ void migration_add_notifier(NotifierWithReturn *notify, void migration_add_notifier_mode(NotifierWithReturn *notify, MigrationNotifyFunc func, MigMode mode); void migration_remove_notifier(NotifierWithReturn *notify); -void migration_call_notifiers(MigrationState *s); +int migration_call_notifiers(MigrationState *s, Error **errp); bool migration_in_setup(MigrationState *); bool migration_has_finished(MigrationState *); bool migration_has_failed(MigrationState *); diff --git a/migration/migration.c b/migration/migration.c index c828ba7..86a5a94 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1274,6 +1274,8 @@ void migrate_set_state(int *state, int old_state, int= new_state) =20 static void migrate_fd_cleanup(MigrationState *s) { + Error *local_err =3D NULL; + qemu_bh_delete(s->cleanup_bh); s->cleanup_bh =3D NULL; =20 @@ -1321,11 +1323,23 @@ static void migrate_fd_cleanup(MigrationState *s) MIGRATION_STATUS_CANCELLED); } =20 + if (!migration_has_failed(s) && + migration_call_notifiers(s, &local_err)) { + + migrate_set_state(&s->state, s->state, MIGRATION_STATUS_FAILED); + migrate_set_error(s, local_err); + error_free(local_err); + } + if (s->error) { /* It is used on info migrate. We can't free it */ error_report_err(error_copy(s->error)); } - migration_call_notifiers(s); + + if (migration_has_failed(s)) { + migration_call_notifiers(s, NULL); + } + block_cleanup_parameters(); yank_unregister_instance(MIGRATION_YANK_INSTANCE); } @@ -1450,13 +1464,14 @@ void migration_remove_notifier(NotifierWithReturn *= notify) } } =20 -void migration_call_notifiers(MigrationState *s) +int migration_call_notifiers(MigrationState *s, Error **errp) { MigMode mode =3D s->parameters.mode; MigrationEvent e; =20 e.state =3D s->state; - notifier_with_return_list_notify(&migration_state_notifiers[mode], &e,= 0); + return notifier_with_return_list_notify(&migration_state_notifiers[mod= e], + &e, errp); } =20 bool migration_in_setup(MigrationState *s) @@ -2520,7 +2535,9 @@ static int postcopy_start(MigrationState *ms, Error *= *errp) * spice needs to trigger a transition now */ ms->postcopy_after_devices =3D true; - migration_call_notifiers(ms); + if (migration_call_notifiers(ms, errp)) { + goto fail; + } =20 migration_downtime_end(ms); =20 @@ -2540,11 +2557,10 @@ static int postcopy_start(MigrationState *ms, Error= **errp) =20 ret =3D qemu_file_get_error(ms->to_dst_file); if (ret) { - error_setg(errp, "postcopy_start: Migration stream errored"); - migrate_set_state(&ms->state, MIGRATION_STATUS_POSTCOPY_ACTIVE, - MIGRATION_STATUS_FAILED); + error_setg_errno(errp, -ret, "postcopy_start: Migration stream err= or"); + bql_lock(); + goto fail; } - trace_postcopy_preempt_enabled(migrate_postcopy_preempt()); =20 return ret; @@ -2565,6 +2581,7 @@ fail: error_report_err(local_err); } } + migration_call_notifiers(ms, NULL); /* Notify about failure */ bql_unlock(); return -1; } @@ -3590,7 +3607,9 @@ void migrate_fd_connect(MigrationState *s, Error *err= or_in) rate_limit =3D migrate_max_bandwidth(); =20 /* Notify before starting migration thread */ - migration_call_notifiers(s); + if (migration_call_notifiers(s, &local_err)) { + goto fail; + } } =20 migration_rate_set(rate_limit); --=20 1.8.3.1