mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
NFSv4.1/pnfs: Mark the layout stateid invalid when all segments are removed
According to RFC5661, section 12.5.3. the layout stateid is no longer valid once the client no longer holds any layout segments. Ensure that we mark it invalid. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
cbebaf897e
commit
2d148c7e84
@ -361,8 +361,10 @@ pnfs_layout_remove_lseg(struct pnfs_layout_hdr *lo,
|
|||||||
list_del_init(&lseg->pls_list);
|
list_del_init(&lseg->pls_list);
|
||||||
/* Matched by pnfs_get_layout_hdr in pnfs_layout_insert_lseg */
|
/* Matched by pnfs_get_layout_hdr in pnfs_layout_insert_lseg */
|
||||||
atomic_dec(&lo->plh_refcount);
|
atomic_dec(&lo->plh_refcount);
|
||||||
if (list_empty(&lo->plh_segs))
|
if (list_empty(&lo->plh_segs)) {
|
||||||
|
set_bit(NFS_LAYOUT_INVALID_STID, &lo->plh_flags);
|
||||||
clear_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags);
|
clear_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags);
|
||||||
|
}
|
||||||
rpc_wake_up(&NFS_SERVER(inode)->roc_rpcwaitq);
|
rpc_wake_up(&NFS_SERVER(inode)->roc_rpcwaitq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user