diff options
Diffstat (limited to 'fs/ceph/caps.c')
| -rw-r--r-- | fs/ceph/caps.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 157fe59fbabe..ff5d32cf9578 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/ceph/ceph_debug.h>  #include <linux/fs.h> @@ -1991,6 +1992,7 @@ static int try_flush_caps(struct inode *inode, u64 *ptid)  retry:  	spin_lock(&ci->i_ceph_lock);  	if (ci->i_ceph_flags & CEPH_I_NOFLUSH) { +		spin_unlock(&ci->i_ceph_lock);  		dout("try_flush_caps skipping %p I_NOFLUSH set\n", inode);  		goto out;  	} @@ -2008,8 +2010,10 @@ retry:  			mutex_lock(&session->s_mutex);  			goto retry;  		} -		if (cap->session->s_state < CEPH_MDS_SESSION_OPEN) +		if (cap->session->s_state < CEPH_MDS_SESSION_OPEN) { +			spin_unlock(&ci->i_ceph_lock);  			goto out; +		}  		flushing = __mark_caps_flushing(inode, session, true,  						&flush_tid, &oldest_flush_tid); |