From nobody Wed Feb 11 03:31:10 2026 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=suse.de ARC-Seal: i=1; a=rsa-sha256; t=1708468991; cv=none; d=zohomail.com; s=zohoarc; b=dPpxLRl0MdSwuJNYyt3aM+iEsMdKGpyrvYnql36bj0s9DYlGTwBw2GqOZQ+hkmW75LibnxlCe5SITlWfAek0hL93GTxn2aWd2ZrrC3X/FXtHiwW34h938ysHrDRdli9JBoZKkUr9P6MJNUAVeZKLbX2hkuSGotyHFjX8s0uWXd0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1708468991; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9NW4wBImTHg6GaLO/Ipo8LiOt/sZO9kIS4jSjTP4QKw=; b=YcRDOlmK1jLU8/ippYWZiOj/gn8S3r2BcXq0AnPx5WRWV9ybPwrzLGDa46VWu6aVkaeqe0dEBQBw/2o2K1ButvguggRF27483ajwXYI7bq0m7oF/OYkbcIsukYj9xwZfe0g6E1YFfZVatvKuemtLkUtdZEIwEDVv9qkdHhkTX3E= 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 1708468991539217.15457568175543; Tue, 20 Feb 2024 14:43:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rcYot-00045T-28; Tue, 20 Feb 2024 17:42:35 -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 1rcYor-0003vY-JO for qemu-devel@nongnu.org; Tue, 20 Feb 2024 17:42:33 -0500 Received: from smtp-out1.suse.de ([2a07:de40:b251:101:10:150:64:1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rcYop-0006Mc-Tl for qemu-devel@nongnu.org; Tue, 20 Feb 2024 17:42:33 -0500 Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id A1D9322260; Tue, 20 Feb 2024 22:42:30 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 09EF1139D0; Tue, 20 Feb 2024 22:42:28 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id QIauMNQq1WUlKwAAD6G6ig (envelope-from ); Tue, 20 Feb 2024 22:42:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1708468950; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9NW4wBImTHg6GaLO/Ipo8LiOt/sZO9kIS4jSjTP4QKw=; b=sy0I7eevI9diJZn5aYenYTJ08qfJQiGLd0UpiuGLU9ayWURtHTnMxio+CL0Xgd+YkNV9DT r9ifzmi+0K72zjDS5ZVFLCYL9T9BpsMRBTATrQUMYOEZSMj8FmVFAhxKroRzw59cLXCOfi iIshB1yB9+4E4Nnjt7gqSl+oPXRNlFM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1708468950; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9NW4wBImTHg6GaLO/Ipo8LiOt/sZO9kIS4jSjTP4QKw=; b=bShqVBcW1vp1H0Wc6u+/w2w9UYSscXzXOiAM/MP0E9Y0FYTpmHkBCl0mWvzAr6CdUwpP4c bIhwPBTIV9XQ8TBQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1708468950; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9NW4wBImTHg6GaLO/Ipo8LiOt/sZO9kIS4jSjTP4QKw=; b=sy0I7eevI9diJZn5aYenYTJ08qfJQiGLd0UpiuGLU9ayWURtHTnMxio+CL0Xgd+YkNV9DT r9ifzmi+0K72zjDS5ZVFLCYL9T9BpsMRBTATrQUMYOEZSMj8FmVFAhxKroRzw59cLXCOfi iIshB1yB9+4E4Nnjt7gqSl+oPXRNlFM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1708468950; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9NW4wBImTHg6GaLO/Ipo8LiOt/sZO9kIS4jSjTP4QKw=; b=bShqVBcW1vp1H0Wc6u+/w2w9UYSscXzXOiAM/MP0E9Y0FYTpmHkBCl0mWvzAr6CdUwpP4c bIhwPBTIV9XQ8TBQ== From: Fabiano Rosas To: qemu-devel@nongnu.org Cc: berrange@redhat.com, armbru@redhat.com, Peter Xu , Claudio Fontana Subject: [PATCH v4 21/34] migration/multifd: Add incoming QIOChannelFile support Date: Tue, 20 Feb 2024 19:41:25 -0300 Message-Id: <20240220224138.24759-22-farosas@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240220224138.24759-1-farosas@suse.de> References: <20240220224138.24759-1-farosas@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Authentication-Results: smtp-out1.suse.de; none X-Spamd-Result: default: False [1.90 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_FIVE(0.00)[5]; RCVD_COUNT_THREE(0.00)[3]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; BAYES_HAM(-3.00)[100.00%]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: 1.90 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=2a07:de40:b251:101:10:150:64:1; envelope-from=farosas@suse.de; helo=smtp-out1.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, 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 @suse.de) X-ZM-MESSAGEID: 1708468991887100001 Content-Type: text/plain; charset="utf-8" On the receiving side we don't need to differentiate between main channel and threads, so whichever channel is defined first gets to be the main one. And since there are no packets, use the atomic channel count to index into the params array. Signed-off-by: Fabiano Rosas --- migration/file.c | 34 ++++++++++++++++++++++++++-------- migration/migration.c | 3 ++- migration/multifd.c | 3 +-- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/migration/file.c b/migration/file.c index ac9f6ae40a..a186dc592a 100644 --- a/migration/file.c +++ b/migration/file.c @@ -8,6 +8,7 @@ #include "qemu/osdep.h" #include "exec/ramblock.h" #include "qemu/cutils.h" +#include "qemu/error-report.h" #include "qapi/error.h" #include "channel.h" #include "file.h" @@ -15,6 +16,7 @@ #include "multifd.h" #include "io/channel-file.h" #include "io/channel-util.h" +#include "options.h" #include "trace.h" =20 #define OFFSET_OPTION ",offset=3D" @@ -111,7 +113,8 @@ void file_start_incoming_migration(FileMigrationArgs *f= ile_args, Error **errp) g_autofree char *filename =3D g_strdup(file_args->filename); QIOChannelFile *fioc =3D NULL; uint64_t offset =3D file_args->offset; - QIOChannel *ioc; + int channels =3D 1; + int i =3D 0, fd; =20 trace_migration_file_incoming(filename); =20 @@ -120,13 +123,28 @@ void file_start_incoming_migration(FileMigrationArgs = *file_args, Error **errp) return; } =20 - ioc =3D QIO_CHANNEL(fioc); - if (offset && qio_channel_io_seek(ioc, offset, SEEK_SET, errp) < 0) { + if (offset && + qio_channel_io_seek(QIO_CHANNEL(fioc), offset, SEEK_SET, errp) < 0= ) { return; } - qio_channel_set_name(QIO_CHANNEL(ioc), "migration-file-incoming"); - qio_channel_add_watch_full(ioc, G_IO_IN, - file_accept_incoming_migration, - NULL, NULL, - g_main_context_get_thread_default()); + + if (migrate_multifd()) { + channels +=3D migrate_multifd_channels(); + } + + fd =3D fioc->fd; + + do { + QIOChannel *ioc =3D QIO_CHANNEL(fioc); + + qio_channel_set_name(ioc, "migration-file-incoming"); + qio_channel_add_watch_full(ioc, G_IO_IN, + file_accept_incoming_migration, + NULL, NULL, + g_main_context_get_thread_default()); + } while (++i < channels && (fioc =3D qio_channel_file_new_fd(fd))); + + if (!fioc) { + error_setg(errp, "Error creating migration incoming channel"); + } } diff --git a/migration/migration.c b/migration/migration.c index 16da269847..e2218b9de7 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -896,7 +896,8 @@ void migration_ioc_process_incoming(QIOChannel *ioc, Er= ror **errp) uint32_t channel_magic =3D 0; int ret =3D 0; =20 - if (migrate_multifd() && !migrate_postcopy_ram() && + if (migrate_multifd() && !migrate_fixed_ram() && + !migrate_postcopy_ram() && qio_channel_has_feature(ioc, QIO_CHANNEL_FEATURE_READ_MSG_PEEK)) { /* * With multiple channels, it is possible that we receive channels diff --git a/migration/multifd.c b/migration/multifd.c index 507b497d52..cb5f4fb3e0 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -1520,8 +1520,7 @@ void multifd_recv_new_channel(QIOChannel *ioc, Error = **errp) } trace_multifd_recv_new_channel(id); } else { - /* next patch gives this a meaningful value */ - id =3D 0; + id =3D qatomic_read(&multifd_recv_state->count); } =20 p =3D &multifd_recv_state->params[id]; --=20 2.35.3