From patchwork Mon Jan 4 18:20:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 7949851 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 3B3FD9F350 for ; Mon, 4 Jan 2016 18:21:49 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4BF55202BE for ; Mon, 4 Jan 2016 18:21:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 46D58202B8 for ; Mon, 4 Jan 2016 18:21:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751828AbcADSVq (ORCPT ); Mon, 4 Jan 2016 13:21:46 -0500 Received: from mail-io0-f172.google.com ([209.85.223.172]:34614 "EHLO mail-io0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751415AbcADSVp (ORCPT ); Mon, 4 Jan 2016 13:21:45 -0500 Received: by mail-io0-f172.google.com with SMTP id 1so116643062ion.1 for ; Mon, 04 Jan 2016 10:21:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=primarydata-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id; bh=xQnqKF0xI6HpqnoPl6VO/yXWzF1846BzJyPrUfa+wJY=; b=z6l3xx6RQ839oxprSMVbjywbnj9cYLJutFu0iA3RYMjkmTGRCT64mvno65FoYC72em hGXZRRnNrxAvRQDIO5Zvy+t1tj4xLRc+ajVGU8H/6XX2pcIkkUMVAVoF8UFZWJA7Xk/G WwhLNbPRxQDLsGDrmA9BwkRu68afUKGE3GiUt9IvoLl/YP5FjAPchU33zRB10xB7erP3 zqskoFeV1obCqHrSOoCP6At+XXq2ozNDSak1BW+60dIi5zvn+CmOcRXuxyrJJkBq80dI MYLczLm8jfgAWJmfp7imqU5XnSrCh+yfclNGIY5OdMWz5vwUWD66e19c1cNtNnBl2tBE sKbw== 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; bh=xQnqKF0xI6HpqnoPl6VO/yXWzF1846BzJyPrUfa+wJY=; b=bmGuTc/4pyJgAa7PXZF6BWSTbR/hzckIDh8NP9S63SJWJc3jNiBlDqf44IdKCjVIvl odyQKDUq/HP9Gnfmzkw7bxenaerKzb3/koffDvM1My1T7klczaNe7BxQ+Qw0Ool/P0Ut L0Ch1IRtUyvNcPEkrE6WlH08OmX/PcQcTJqMWNUeHYY8gB2Vr0+HuMcyH4rpPE9exycr GBJNcc2pXI1x+rL2QOw2jtzpl/WPGOKNrlN6aJ41XnW7Pa2bG8dzTlo9to6VbjPE8dlg +kk5ei/34Pvm9f5hKTYdrpTI/XpJu1C5dX03G+UNyJtDPcvEgP2GScYqpH9ZHAtZxN/e Uzcw== X-Gm-Message-State: ALoCoQlAUAhxPqQV0jjlvjRw3JHZ58bEwQetknerSY1dugSNvjaKQGgBFM8WVYeDtukPDuk4MY6qY0eKastuJG7+/BFDm565hw== X-Received: by 10.107.164.141 with SMTP id d13mr87946344ioj.88.1451931704932; Mon, 04 Jan 2016 10:21:44 -0800 (PST) Received: from leira.trondhjem.org.localdomain (c-68-49-164-203.hsd1.mi.comcast.net. [68.49.164.203]) by smtp.gmail.com with ESMTPSA id n6sm12760568ige.12.2016.01.04.10.21.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Jan 2016 10:21:44 -0800 (PST) From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH v3 01/18] pNFS: Ensure nfs4_layoutget_prepare returns the correct error Date: Mon, 4 Jan 2016 13:20:59 -0500 Message-Id: <1451931676-68481-1-git-send-email-trond.myklebust@primarydata.com> X-Mailer: git-send-email 2.5.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-6.8 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 If we're unable to perform the layoutget due to an invalid open stateid or a bulk recall, ensure that we return the error so that the caller can decide on an appropriate action. Signed-off-by: Trond Myklebust --- fs/nfs/nfs4proc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 18d862db15b6..fcd7a9039020 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -7760,6 +7760,7 @@ nfs4_layoutget_prepare(struct rpc_task *task, void *calldata) struct nfs4_layoutget *lgp = calldata; struct nfs_server *server = NFS_SERVER(lgp->args.inode); struct nfs4_session *session = nfs4_get_session(server); + int ret; dprintk("--> %s\n", __func__); /* Note the is a race here, where a CB_LAYOUTRECALL can come in @@ -7770,12 +7771,12 @@ nfs4_layoutget_prepare(struct rpc_task *task, void *calldata) if (nfs41_setup_sequence(session, &lgp->args.seq_args, &lgp->res.seq_res, task)) return; - if (pnfs_choose_layoutget_stateid(&lgp->args.stateid, + ret = pnfs_choose_layoutget_stateid(&lgp->args.stateid, NFS_I(lgp->args.inode)->layout, &lgp->args.range, - lgp->args.ctx->state)) { - rpc_exit(task, NFS4_OK); - } + lgp->args.ctx->state); + if (ret < 0) + rpc_exit(task, ret); } static void nfs4_layoutget_done(struct rpc_task *task, void *calldata)