From patchwork Wed Dec 22 11:30:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Zhang X-Patchwork-Id: 1572130 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=g3TxDq4E; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=lwdCnoVm; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JJrly4WMDz9sPC for ; Wed, 22 Dec 2021 22:32:45 +1100 (AEDT) Received: from localhost ([::1]:49368 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzzrN-0005X6-HM for incoming@patchwork.ozlabs.org; Wed, 22 Dec 2021 06:32:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50218) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzzqE-0005WR-Ud for qemu-devel@nongnu.org; Wed, 22 Dec 2021 06:31:30 -0500 Received: from smtp-out1.suse.de ([195.135.220.28]:57234) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzzqD-0006hb-4h for qemu-devel@nongnu.org; Wed, 22 Dec 2021 06:31:30 -0500 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 38F5F212BD; Wed, 22 Dec 2021 11:31:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1640172686; 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=p23BND77yA3C1MNnRUW5sOkWOwYsyt+qJoxOhu7Dyl8=; b=g3TxDq4EN8IDxfaT6yhQKRpfo/eHbby5QSkTR8QnDUM5kLXzkCC/N8ZwWO7X4OWrqRpcwe oIqKTwTqwlXfRr5DFtUEQlslUS/5vl1isAsY1R/njHIHbeoLkJG5WDmmbeAf1ZqIajfAEC OfkuKmp83ytHsVMTtpwBh6z/S8XyRIw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1640172686; 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=p23BND77yA3C1MNnRUW5sOkWOwYsyt+qJoxOhu7Dyl8=; b=lwdCnoVmJSnE9ql8tT09nQqp+BcAr9gNtmSk24xZoEsm9Wome7tDq6I0951tWCi2EpGLO0 nJRi73+UT0rHVlCw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 0545913D10; Wed, 22 Dec 2021 11:31:25 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id KGZyO40Mw2HBFQAAMHmgww (envelope-from ); Wed, 22 Dec 2021 11:31:25 +0000 From: Li Zhang To: quintela@redhat.com, dgilbert@redhat.com, cfontana@suse.de, qemu-devel@nongnu.org Subject: [PATCH 1/2] multifd: cleanup the function multifd_channel_connect Date: Wed, 22 Dec 2021 12:30:48 +0100 Message-Id: <20211222113049.9326-2-lizhang@suse.de> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211222113049.9326-1-lizhang@suse.de> References: <20211222113049.9326-1-lizhang@suse.de> MIME-Version: 1.0 Received-SPF: pass client-ip=195.135.220.28; envelope-from=lizhang@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 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: , Cc: Li Zhang Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Cleanup multifd_channel_connect Signed-off-by: Li Zhang Reviewed-by: Juan Quintela --- migration/multifd.c | 49 ++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/migration/multifd.c b/migration/multifd.c index 212be1ed04..4ec40739e0 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -801,33 +801,32 @@ static bool multifd_channel_connect(MultiFDSendParams *p, trace_multifd_set_outgoing_channel( ioc, object_get_typename(OBJECT(ioc)), p->tls_hostname, error); - if (!error) { - if (s->parameters.tls_creds && - *s->parameters.tls_creds && - !object_dynamic_cast(OBJECT(ioc), - TYPE_QIO_CHANNEL_TLS)) { - multifd_tls_channel_connect(p, ioc, &error); - if (!error) { - /* - * tls_channel_connect will call back to this - * function after the TLS handshake, - * so we mustn't call multifd_send_thread until then - */ - return true; - } else { - return false; - } - } else { - migration_ioc_register_yank(ioc); - p->registered_yank = true; - p->c = ioc; - qemu_thread_create(&p->thread, p->name, multifd_send_thread, p, - QEMU_THREAD_JOINABLE); - } - return true; + if (error) { + return false; } - return false; + if (s->parameters.tls_creds && + *s->parameters.tls_creds && + !object_dynamic_cast(OBJECT(ioc), + TYPE_QIO_CHANNEL_TLS)) { + multifd_tls_channel_connect(p, ioc, &error); + if (error) { + return false; + } + /* + * tls_channel_connect will call back to this + * function after the TLS handshake, + * so we mustn't call multifd_send_thread until then + */ + return true; + } else { + migration_ioc_register_yank(ioc); + p->registered_yank = true; + p->c = ioc; + qemu_thread_create(&p->thread, p->name, multifd_send_thread, p, + QEMU_THREAD_JOINABLE); + } + return true; } static void multifd_new_send_channel_cleanup(MultiFDSendParams *p, From patchwork Wed Dec 22 11:30:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Zhang X-Patchwork-Id: 1572128 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=wl6hKqFC; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=iub8TqQQ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JJrly4NLRz9sCD for ; Wed, 22 Dec 2021 22:32:45 +1100 (AEDT) Received: from localhost ([::1]:49380 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzzrN-0005Yi-Jl for incoming@patchwork.ozlabs.org; Wed, 22 Dec 2021 06:32:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50214) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzzqE-0005WL-Rv for qemu-devel@nongnu.org; Wed, 22 Dec 2021 06:31:30 -0500 Received: from smtp-out2.suse.de ([195.135.220.29]:38540) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzzqD-0006hd-4i for qemu-devel@nongnu.org; Wed, 22 Dec 2021 06:31:30 -0500 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 75EB91F37E; Wed, 22 Dec 2021 11:31:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1640172686; 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=rsJccoOb4GzceYvdnqjDwKtFeMMlxoj3PAXUgjIThlY=; b=wl6hKqFC29kJpnuyRxpdgq9hqGCP5po88jK5um1naEC2yOU9mvkwwIATSGZAK+ZJ9UTx/X ElIzcjX54F2PxVyZ9TVUxQ02jUhfI7YjXuutDWLMf5o0uLmlGTF076lRLSTiMcSI5/yDDZ IAPKy6z54hpJd2P96FdzK9+0ZQxq92E= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1640172686; 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=rsJccoOb4GzceYvdnqjDwKtFeMMlxoj3PAXUgjIThlY=; b=iub8TqQQZ3e+wcPlBjudnzh++cmM30husjVd/EJCFnqjcLDKkWuCAbCrLSw6Tque6IEUCg dhvDE5ahDqUr44Cg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 4024E13D10; Wed, 22 Dec 2021 11:31:26 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id iLoiDo4Mw2HBFQAAMHmgww (envelope-from ); Wed, 22 Dec 2021 11:31:26 +0000 From: Li Zhang To: quintela@redhat.com, dgilbert@redhat.com, cfontana@suse.de, qemu-devel@nongnu.org Subject: [PATCH 2/2] multifd: cleanup the function multifd_send_thread Date: Wed, 22 Dec 2021 12:30:49 +0100 Message-Id: <20211222113049.9326-3-lizhang@suse.de> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211222113049.9326-1-lizhang@suse.de> References: <20211222113049.9326-1-lizhang@suse.de> MIME-Version: 1.0 Received-SPF: pass client-ip=195.135.220.29; envelope-from=lizhang@suse.de; helo=smtp-out2.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 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: , Cc: Li Zhang Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Cleanup multifd_send_thread Signed-off-by: Li Zhang --- migration/multifd.c | 82 ++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/migration/multifd.c b/migration/multifd.c index 4ec40739e0..7888d71bfe 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -649,58 +649,58 @@ static void *multifd_send_thread(void *opaque) break; } qemu_mutex_lock(&p->mutex); - - if (p->pending_job) { - uint32_t used = p->pages->num; - uint64_t packet_num = p->packet_num; - uint32_t flags = p->flags; - - if (used) { - ret = multifd_send_state->ops->send_prepare(p, &local_err); - if (ret != 0) { - qemu_mutex_unlock(&p->mutex); - break; - } - } - multifd_send_fill_packet(p); - p->flags = 0; - p->num_packets++; - p->num_pages += used; - p->pages->num = 0; - p->pages->block = NULL; + if (!p->quit && !p->pending_job) { + /* sometimes there are spurious wakeups */ + qemu_mutex_unlock(&p->mutex); + continue; + } else if (!p->pending_job) { qemu_mutex_unlock(&p->mutex); + break; + } - trace_multifd_send(p->id, packet_num, used, flags, - p->next_packet_size); + uint32_t used = p->pages->num; + uint64_t packet_num = p->packet_num; + uint32_t flags = p->flags; - ret = qio_channel_write_all(p->c, (void *)p->packet, - p->packet_len, &local_err); + if (used) { + ret = multifd_send_state->ops->send_prepare(p, &local_err); if (ret != 0) { + qemu_mutex_unlock(&p->mutex); break; } + } + multifd_send_fill_packet(p); + p->flags = 0; + p->num_packets++; + p->num_pages += used; + p->pages->num = 0; + p->pages->block = NULL; + qemu_mutex_unlock(&p->mutex); - if (used) { - ret = multifd_send_state->ops->send_write(p, used, &local_err); - if (ret != 0) { - break; - } - } + trace_multifd_send(p->id, packet_num, used, flags, + p->next_packet_size); - qemu_mutex_lock(&p->mutex); - p->pending_job--; - qemu_mutex_unlock(&p->mutex); + ret = qio_channel_write_all(p->c, (void *)p->packet, + p->packet_len, &local_err); + if (ret != 0) { + break; + } - if (flags & MULTIFD_FLAG_SYNC) { - qemu_sem_post(&p->sem_sync); + if (used) { + ret = multifd_send_state->ops->send_write(p, used, &local_err); + if (ret != 0) { + break; } - qemu_sem_post(&multifd_send_state->channels_ready); - } else if (p->quit) { - qemu_mutex_unlock(&p->mutex); - break; - } else { - qemu_mutex_unlock(&p->mutex); - /* sometimes there are spurious wakeups */ } + + qemu_mutex_lock(&p->mutex); + p->pending_job--; + qemu_mutex_unlock(&p->mutex); + + if (flags & MULTIFD_FLAG_SYNC) { + qemu_sem_post(&p->sem_sync); + } + qemu_sem_post(&multifd_send_state->channels_ready); } out: