From patchwork Wed Mar 15 20:02:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olga Kornievskaia X-Patchwork-Id: 9626565 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0175E6048C for ; Wed, 15 Mar 2017 20:04:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DEE322856F for ; Wed, 15 Mar 2017 20:04:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D248928673; Wed, 15 Mar 2017 20:04:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 494932856F for ; Wed, 15 Mar 2017 20:04:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750774AbdCOUEe (ORCPT ); Wed, 15 Mar 2017 16:04:34 -0400 Received: from mx142.netapp.com ([216.240.21.19]:55965 "EHLO mx142.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751756AbdCOUEe (ORCPT ); Wed, 15 Mar 2017 16:04:34 -0400 X-IronPort-AV: E=Sophos;i="5.36,170,1486454400"; d="scan'208";a="177016878" Received: from vmwexchts03-prd.hq.netapp.com ([10.122.105.31]) by mx142-out.netapp.com with ESMTP; 15 Mar 2017 12:52:03 -0700 Received: from smtp1.corp.netapp.com (10.57.156.124) by VMWEXCHTS03-PRD.hq.netapp.com (10.122.105.31) with Microsoft SMTP Server id 15.0.1210.3; Wed, 15 Mar 2017 13:02:14 -0700 Received: from localhost.localdomain ([10.63.232.61]) by smtp1.corp.netapp.com (8.13.1/8.13.1/NTAP-1.6) with ESMTP id v2FK2G8N022166; Wed, 15 Mar 2017 13:02:16 -0700 (PDT) From: Olga Kornievskaia To: , CC: Subject: [PATCH v3 1/1] PNFS dont retry some error when MDS=DS Date: Wed, 15 Mar 2017 16:02:15 -0400 Message-ID: <20170315200215.43997-1-kolga@netapp.com> X-Mailer: git-send-email 2.10.1 (Apple Git-78) In-Reply-To: <20170315163224.43632-1-kolga@netapp.com> References: <20170315163224.43632-1-kolga@netapp.com> MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If we sent an operation to the "DS" and got an error, the code resends to "MDS" but when they are the same, it gets the same error and goes into the infinite loop. Example was COMMIT getting EACCES. Since some setups like ONTAP where each node in the cluster is MDS and DS need to check if MDS=DS based on if clientids are the same. Signed-off-by: Olga Kornievskaia --- fs/nfs/filelayout/filelayout.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c index 44347f4..e1d9bea 100644 --- a/fs/nfs/filelayout/filelayout.c +++ b/fs/nfs/filelayout/filelayout.c @@ -207,6 +207,10 @@ static int filelayout_async_handle_error(struct rpc_task *task, /* fall through */ default: reset: + if (clp->cl_exchange_flags & EXCHGID4_FLAG_USE_PNFS_MDS && + clp->cl_exchange_flags & EXCHGID4_FLAG_USE_PNFS_DS && + clp->cl_clientid == mds_client->cl_clientid) + return task->tk_status; dprintk("%s Retry through MDS. Error %d\n", __func__, task->tk_status); return -NFS4ERR_RESET_TO_MDS; @@ -384,9 +388,10 @@ static int filelayout_commit_done_cb(struct rpc_task *task, return -EAGAIN; } - pnfs_set_layoutcommit(data->inode, data->lseg, data->lwb); + if (!err) + pnfs_set_layoutcommit(data->inode, data->lseg, data->lwb); - return 0; + return err; } static void filelayout_write_prepare(struct rpc_task *task, void *data)