NFS: Don't discard pNFS layout segments that are marked for return
commit39fd018636upstream. If the pNFS layout segment is marked with the NFS_LSEG_LAYOUTRETURN flag, then the assumption is that it has some reporting requirement to perform through a layoutreturn (e.g. flexfiles layout stats or error information). Fixes:e0b7d420f7("pNFS: Don't discard layout segments that are marked for return") Cc: stable@vger.kernel.org Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
96fa26b74c
commit
334165d9fb
1 changed files with 5 additions and 0 deletions
|
|
@ -2470,6 +2470,9 @@ pnfs_mark_matching_lsegs_return(struct pnfs_layout_hdr *lo,
|
|||
|
||||
assert_spin_locked(&lo->plh_inode->i_lock);
|
||||
|
||||
if (test_bit(NFS_LAYOUT_RETURN_REQUESTED, &lo->plh_flags))
|
||||
tmp_list = &lo->plh_return_segs;
|
||||
|
||||
list_for_each_entry_safe(lseg, next, &lo->plh_segs, pls_list)
|
||||
if (pnfs_match_lseg_recall(lseg, return_range, seq)) {
|
||||
dprintk("%s: marking lseg %p iomode %d "
|
||||
|
|
@ -2477,6 +2480,8 @@ pnfs_mark_matching_lsegs_return(struct pnfs_layout_hdr *lo,
|
|||
lseg, lseg->pls_range.iomode,
|
||||
lseg->pls_range.offset,
|
||||
lseg->pls_range.length);
|
||||
if (test_bit(NFS_LSEG_LAYOUTRETURN, &lseg->pls_flags))
|
||||
tmp_list = &lo->plh_return_segs;
|
||||
if (mark_lseg_invalid(lseg, tmp_list))
|
||||
continue;
|
||||
remaining++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue