pnfs: don't merge new ff lsegs with ones that have LAYOUTRETURN bit set
Otherwise, we'll end up returning layouts that we've just received if the client issues a new LAYOUTGET prior to the LAYOUTRETURN. Signed-off-by: Jeff Layton <jeff.layton@primarydata.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
446ca21953
commit
ee26bdd680
|
@ -299,6 +299,8 @@ ff_lseg_merge(struct pnfs_layout_segment *new,
|
|||
{
|
||||
u64 new_end, old_end;
|
||||
|
||||
if (test_bit(NFS_LSEG_LAYOUTRETURN, &old->pls_flags))
|
||||
return false;
|
||||
if (new->pls_range.iomode != old->pls_range.iomode)
|
||||
return false;
|
||||
old_end = pnfs_calc_offset_end(old->pls_range.offset,
|
||||
|
@ -319,8 +321,6 @@ ff_lseg_merge(struct pnfs_layout_segment *new,
|
|||
new_end);
|
||||
if (test_bit(NFS_LSEG_ROC, &old->pls_flags))
|
||||
set_bit(NFS_LSEG_ROC, &new->pls_flags);
|
||||
if (test_bit(NFS_LSEG_LAYOUTRETURN, &old->pls_flags))
|
||||
set_bit(NFS_LSEG_LAYOUTRETURN, &new->pls_flags);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue