|
@@ -411,7 +411,9 @@ pnfs_layout_remove_lseg(struct pnfs_layout_hdr *lo,
|
|
|
list_del_init(&lseg->pls_list);
|
|
|
/* Matched by pnfs_get_layout_hdr in pnfs_layout_insert_lseg */
|
|
|
atomic_dec(&lo->plh_refcount);
|
|
|
- if (list_empty(&lo->plh_segs)) {
|
|
|
+ if (list_empty(&lo->plh_segs) &&
|
|
|
+ !test_bit(NFS_LAYOUT_RETURN_REQUESTED, &lo->plh_flags) &&
|
|
|
+ !test_bit(NFS_LAYOUT_RETURN, &lo->plh_flags)) {
|
|
|
if (atomic_read(&lo->plh_outstanding) == 0)
|
|
|
set_bit(NFS_LAYOUT_INVALID_STID, &lo->plh_flags);
|
|
|
clear_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags);
|