summaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs3proc.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@hammerspace.com>2022-05-31 11:03:07 -0400
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2022-06-06 11:53:55 -0400
commit880265c77ac415090090d1fe72a188fee71cb458 (patch)
tree1a3b589cd95c81472c781b27f4804641571ef787 /fs/nfsd/nfs3proc.c
parentfe44fb23d6ccde4c914c44ef74ab8d9d9ba02bea (diff)
downloadlinux-stable-880265c77ac415090090d1fe72a188fee71cb458.tar.gz
linux-stable-880265c77ac415090090d1fe72a188fee71cb458.tar.bz2
linux-stable-880265c77ac415090090d1fe72a188fee71cb458.zip
pNFS: Avoid a live lock condition in pnfs_update_layout()
If we're about to send the first layoutget for an empty layout, we want to make sure that we drain out the existing pending layoutget calls first. The reason is that these layouts may have been already implicitly returned to the server by a recall to which the client gave a NFS4ERR_NOMATCHING_LAYOUT response. The problem is that wait_var_event_killable() could in principle see the plh_outstanding count go back to '1' when the first process to wake up starts sending a new layoutget. If it fails to get a layout, then this loop can continue ad infinitum... Fixes: 0b77f97a7e42 ("NFSv4/pnfs: Fix layoutget behaviour after invalidation") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'fs/nfsd/nfs3proc.c')
0 files changed, 0 insertions, 0 deletions