From: Andy Adamson <andros@xxxxxxxxxxxxxxxxxxxxx> Do not get_lseg for a non-valid lseg. Prepare for calling put_lseg outside of inode i_lock. Signed-off-by: Andy Adamson <andros@xxxxxxxxxx> --- fs/nfs/pnfs.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 6b2a95d..24620cf 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -845,7 +845,8 @@ pnfs_has_layout(struct pnfs_layout_hdr *lo, list_for_each_entry(lseg, &lo->segs, fi_list) { if (is_matching_lseg(lseg, range)) { ret = lseg; - get_lseg(ret); + if (lseg->valid) + get_lseg(ret); break; } if (cmp_layout(range, &lseg->range) > 0) @@ -889,7 +890,6 @@ pnfs_update_layout(struct inode *ino, /* Check to see if the layout for the given range already exists */ lseg = pnfs_has_layout(lo, &arg); if (lseg && !lseg->valid) { - put_lseg_locked(lseg); /* someone is cleaning the layout */ lseg = NULL; goto out_unlock; -- 1.6.6 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html