diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-02-23 01:34:59 +0300 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-02-23 01:34:59 +0300 |
commit | 2454dfea0aef8a883d4302c38124edb373d47a25 (patch) | |
tree | e6ffc2bd5a1bc51a60bd22c5d7d59aa0f72d9935 /lib/stmp_device.c | |
parent | d07fbb8fdf57c4af28679ad7c4b2542e78ca7218 (diff) | |
download | linux-2454dfea0aef8a883d4302c38124edb373d47a25.tar.xz |
NFSv4.x/pnfs: Fix a race between layoutget and pnfs_destroy_layout
If the server reboots while there is a layoutget outstanding, then
the call to pnfs_choose_layoutget_stateid() will fail with an EAGAIN
error, which causes an infinite loop in send_layoutget(). The reason
why we never break out of the loop is that the layout 'plh_block_lgets'
field is never cleared.
Fix is to replace plh_block_lgets with NFS_LAYOUT_INVALID_STID, which
can be reset after a new layoutget.
Fixes: ab7d763e477c5 ("pNFS: Ensure nfs4_layoutget_prepare returns...")
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'lib/stmp_device.c')
0 files changed, 0 insertions, 0 deletions