From nobody Mon Apr 6 14:58:39 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABAB4C433F5 for ; Sun, 2 Oct 2022 08:17:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229801AbiJBIRs (ORCPT ); Sun, 2 Oct 2022 04:17:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229763AbiJBIRi (ORCPT ); Sun, 2 Oct 2022 04:17:38 -0400 X-Greylist: delayed 70 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Sun, 02 Oct 2022 01:17:34 PDT Received: from out203-205-221-239.mail.qq.com (out203-205-221-239.mail.qq.com [203.205.221.239]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E5AC3F1E6; Sun, 2 Oct 2022 01:17:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1664698651; bh=CScWYLEqhDwTIVrXOlh5cMj8TjSjE5p3uKPDNBlDjK8=; h=Date:From:Subject:To:Cc; b=IboCD5lPqZzL5G97Y3fc0KodNKhWK+JUdAD8PKQM9qhWwKk9vxUm2GF1wRaV+gVAJ qVvugQlJIRncCm34WLcidT1l7pY0m/WVWBI48Fxo67XMtnQKV268sDNSgjZrur8j6R pEbkZEjiiHXgL0bLbOORIRcDhjcmBR7qMJwbULkk= Received: from [10.30.0.92] ([211.137.109.91]) by newxmesmtplogicsvrsza7.qq.com (NewEsmtp) with SMTP id 41185641; Sun, 02 Oct 2022 16:16:17 +0800 X-QQ-mid: xmsmtpt1664698577tijmy8v5f Message-ID: X-QQ-XMAILINFO: NJ/+omVLhVga5ZIxJMxFEofYJGNhuUPZVurakmoNJkufXejGvti1sPp9chS2Yh 3PweHkIrh98XIy1PwibR1SIkZVXkqMe3x3vfz9syxjB9suCoPZS7Zze46/w0eFuP3L4E6iCnlHVB ssG1SsrYEJnmebjqbWz1DkMii6HMqmCUxBuTT/fZvnsP91GJca3vY2KOagH/x/EdBlZGURT4H51+ 6kGZtRzB1s0yw12ToqHHGuz4DRNsLxKlQmeV0tBnY3+fNM4tVzJAgdsN+s1hX8NJdXPs/7as5Mz8 HVrkcyYrqVzpkvFj3AsS/x76LFLUW6bFOUP4ABA1URdk4/0cA5KxbIl5mrl9a0wvD0MX041WmD5i P7jEYmTDfLrmn5sJWGw/uisOZRZs/fLzhAiNeOiEFXq5n9HEHhMsH5Y9oxO3FIUW/BIHCKe8xvwb txnMr01eaJRogxZjeON+DIhsu/A5RZQQUVuEV7L9aaY/zXHnaG7Hkby10CNu2rTMh3wFQ7OK9BCT 85tWDgyrEb3NMHfH8c+QpdWII8z/iZuym0vX2jmX7Zy7ESAKSRiye8+NilheADz4OQqriQORHL41 n3WP4Db7k9BNSkoE7DsgqSKzcSCuT+MAiiQKNUcDV8SjNKna+PQKdrmYtDUSQrIq0By+WBBa3PHC iXvAWkjiTHVknvxax/Ga19vI4vQBUc+gVz3gQsI4AwBmrOsXizAPpk73+BrP6Dvy8OgimR45GDnQ zsdM2pfH/0SARvAckkjBB1LLXGwwu6ASJYtBq144GwfTlROKhlsmNqyw3ldc+lv1HM+ruQMVrBZi QeO9RczT5CA7KonU5sV/TbkL1KF7Amg6QlRV6l7fGMuu9l10rxUPFZcW6kVe+ICUq7BzNyLtRmjv 8tTxOWXmseYbW1G2oUlj/OXx09a+UqbXCNX5c5bEP154t5PxYX5UHV4cA8qzkv+M/ovak0GNmtdz TPMj+yDEmC6nROCC9F4MQrkA5tddpi/JZIvIIf3xWQOuT1zKsLun1YoJTkun3+Wi/NlK7l65Lh5p zgXwjbuQ== X-OQ-MSGID: <6c65cfea-1fcf-9d41-b905-12305c6c3458@foxmail.com> Date: Sun, 2 Oct 2022 16:16:17 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.0.3 From: Chen Yuanrun Subject: [PATCH] libceph: queue_con only if the sock is connected To: Ilya Dryomov , Xiubo Li , Jeff Layton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Content-Language: en-US Cc: ceph-devel@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Chen Yuanrun Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org tcp_sendmsg_locked will trigger sk->sk_write_space while the sock is still connecting, if con try to write to a connecting sock, sk->sk_write_space will be called again, which lead to a endless loop. This will happen if the public network of the cluster is down, and the cpu will be in high usage. Signed-off-by: Chen Yuanrun --- =C2=A0net/ceph/messenger.c | 3 ++- =C2=A01 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index d3bb656308b4..eef5d4dfd1f1 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -367,7 +367,8 @@ static void ceph_sock_write_space(struct sock *sk) =C2=A0=C2=A0=C2=A0 =C2=A0 * buffer. See net/ipv4/tcp_input.c:tcp_check_spa= ce() =C2=A0=C2=A0=C2=A0 =C2=A0 * and net/core/stream.c:sk_stream_write_space(). =C2=A0=C2=A0=C2=A0 =C2=A0 */ -=C2=A0=C2=A0 =C2=A0if (ceph_con_flag_test(con, CEPH_CON_F_WRITE_PENDING)) { +=C2=A0=C2=A0 =C2=A0if (ceph_con_flag_test(con, CEPH_CON_F_WRITE_PENDING) && +=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0 atomic_read(&con->sock_state) =3D=3D= CON_SOCK_STATE_CONNECTED) { =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0if (sk_stream_is_writeable(sk)= ) { =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0dout("%s %p= queueing write work\n", __func__, con); =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0clear_bit(S= OCK_NOSPACE, &sk->sk_socket->flags); --=20 2.31.1