pNFS/flexfiles: Fix a deadlock on LAYOUTGET
We encountered a deadlock where the SEQUENCE that accompanied the LAYOUTGET triggered a session drain, while ff_layout_alloc_lseg triggered a GETDEVICEINFO. The GETDEVICEINFO hung waiting for the session drain, while the LAYOUTGET held the slot waiting for alloc_lseg to finish. Avoid this by moving the call to nfs4_find_get_deviceid out of ff_layout_alloc_lseg and into nfs4_ff_layout_prepare_ds. Signed-off-by:Fred Isaman <fred.isaman@gmail.com> [dros@primarydata.com: pNFS/flexfiles: fix races in ff_layout_mirror_valid] Signed-off-by:
Weston Andros Adamson <dros@primarydata.com> Signed-off-by:
Trond Myklebust <trond.myklebust@primarydata.com>
Showing
- fs/nfs/flexfilelayout/flexfilelayout.c 3 additions, 34 deletionsfs/nfs/flexfilelayout/flexfilelayout.c
- fs/nfs/flexfilelayout/flexfilelayout.h 1 addition, 1 deletionfs/nfs/flexfilelayout/flexfilelayout.h
- fs/nfs/flexfilelayout/flexfilelayoutdev.c 39 additions, 11 deletionsfs/nfs/flexfilelayout/flexfilelayoutdev.c
Loading
Please register or sign in to comment