From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752547AbbINXyi (ORCPT ); Mon, 14 Sep 2015 19:54:38 -0400 Received: from mx144.netapp.com ([216.240.21.25]:35376 "EHLO mx144.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751198AbbINXyg convert rfc822-to-8bit (ORCPT ); Mon, 14 Sep 2015 19:54:36 -0400 X-IronPort-AV: E=Sophos;i="5.17,531,1437462000"; d="scan'208";a="67984199" From: "Kornievskaia, Olga" To: Willy Tarreau CC: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" , Trond Myklebust , Ben Hutchings Subject: Re: [PATCH 2.6.32 42/62] fixing infinite OPEN loop in 4.0 stateid recovery Thread-Topic: [PATCH 2.6.32 42/62] fixing infinite OPEN loop in 4.0 stateid recovery Thread-Index: AQHQ7bB1kNeGXWhZGkqWsS0jgM8WfZ49K14A Date: Mon, 14 Sep 2015 23:54:34 +0000 Message-ID: <4804EB4C-FCAE-49A7-9075-4C63D72F9AA9@netapp.com> References: <20150912225608.380720062@1wt.eu> In-Reply-To: <20150912225608.380720062@1wt.eu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.2104) x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.122.56.79] Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Willy, I believe the patch introduced another problem and needs to be corrected. > On Sep 12, 2015, at 6:56 PM, Willy Tarreau wrote: > > 2.6.32-longterm review patch. If anyone has any objections, please let me know. > > ------------------ > > From: Olga Kornievskaia > > commit e8d975e73e5fa05f983fbf2723120edcf68e0b38 upstream. > > Problem: When an operation like WRITE receives a BAD_STATEID, even though > recovery code clears the RECLAIM_NOGRACE recovery flag before recovering > the open state, because of clearing delegation state for the associated > inode, nfs_inode_find_state_and_recover() gets called and it makes the > same state with RECLAIM_NOGRACE flag again. As a results, when we restart > looking over the open states, we end up in the infinite loop instead of > breaking out in the next test of state flags. > > Solution: unset the RECLAIM_NOGRACE set because of > calling of nfs_inode_find_state_and_recover() after returning from calling > recover_open() function. > > Signed-off-by: Olga Kornievskaia > Signed-off-by: Trond Myklebust > [bwh: Backported to 3.2: adjust context] > Signed-off-by: Ben Hutchings > (cherry picked from commit ef8500b18fc4bb03286a93b6032d56ec7bcbfd15) > > Signed-off-by: Willy Tarreau > --- > fs/nfs/nfs4state.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c > index 2a7f163..71ee6f6 100644 > --- a/fs/nfs/nfs4state.c > +++ b/fs/nfs/nfs4state.c > @@ -929,6 +929,8 @@ restart: > __func__); > } > nfs4_put_open_state(state); > + clear_bit(NFS4CLNT_RECLAIM_NOGRACE, > + &state->flags); > goto restart; > } > } > -- > 1.7.12.2.21.g234cd45.dirty > > >