summaryrefslogtreecommitdiffstats
path: root/fs/ceph/mds_client.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-06-09 16:47:10 -0700
committerSage Weil <sage@newdream.net>2010-06-10 13:30:07 -0700
commit3d7ded4d81d807c2f75f310a8d74a5d72be13a1b (patch)
treec633b938f72dcd39c84f2430c7d4025331ab4369 /fs/ceph/mds_client.c
parent9dbd412f56c453f15014396c6024b895c1485ccb (diff)
downloadlinux-stable-3d7ded4d81d807c2f75f310a8d74a5d72be13a1b.tar.gz
linux-stable-3d7ded4d81d807c2f75f310a8d74a5d72be13a1b.tar.bz2
linux-stable-3d7ded4d81d807c2f75f310a8d74a5d72be13a1b.zip
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)
/*
* called under s_mutex
*/
-static void send_cap_releases(struct ceph_mds_client *mdsc,
- struct ceph_mds_session *session)
+void ceph_send_cap_releases(struct ceph_mds_client *mdsc,
+ struct ceph_mds_session *session)
{
struct ceph_msg *msg;
@@ -2693,7 +2693,7 @@ static void delayed_work(struct work_struct *work)
add_cap_releases(mdsc, s, -1);
if (s->s_state == CEPH_MDS_SESSION_OPEN ||
s->s_state == CEPH_MDS_SESSION_HUNG)
- send_cap_releases(mdsc, s);
+ ceph_send_cap_releases(mdsc, s);
mutex_unlock(&s->s_mutex);
ceph_put_mds_session(s);