From patchwork Wed Mar 5 14:07:30 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 3774811 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id B8104BF13A for ; Wed, 5 Mar 2014 14:07:43 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8AE4620237 for ; Wed, 5 Mar 2014 14:07:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6F4852025B for ; Wed, 5 Mar 2014 14:07:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753025AbaCEOHk (ORCPT ); Wed, 5 Mar 2014 09:07:40 -0500 Received: from mail-ig0-f170.google.com ([209.85.213.170]:44906 "EHLO mail-ig0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752221AbaCEOHj (ORCPT ); Wed, 5 Mar 2014 09:07:39 -0500 Received: by mail-ig0-f170.google.com with SMTP id uq10so7723152igb.1 for ; Wed, 05 Mar 2014 06:07:39 -0800 (PST) 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=kL52pzy1WN0YnH6yxdJ8nOPNpNru37zTx87ZMmLg+GU=; b=cL7EzXCjY2lCxCqni+eLeQym62YRb6564plkHWdeKmWPkojozkFVj5yyHtmqSv0/5i nNcMGn/64SMKLtY7JUeOFHaOSZBGpdxPWdESOrZ/tPd77nXDcdJsAIdpwF4Fq1caCABE 1Wh6hrW34fENx8kwq1JIFrN9pL0Os/p5f6GuAbO7mMiA/Wi7w/N5Zc/89zNDDdC2GKiD s7tYOzY5HcjAhzrc4azZFNeKiSlPFDQYo9IJ8n17pDG+ruIKrfxRrbJw7XB9AltJQMNH nf6/s59ZXBgnrpEfAeSbwPG1tAFiY0n2WIFNkeHkbhoyPaS3PAvutQFA1MC4peKE+dr3 msxA== X-Gm-Message-State: ALoCoQlNk1VxF+TaADdSHGe7KjFQQaG9xRlZ0GHnNum24DiPihZm+BJR75Xn8V1DJKJK3tPeIGij X-Received: by 10.42.197.129 with SMTP id ek1mr4790242icb.9.1394028459068; Wed, 05 Mar 2014 06:07:39 -0800 (PST) Received: from leira.trondhjem.org (c-98-209-19-95.hsd1.mi.comcast.net. [98.209.19.95]) by mx.google.com with ESMTPSA id m6sm13682148igx.9.2014.03.05.06.07.37 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Mar 2014 06:07:38 -0800 (PST) From: Trond Myklebust To: Andy Adamson Cc: linux-nfs@vger.kernel.org Subject: [PATCH v3 2/4] NFSv4: Fix the return value of nfs4_select_rw_stateid Date: Wed, 5 Mar 2014 09:07:30 -0500 Message-Id: <1394028452-15956-3-git-send-email-trond.myklebust@primarydata.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: <1394028452-15956-2-git-send-email-trond.myklebust@primarydata.com> References: <1393959943-9919-1-git-send-email-trond.myklebust@primarydata.com> <1394028452-15956-1-git-send-email-trond.myklebust@primarydata.com> <1394028452-15956-2-git-send-email-trond.myklebust@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=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, 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 In commit 5521abfdcf4d6 (NFSv4: Resend the READ/WRITE RPC call if a stateid change causes an error), we overloaded the return value of nfs4_select_rw_stateid() to cause it to return -EWOULDBLOCK if an RPC call is outstanding that would cause the NFSv4 lock or open stateid to change. That is all redundant when we actually copy the stateid used in the read/write RPC call that failed, and check that against the current stateid. It is doubly so, when we consider that in the NFSv4.1 case, we also set the stateid's seqid to the special value '0', which means 'match the current valid stateid'. Reported-by: Andy Adamson Link: http://lkml.kernel.org/r/1393954269-3974-1-git-send-email-andros@netapp.com Signed-off-by: Trond Myklebust --- fs/nfs/nfs4state.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index e1a47217c05e..cd0cf93ac927 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -974,9 +974,6 @@ static int nfs4_copy_lock_stateid(nfs4_stateid *dst, else if (lsp != NULL && test_bit(NFS_LOCK_INITIALIZED, &lsp->ls_flags) != 0) { nfs4_stateid_copy(dst, &lsp->ls_stateid); ret = 0; - smp_rmb(); - if (!list_empty(&lsp->ls_seqid.list)) - ret = -EWOULDBLOCK; } spin_unlock(&state->state_lock); nfs4_put_lock_state(lsp); @@ -997,9 +994,6 @@ static int nfs4_copy_open_stateid(nfs4_stateid *dst, struct nfs4_state *state) src = &state->open_stateid; nfs4_stateid_copy(dst, src); ret = 0; - smp_rmb(); - if (!list_empty(&state->owner->so_seqid.list)) - ret = -EWOULDBLOCK; } while (read_seqretry(&state->seqlock, seq)); return ret; }