nfs41: clear NFS_LAYOUT_RETURN if layoutreturn is sent or failed to send
So that pnfs path is not disabled for ever. Signed-off-by: Peng Tao <tao.peng@primarydata.com> Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com>
This commit is contained in:
Родитель
aa1e0e3a8e
Коммит
e736a5b98c
|
@ -7796,6 +7796,7 @@ static void nfs4_layoutreturn_release(void *calldata)
|
|||
spin_lock(&lo->plh_inode->i_lock);
|
||||
if (lrp->res.lrs_present)
|
||||
pnfs_set_layout_stateid(lo, &lrp->res.stateid, true);
|
||||
clear_bit(NFS_LAYOUT_RETURN, &lo->plh_flags);
|
||||
lo->plh_block_lgets--;
|
||||
spin_unlock(&lo->plh_inode->i_lock);
|
||||
pnfs_put_layout_hdr(lrp->args.layout);
|
||||
|
|
|
@ -921,6 +921,11 @@ pnfs_send_layoutreturn(struct pnfs_layout_hdr *lo, nfs4_stateid stateid,
|
|||
|
||||
status = nfs4_proc_layoutreturn(lrp);
|
||||
out:
|
||||
if (status) {
|
||||
spin_lock(&ino->i_lock);
|
||||
clear_bit(NFS_LAYOUT_RETURN, &lo->plh_flags);
|
||||
spin_unlock(&ino->i_lock);
|
||||
}
|
||||
dprintk("<-- %s status: %d\n", __func__, status);
|
||||
return status;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче