Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1251176 > unrolled thread
| Started by | lizf@kernel.org |
|---|---|
| First post | 2015-10-20 02:50 +0200 |
| Last post | 2015-10-21 10:20 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 3.4 17/65] fixing infinite OPEN loop in 4.0 stateid recovery lizf@kernel.org - 2015-10-20 02:50 +0200
Re: [PATCH 3.4 17/65] fixing infinite OPEN loop in 4.0 stateid recovery Zefan Li <lizefan@huawei.com> - 2015-10-21 10:20 +0200
| From | lizf@kernel.org |
|---|---|
| Date | 2015-10-20 02:50 +0200 |
| Subject | [PATCH 3.4 17/65] fixing infinite OPEN loop in 4.0 stateid recovery |
| Message-ID | <qlthL-4kA-5@gated-at.bofh.it> |
From: Olga Kornievskaia <kolga@netapp.com> 3.4.110-rc1 review patch. If anyone has any objections, please let me know. ------------------ 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 <kolga@netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> [lizf: Backported to 3.4: adjust context] Signed-off-by: Zefan Li <lizefan@huawei.com> --- fs/nfs/nfs4state.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index c4600b5..1639a4c 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -1279,6 +1279,8 @@ restart: } spin_unlock(&state->state_lock); nfs4_put_open_state(state); + clear_bit(NFS4CLNT_RECLAIM_NOGRACE, + &state->flags); goto restart; } } -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Zefan Li <lizefan@huawei.com> |
|---|---|
| Date | 2015-10-21 10:20 +0200 |
| Subject | Re: [PATCH 3.4 17/65] fixing infinite OPEN loop in 4.0 stateid recovery |
| Message-ID | <qlWMO-5Dz-13@gated-at.bofh.it> |
| In reply to | #1251176 |
On 2015/10/20 21:25, Kornievskaia, Olga wrote: > That patch introduced a different problem that was fixed by commit a41cbe86df3afbc82311a1640e20858c0cd7e065 I'll queue it up for 3.4.y. Thanks! > (NFS4CLNT_RECLAIM_NOGRACE was suppose to be NFS_STATE_RECLAIM_NOGRACE) > > Re: Failing to send a CLOSE if file is opened WRONLY and ... <https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CB0QFjAAahUKEwjEj9bLktHIAhXMpx4KHZVDC6o&url=http://www.spinics.net/lists/linux-nfs/msg53705.html&usg=AFQjCNEIHLOoLJV6YmJh0G_O5Jj9OcrS8g&sig2=Y76g-bzz-2SLr9OF5xNjvw&bvm=bv.105454873,d.cWw> > > >> On Oct 19, 2015, at 8:47 PM, lizf@kernel.org <mailto:lizf@kernel.org> wrote: >> >> From: Olga Kornievskaia <kolga@netapp.com <mailto:kolga@netapp.com>> >> >> 3.4.110-rc1 review patch. If anyone has any objections, please let me know. >> >> ------------------ >> >> >> 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 <kolga@netapp.com <mailto:kolga@netapp.com>> >> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com <mailto:trond.myklebust@primarydata.com>> >> [lizf: Backported to 3.4: adjust context] >> Signed-off-by: Zefan Li <lizefan@huawei.com <mailto:lizefan@huawei.com>> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web