aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/mds_client.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-06-09 19:47:10 -0400
committerSage Weil <sage@newdream.net>2010-06-10 16:30:07 -0400
commit3d7ded4d81d807c2f75f310a8d74a5d72be13a1b (patch)
treec633b938f72dcd39c84f2430c7d4025331ab4369 /fs/ceph/mds_client.c
parent9dbd412f56c453f15014396c6024b895c1485ccb (diff)
ceph: release cap on import if we don't have the inode
If we get an IMPORT that give us a cap, but we don't have the inode, queue a release (and try to send it immediately) so that the MDS doesn't get stuck waiting for us. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/mds_client.c')
-rw-r--r--fs/ceph/mds_client.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 29b4485cf1ca..d28b6a9c0f96 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1176,8 +1176,8 @@ static int check_cap_flush(struct ceph_mds_client *mdsc, u64 want_flush_seq)
1176/* 1176/*
1177 * called under s_mutex 1177 * called under s_mutex
1178 */ 1178 */
1179static void send_cap_releases(struct ceph_mds_client *mdsc, 1179void ceph_send_cap_releases(struct ceph_mds_client *mdsc,
1180 struct ceph_mds_session *session) 1180 struct ceph_mds_session *session)
1181{ 1181{
1182 struct ceph_msg *msg; 1182 struct ceph_msg *msg;
1183 1183
@@ -2693,7 +2693,7 @@ static void delayed_work(struct work_struct *work)
2693 add_cap_releases(mdsc, s, -1); 2693 add_cap_releases(mdsc, s, -1);
2694 if (s->s_state == CEPH_MDS_SESSION_OPEN || 2694 if (s->s_state == CEPH_MDS_SESSION_OPEN ||
2695 s->s_state == CEPH_MDS_SESSION_HUNG) 2695 s->s_state == CEPH_MDS_SESSION_HUNG)
2696 send_cap_releases(mdsc, s); 2696 ceph_send_cap_releases(mdsc, s);
2697 mutex_unlock(&s->s_mutex); 2697 mutex_unlock(&s->s_mutex);
2698 ceph_put_mds_session(s); 2698 ceph_put_mds_session(s);
2699 2699