From patchwork Tue May 17 16:28:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 9114221 Return-Path: X-Original-To: patchwork-linux-nfs@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 661929F30C for ; Tue, 17 May 2016 16:29:04 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7D8E5201B9 for ; Tue, 17 May 2016 16:29:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 805A1202EC for ; Tue, 17 May 2016 16:29:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752680AbcEQQ27 (ORCPT ); Tue, 17 May 2016 12:28:59 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:33171 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755882AbcEQQ26 (ORCPT ); Tue, 17 May 2016 12:28:58 -0400 Received: by mail-qk0-f196.google.com with SMTP id q184so1931087qkf.0 for ; Tue, 17 May 2016 09:28:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=poochiereds-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=j7G9n3jVVnUvRGwBPou8pb86Xr6APLwjRtg6rKbSqHg=; b=p1Bw+Pl4ymevdqnq0EjKGSAXt55TqtXs+MnvA6ZLv3h9fRFglO595BVyLV8g0/JYe0 jGhz0sRn+Eai4QkTahDzi5VhbfVbWjlxfITlqR/yT+wEnfbyjBFBunEcDoSmkSWmRCxv LkPqLwCchorf3eRlml8dSNbTJ0IRKk7qRSGuUyvb0rtU/C9In8kKXo+iscrfoosZ3+yZ hGTzlU5Swm5AifSgAyjVbRqirSNe7KvVGyX/1vrMmhclo2vBCvK+gQhnpcHr612bLTuJ ov9YtNi185xvyb86NSwLjtPgTTWbqMmuT4sm2yIqVQe4Sk77QlMHkIpEgVvPRLKtRTbA 7aFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=j7G9n3jVVnUvRGwBPou8pb86Xr6APLwjRtg6rKbSqHg=; b=FP+5IMzF1lCnUJyIonNcX1NVyzEv4Iw2iYCh2EaCV7l8+6YCxyhw2Odexk5u0lmsFQ jJrdcRMJrDqlDjGfoaIJ5FHIczWU7XBQ6L1w4OsVf40iuR45UqPh1KF+YY+UPNvekAvv CcJeY/5m627/wPO4hLOTRwVT0TpnaRGjKFNfrtoDhFAU68Ommg1FxHnRQwDHExv+mcLa QYRmG17dZOdvF9Yi5CKvym+Z5iQC/sd/an9+j/oUz1qmQ7xLGGvB7M0mahzzpBt9afBL asvapwg4Fs6EkttzgbdnkkI+pudY+kReCFQqr1xKUgstIJt73QFMTfnOMfuITpIrD5zb vqOQ== X-Gm-Message-State: AOPr4FXAmYX9c0c53qLdauxMKuxrW7XGKDpYcZsVBCPWogLMK4/GTmXsvqy1RgPinMZsJg== X-Received: by 10.233.237.149 with SMTP id c143mr2591391qkg.88.1463502537592; Tue, 17 May 2016 09:28:57 -0700 (PDT) Received: from tlielax.poochiereds.net ([2606:a000:1125:4074:3a60:77ff:fe93:a95d]) by smtp.googlemail.com with ESMTPSA id a31sm1685827qga.34.2016.05.17.09.28.56 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 17 May 2016 09:28:57 -0700 (PDT) From: Jeff Layton X-Google-Original-From: Jeff Layton To: Trond Myklebust , Anna Schumaker Cc: Thomas Haynes , linux-nfs@vger.kernel.org, hch@lst.de Subject: [PATCH v4 02/13] pNFS/flexfiles: When checking for available DSes, conditionally check for MDS io Date: Tue, 17 May 2016 12:28:37 -0400 Message-Id: <1463502528-11519-3-git-send-email-jeff.layton@primarydata.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1463502528-11519-1-git-send-email-jeff.layton@primarydata.com> References: <1463502528-11519-1-git-send-email-jeff.layton@primarydata.com> Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, 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 From: Tom Haynes Whenever we check to see if we have the needed number of DSes for the action, we may also have to check to see whether IO is allowed to go to the MDS or not. [jlayton: fix merge conflict due to lack of localio patches here] Signed-off-by: Tom Haynes Signed-off-by: Jeff Layton --- fs/nfs/flexfilelayout/flexfilelayout.c | 5 ++--- fs/nfs/flexfilelayout/flexfilelayout.h | 1 + fs/nfs/flexfilelayout/flexfilelayoutdev.c | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c index 51f6660a2247..f538ca6bbe81 100644 --- a/fs/nfs/flexfilelayout/flexfilelayout.c +++ b/fs/nfs/flexfilelayout/flexfilelayout.c @@ -1101,8 +1101,7 @@ static int ff_layout_async_handle_error_v4(struct rpc_task *task, rpc_wake_up(&tbl->slot_tbl_waitq); /* fall through */ default: - if (ff_layout_no_fallback_to_mds(lseg) || - ff_layout_has_available_ds(lseg)) + if (ff_layout_avoid_mds_available_ds(lseg)) return -NFS4ERR_RESET_TO_PNFS; reset: dprintk("%s Retry through MDS. Error %d\n", __func__, @@ -1764,7 +1763,7 @@ ff_layout_read_pagelist(struct nfs_pgio_header *hdr) return PNFS_ATTEMPTED; out_failed: - if (ff_layout_has_available_ds(lseg)) + if (ff_layout_avoid_mds_available_ds(lseg)) return PNFS_TRY_AGAIN; return PNFS_NOT_ATTEMPTED; } diff --git a/fs/nfs/flexfilelayout/flexfilelayout.h b/fs/nfs/flexfilelayout/flexfilelayout.h index 1318c77aeb35..b54058122647 100644 --- a/fs/nfs/flexfilelayout/flexfilelayout.h +++ b/fs/nfs/flexfilelayout/flexfilelayout.h @@ -191,4 +191,5 @@ nfs4_ff_find_or_create_ds_client(struct pnfs_layout_segment *lseg, struct rpc_cred *ff_layout_get_ds_cred(struct pnfs_layout_segment *lseg, u32 ds_idx, struct rpc_cred *mdscred); bool ff_layout_has_available_ds(struct pnfs_layout_segment *lseg); +bool ff_layout_avoid_mds_available_ds(struct pnfs_layout_segment *lseg); #endif /* FS_NFS_NFS4FLEXFILELAYOUT_H */ diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c index 56296f3df19c..c52ca75081a8 100644 --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c @@ -540,6 +540,12 @@ bool ff_layout_has_available_ds(struct pnfs_layout_segment *lseg) return ff_rw_layout_has_available_ds(lseg); } +bool ff_layout_avoid_mds_available_ds(struct pnfs_layout_segment *lseg) +{ + return ff_layout_no_fallback_to_mds(lseg) || + ff_layout_has_available_ds(lseg); +} + module_param(dataserver_retrans, uint, 0644); MODULE_PARM_DESC(dataserver_retrans, "The number of times the NFSv4.1 client " "retries a request before it attempts further "