summaryrefslogtreecommitdiffstats
path: root/fs/ceph/caps.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ceph/caps.c')
-rw-r--r--fs/ceph/caps.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 72f8e1311392..52a2b90621cd 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -2992,8 +2992,10 @@ void ceph_put_wrbuffer_cap_refs(struct ceph_inode_info *ci, int nr,
2992 } 2992 }
2993 if (complete_capsnap) 2993 if (complete_capsnap)
2994 wake_up_all(&ci->i_cap_wq); 2994 wake_up_all(&ci->i_cap_wq);
2995 while (put-- > 0) 2995 while (put-- > 0) {
2996 iput(inode); 2996 /* avoid calling iput_final() in osd dispatch threads */
2997 ceph_async_iput(inode);
2998 }
2997} 2999}
2998 3000
2999/* 3001/*
@@ -3964,8 +3966,9 @@ void ceph_handle_caps(struct ceph_mds_session *session,
3964done: 3966done:
3965 mutex_unlock(&session->s_mutex); 3967 mutex_unlock(&session->s_mutex);
3966done_unlocked: 3968done_unlocked:
3967 iput(inode);
3968 ceph_put_string(extra_info.pool_ns); 3969 ceph_put_string(extra_info.pool_ns);
3970 /* avoid calling iput_final() in mds dispatch threads */
3971 ceph_async_iput(inode);
3969 return; 3972 return;
3970 3973
3971flush_cap_releases: 3974flush_cap_releases:
@@ -4011,7 +4014,8 @@ void ceph_check_delayed_caps(struct ceph_mds_client *mdsc)
4011 if (inode) { 4014 if (inode) {
4012 dout("check_delayed_caps on %p\n", inode); 4015 dout("check_delayed_caps on %p\n", inode);
4013 ceph_check_caps(ci, flags, NULL); 4016 ceph_check_caps(ci, flags, NULL);
4014 iput(inode); 4017 /* avoid calling iput_final() in tick thread */
4018 ceph_async_iput(inode);
4015 } 4019 }
4016 } 4020 }
4017 spin_unlock(&mdsc->cap_delay_lock); 4021 spin_unlock(&mdsc->cap_delay_lock);