From patchwork Mon Jan 25 11:29:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Dryomov X-Patchwork-Id: 8107141 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 3A0A09FBE9 for ; Mon, 25 Jan 2016 11:30:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 28AD1202EB for ; Mon, 25 Jan 2016 11:30:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 380D1202FF for ; Mon, 25 Jan 2016 11:30:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756888AbcAYLag (ORCPT ); Mon, 25 Jan 2016 06:30:36 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:35305 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756860AbcAYLaR (ORCPT ); Mon, 25 Jan 2016 06:30:17 -0500 Received: by mail-wm0-f66.google.com with SMTP id 123so10693780wmz.2 for ; Mon, 25 Jan 2016 03:30:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:in-reply-to:references; bh=UIMW+d+0xHRNcxeVHEYf/40sa5Ggdit0ZGmwKtfT8OQ=; b=FF0jd9fyW5EzMLvc8M1lGC3vR95pMPKRuUy2Z+HlIqFdz62aj0IOB1J6ASjH7J7jXG 9BWzkSfxLaiLt8rz9MAJXIzwyQ84LrAVuj0qXrbP4+regu2Mu8cCQl9AWtm/C7BNsg50 EA+Og7FnLEGJuRFMyaMY1SHfP4L+7Q0brHpBwLoYpqAwobkvx8YxGz+afWiZFLeqFE+6 TOMAvAr9JfxK7mwdBqkHUa2s1tyiaZ2i2FPEzieQZMUKZe+enMGKmuLFFmcLxLK8tf17 Zpw3Nrl5YEYV8KOkCQl7pP5JGsEJLpqvFCxZIjqtP3c7sN5j+lgUjnfsNgS9EXw1l6iy C6GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=UIMW+d+0xHRNcxeVHEYf/40sa5Ggdit0ZGmwKtfT8OQ=; b=c1TqX7wwpnsGG1hCLAZNvr92N8T5WYdfxAP6gdTQopjhXtclOoUkQkY1wyTQiRtJwP SEbmDWoZRFVtoSMTssa5el4HfE/Ly2vlqfWO0VhnzfCtasTc6IRQ3kwHbx6F40fa4GKU yeL6AdOUJzzvhQq4FGEYfWzOYIexOCRFe9SrNoo/2hM2mtS1kN8Ofc2mWZnXzG562Jgm Hp/Xo9tmo8moqiijVj5HLk2rY4G+GO+nC59IuKLkABz0AtrscS8tU7PAGwMFCzpRhHjo XCpb3UaJcGiLXNq1NeAJxcFaUex3OSQot/ryMNmJ0XNLd+j1oo45GEM94454hAHvzluR FqMw== X-Gm-Message-State: AG10YOTs2w+stDy3g5u0RPtuAH1CuZP5j3amf9IQojJjoIKWGvI24fZvoccEns2uPNZKsg== X-Received: by 10.28.16.78 with SMTP id 75mr18318177wmq.82.1453721416264; Mon, 25 Jan 2016 03:30:16 -0800 (PST) Received: from localhost.localdomain.com (ip-78-102-114-179.net.upcbroadband.cz. [78.102.114.179]) by smtp.gmail.com with ESMTPSA id 75sm15796950wmo.22.2016.01.25.03.30.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Jan 2016 03:30:15 -0800 (PST) From: Ilya Dryomov To: ceph-devel@vger.kernel.org Subject: [PATCH 7/9] libceph: introduce and switch to reopen_session() Date: Mon, 25 Jan 2016 12:29:39 +0100 Message-Id: <1453721381-20612-8-git-send-email-idryomov@gmail.com> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1453721381-20612-1-git-send-email-idryomov@gmail.com> References: <1453721381-20612-1-git-send-email-idryomov@gmail.com> Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP hunting is now set in __open_session() and cleared in finish_hunting(), instead of all around. The "session lost" message is printed not only on connection resets, but also on keepalive timeouts. Signed-off-by: Ilya Dryomov --- net/ceph/mon_client.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c index fd1cf408fd89..816fb813a336 100644 --- a/net/ceph/mon_client.c +++ b/net/ceph/mon_client.c @@ -171,6 +171,7 @@ static void __open_session(struct ceph_mon_client *monc) pick_new_mon(monc); + monc->hunting = true; if (monc->had_a_connection) { monc->hunt_mult *= CEPH_MONC_HUNT_BACKOFF; if (monc->hunt_mult > CEPH_MONC_HUNT_MAX_MULT) @@ -198,6 +199,16 @@ static void __open_session(struct ceph_mon_client *monc) __send_prepared_auth_request(monc, ret); } +static void reopen_session(struct ceph_mon_client *monc) +{ + if (!monc->hunting) + pr_info("mon%d %s session lost, hunting for new mon\n", + monc->cur_mon, ceph_pr_addr(&monc->con.peer_addr.in_addr)); + + __close_session(monc); + __open_session(monc); +} + /* * Reschedule delayed work timer. */ @@ -788,17 +799,15 @@ static void delayed_work(struct work_struct *work) dout("monc delayed_work\n"); mutex_lock(&monc->mutex); if (monc->hunting) { - __close_session(monc); - __open_session(monc); /* continue hunting */ + dout("%s continuing hunt\n", __func__); + reopen_session(monc); } else { int is_auth = ceph_auth_is_authenticated(monc->auth); if (ceph_con_keepalive_expired(&monc->con, CEPH_MONC_PING_TIMEOUT)) { dout("monc keepalive timeout\n"); is_auth = 0; - __close_session(monc); - monc->hunting = true; - __open_session(monc); + reopen_session(monc); } if (!monc->hunting) { @@ -900,9 +909,6 @@ int ceph_monc_init(struct ceph_mon_client *monc, struct ceph_client *cl) &monc->client->msgr); monc->cur_mon = -1; - monc->hunting = true; - monc->sub_renew_after = jiffies; - monc->sub_renew_sent = 0; monc->had_a_connection = false; monc->hunt_mult = 1; @@ -1157,16 +1163,9 @@ static void mon_fault(struct ceph_connection *con) if (!con->private) goto out; - if (!monc->hunting) - pr_info("mon%d %s session lost, " - "hunting for new mon\n", monc->cur_mon, - ceph_pr_addr(&monc->con.peer_addr.in_addr)); - - __close_session(monc); if (!monc->hunting) { - /* start hunting */ - monc->hunting = true; - __open_session(monc); + dout("%s hunting for new mon\n", __func__); + reopen_session(monc); } else { /* already hunting, let's wait a bit */ __schedule_delayed(monc);