From 48e5907d10a976bdf5ff6f02d12e0cbdfa4822be Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 13 Mar 2009 16:54:39 -0700 Subject: [PATCH] kclient: more cleanup --- src/kernel/dir.c | 14 ++++---------- src/kernel/mds_client.c | 28 ++++++++++++++-------------- src/kernel/mds_client.h | 1 + 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/src/kernel/dir.c b/src/kernel/dir.c index 8df2a8e403c6d..150e1aac100c6 100644 --- a/src/kernel/dir.c +++ b/src/kernel/dir.c @@ -639,11 +639,10 @@ static int dentry_lease_is_valid(struct dentry *dentry) struct ceph_dentry_info *di; struct ceph_mds_session *s; int valid = 0; - int should_renew = 0; u32 gen; unsigned long ttl; struct inode *dir; - int mds; + int mds = -1; u32 seq; spin_lock(&dentry->d_lock); @@ -661,26 +660,21 @@ static int dentry_lease_is_valid(struct dentry *dentry) valid = 1; if (di->lease_renew_after && time_after(jiffies, di->lease_renew_after)) { - should_renew = 1; + /* we should renew */ dir = dentry->d_parent->d_inode; mds = s->s_mds; seq = di->lease_seq; di->lease_renew_after = 0; } } else { - ceph_put_mds_session(di->lease_session); - kfree(di); - dentry->d_fsdata = NULL; + __ceph_mdsc_drop_dentry_lease(dentry); } } spin_unlock(&dentry->d_lock); - if (should_renew) { - dout(0, "dentry_lease should_renew! - dentry %p = %d\n", - dentry, valid); + if (mds >= 0) ceph_mdsc_lease_send_msg(&ceph_client(dentry->d_sb)->mdsc, mds, dir, dentry, CEPH_MDS_LEASE_RENEW, seq); - } dout(20, "dentry_lease_is_valid - dentry %p = %d\n", dentry, valid); return valid; } diff --git a/src/kernel/mds_client.c b/src/kernel/mds_client.c index acd67594bc2de..1eb0210b2f13f 100644 --- a/src/kernel/mds_client.c +++ b/src/kernel/mds_client.c @@ -657,18 +657,6 @@ static void remove_session_caps(struct ceph_mds_session *session) BUG_ON(session->s_nr_caps > 0); } -/* - * caller must hold session s_mutex, dentry->d_lock - */ -static void __drop_dentry_lease(struct dentry *dentry) -{ - struct ceph_dentry_info *di; - di = ceph_dentry(dentry); - ceph_put_mds_session(di->lease_session); - kfree(di); - dentry->d_fsdata = NULL; -} - /* * wake up any threads waiting on this session's caps * @@ -1889,6 +1877,18 @@ static void check_new_map(struct ceph_mds_client *mdsc, * leases */ +/* + * caller must hold session s_mutex, dentry->d_lock + */ +void __ceph_mdsc_drop_dentry_lease(struct dentry *dentry) +{ + struct ceph_dentry_info *di = ceph_dentry(dentry); + + ceph_put_mds_session(di->lease_session); + kfree(di); + dentry->d_fsdata = NULL; +} + void ceph_mdsc_handle_lease(struct ceph_mds_client *mdsc, struct ceph_msg *msg) { struct super_block *sb = mdsc->client->sb; @@ -1961,7 +1961,7 @@ void ceph_mdsc_handle_lease(struct ceph_mds_client *mdsc, struct ceph_msg *msg) case CEPH_MDS_LEASE_REVOKE: if (di && di->lease_session == session) { h->seq = cpu_to_le32(di->lease_seq); - __drop_dentry_lease(dentry); + __ceph_mdsc_drop_dentry_lease(dentry); } release = 1; break; @@ -2065,7 +2065,7 @@ void ceph_mdsc_lease_release(struct ceph_mds_client *mdsc, struct inode *inode, /* we do have a lease on this dentry; note mds and seq */ mds = di->lease_session->s_mds; seq = di->lease_seq; - __drop_dentry_lease(dentry); + __ceph_mdsc_drop_dentry_lease(dentry); spin_unlock(&dentry->d_lock); dout(10, "lease_release inode %p dentry %p mask %d to mds%d\n", diff --git a/src/kernel/mds_client.h b/src/kernel/mds_client.h index 44f34fd39db57..9d25a9d004dec 100644 --- a/src/kernel/mds_client.h +++ b/src/kernel/mds_client.h @@ -312,6 +312,7 @@ extern struct ceph_mds_request *ceph_mdsc_get_listener_req(struct inode *inode, extern char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *base, int mds); +extern void __ceph_mdsc_drop_dentry_lease(struct dentry *dentry); extern void ceph_mdsc_lease_send_msg(struct ceph_mds_client *mdsc, int mds, struct inode *inode, struct dentry *dentry, char action, -- 2.47.3