From patchwork Wed May 26 16:44:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1484133 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Fqxcc3jzpz9sTD; Thu, 27 May 2021 02:44:32 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1llwdw-0001qT-1s; Wed, 26 May 2021 16:44:28 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1llwds-0001oX-PE for kernel-team@lists.ubuntu.com; Wed, 26 May 2021 16:44:24 +0000 Received: from mail-pg1-f200.google.com ([209.85.215.200]) by youngberry.canonical.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1llwds-0000yB-ES for kernel-team@lists.ubuntu.com; Wed, 26 May 2021 16:44:24 +0000 Received: by mail-pg1-f200.google.com with SMTP id b17-20020a63eb510000b029021a1da627beso1186905pgk.12 for ; Wed, 26 May 2021 09:44:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=DRk8DdGTzXGJ/yU14Ba4l7GVMR/I15v0SrudDoAB6rI=; b=DHS+85yXl3cJh+/a6xETIhOf2IredzphBGdDXG20FV/Sg7TXAsJdXBYmw0/0DqS6nE KXeVFhu3+9q0c3yJXAzNg1AGgPd+cSCBtc6BBY9szD8nQGF1S32vKi0lHH84uIGg6u2g UWRudfgsbDP11q6Vtwph3l1blCXWj8PwEbI40fMPs+3c8h9WJEOe9A3TnYqGAiC6AIx8 mkEqUYgzwPFoeLAW/814V2JV9L2h7YtOhPL+NEPIplMeAm6IxmQ0uTlFtw1JTNC42OZ9 SpSNNHu3qAx9IhJ+vOvfRyuKytf4e6pJHkJCqTFabAtY3JZooKvz50uGp2+YzCaXY7ze V/+g== X-Gm-Message-State: AOAM533awvaSQiMA7vq1QSil49i5h/ye1y83o4bAiVLX6TCO/9RS0eHm 0VxhBsK8ezrZTdOrKtX2rcXpump7ST/mvuawJHmn0GD05pRRJhSIQ/I5Vk6btCkkogS5RZDwyHt 5sTB02JL1TzXXQRh9Sg5wILdNChK1hexmKvewbsNI2w== X-Received: by 2002:a65:5684:: with SMTP id v4mr25217616pgs.218.1622047462815; Wed, 26 May 2021 09:44:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx7dRpDMSR6RXPzHfN7abl3zytP8/DjcnxLtlNHgvVrpPGcRqRVZdQ5kETkjQxTJItQXDC4tw== X-Received: by 2002:a65:5684:: with SMTP id v4mr25217603pgs.218.1622047462622; Wed, 26 May 2021 09:44:22 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id w11sm16124833pfc.79.2021.05.26.09.44.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 May 2021 09:44:21 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 2/3] cifs: Simplify reconnect code when dfs upcall is enabled Date: Wed, 26 May 2021 10:44:13 -0600 Message-Id: <20210526164414.29666-3-tim.gardner@canonical.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210526164414.29666-1-tim.gardner@canonical.com> References: <20210526164414.29666-1-tim.gardner@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Samuel Cabrero BugLink: https://canonical.my.salesforce.com/5004K000005pQNG Some witness notifications, like client move, tell the client to reconnect to a specific IP address. In this situation the DFS failover code path has to be skipped so clean up as much as possible the cifs_reconnect() code. Signed-off-by: Samuel Cabrero Reviewed-by: Aurelien Aptel Signed-off-by: Steve French (backported from commit 7d6535b720421d58886d5590ffc3617d359aa871) [rtg - minor context adjustment] Signed-off-by: Tim Gardner --- fs/cifs/connect.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 1746aadf85ef4..e096751a73873 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -344,7 +344,7 @@ static char *extract_hostname(const char *unc); * This should be called with server->srv_mutex held. */ #ifdef CONFIG_CIFS_DFS_UPCALL -static int reconn_set_ipaddr(struct TCP_Server_Info *server) +static int reconn_set_ipaddr_from_hostname(struct TCP_Server_Info *server) { int rc; int len; @@ -379,12 +379,6 @@ static int reconn_set_ipaddr(struct TCP_Server_Info *server) return !rc ? -1 : 0; } -#else -static inline int reconn_set_ipaddr(struct TCP_Server_Info *server) -{ - return 0; -} -#endif #ifdef CONFIG_CIFS_DFS_UPCALL struct super_cb_data { @@ -441,6 +435,7 @@ static void reconn_set_next_dfs_target(struct TCP_Server_Info *server, struct dfs_cache_tgt_iterator **tgt_it) { const char *name; + int rc; if (!cifs_sb || !cifs_sb->origin_fullpath) return; @@ -465,6 +460,12 @@ static void reconn_set_next_dfs_target(struct TCP_Server_Info *server, "%s: failed to extract hostname from target: %ld\n", __func__, PTR_ERR(server->hostname)); } + + rc = reconn_set_ipaddr_from_hostname(server); + if (rc) { + cifs_dbg(FYI, "%s: failed to resolve hostname: %d\n", + __func__, rc); + } } static inline int reconn_setup_dfs_targets(struct cifs_sb_info *cifs_sb, @@ -621,11 +622,6 @@ cifs_reconnect(struct TCP_Server_Info *server) */ reconn_set_next_dfs_target(server, cifs_sb, &tgt_list, &tgt_it); #endif - rc = reconn_set_ipaddr(server); - if (rc) { - cifs_dbg(FYI, "%s: failed to resolve hostname: %d\n", - __func__, rc); - } if (cifs_rdma_enabled(server)) rc = smbd_reconnect(server);