ceph: remove unnecessary d_fsdata conditional checks

We now set d_fsdata unconditionally on all dentries prior to setting up
the d_ops, so all of these checks are unnecessary.

Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Sage Weil 2011-11-11 09:48:53 -08:00
parent 186482560f
commit 3d8eb7a94e
2 changed files with 22 additions and 30 deletions

View file

@ -973,7 +973,7 @@ static int dentry_lease_is_valid(struct dentry *dentry)
spin_lock(&dentry->d_lock); spin_lock(&dentry->d_lock);
di = ceph_dentry(dentry); di = ceph_dentry(dentry);
if (di && di->lease_session) { if (di->lease_session) {
s = di->lease_session; s = di->lease_session;
spin_lock(&s->s_cap_lock); spin_lock(&s->s_cap_lock);
gen = s->s_cap_gen; gen = s->s_cap_gen;
@ -1072,13 +1072,11 @@ static void ceph_d_release(struct dentry *dentry)
struct ceph_dentry_info *di = ceph_dentry(dentry); struct ceph_dentry_info *di = ceph_dentry(dentry);
dout("d_release %p\n", dentry); dout("d_release %p\n", dentry);
if (di) { ceph_dentry_lru_del(dentry);
ceph_dentry_lru_del(dentry); if (di->lease_session)
if (di->lease_session) ceph_put_mds_session(di->lease_session);
ceph_put_mds_session(di->lease_session); kmem_cache_free(ceph_dentry_cachep, di);
kmem_cache_free(ceph_dentry_cachep, di); dentry->d_fsdata = NULL;
dentry->d_fsdata = NULL;
}
} }
static int ceph_snapdir_d_revalidate(struct dentry *dentry, static int ceph_snapdir_d_revalidate(struct dentry *dentry,
@ -1259,13 +1257,11 @@ void ceph_dentry_lru_add(struct dentry *dn)
dout("dentry_lru_add %p %p '%.*s'\n", di, dn, dout("dentry_lru_add %p %p '%.*s'\n", di, dn,
dn->d_name.len, dn->d_name.name); dn->d_name.len, dn->d_name.name);
if (di) { mdsc = ceph_sb_to_client(dn->d_sb)->mdsc;
mdsc = ceph_sb_to_client(dn->d_sb)->mdsc; spin_lock(&mdsc->dentry_lru_lock);
spin_lock(&mdsc->dentry_lru_lock); list_add_tail(&di->lru, &mdsc->dentry_lru);
list_add_tail(&di->lru, &mdsc->dentry_lru); mdsc->num_dentry++;
mdsc->num_dentry++; spin_unlock(&mdsc->dentry_lru_lock);
spin_unlock(&mdsc->dentry_lru_lock);
}
} }
void ceph_dentry_lru_touch(struct dentry *dn) void ceph_dentry_lru_touch(struct dentry *dn)
@ -1275,12 +1271,10 @@ void ceph_dentry_lru_touch(struct dentry *dn)
dout("dentry_lru_touch %p %p '%.*s' (offset %lld)\n", di, dn, dout("dentry_lru_touch %p %p '%.*s' (offset %lld)\n", di, dn,
dn->d_name.len, dn->d_name.name, di->offset); dn->d_name.len, dn->d_name.name, di->offset);
if (di) { mdsc = ceph_sb_to_client(dn->d_sb)->mdsc;
mdsc = ceph_sb_to_client(dn->d_sb)->mdsc; spin_lock(&mdsc->dentry_lru_lock);
spin_lock(&mdsc->dentry_lru_lock); list_move_tail(&di->lru, &mdsc->dentry_lru);
list_move_tail(&di->lru, &mdsc->dentry_lru); spin_unlock(&mdsc->dentry_lru_lock);
spin_unlock(&mdsc->dentry_lru_lock);
}
} }
void ceph_dentry_lru_del(struct dentry *dn) void ceph_dentry_lru_del(struct dentry *dn)
@ -1290,13 +1284,11 @@ void ceph_dentry_lru_del(struct dentry *dn)
dout("dentry_lru_del %p %p '%.*s'\n", di, dn, dout("dentry_lru_del %p %p '%.*s'\n", di, dn,
dn->d_name.len, dn->d_name.name); dn->d_name.len, dn->d_name.name);
if (di) { mdsc = ceph_sb_to_client(dn->d_sb)->mdsc;
mdsc = ceph_sb_to_client(dn->d_sb)->mdsc; spin_lock(&mdsc->dentry_lru_lock);
spin_lock(&mdsc->dentry_lru_lock); list_del_init(&di->lru);
list_del_init(&di->lru); mdsc->num_dentry--;
mdsc->num_dentry--; spin_unlock(&mdsc->dentry_lru_lock);
spin_unlock(&mdsc->dentry_lru_lock);
}
} }
/* /*

View file

@ -2772,7 +2772,7 @@ static void handle_lease(struct ceph_mds_client *mdsc,
di = ceph_dentry(dentry); di = ceph_dentry(dentry);
switch (h->action) { switch (h->action) {
case CEPH_MDS_LEASE_REVOKE: case CEPH_MDS_LEASE_REVOKE:
if (di && di->lease_session == session) { if (di->lease_session == session) {
if (ceph_seq_cmp(di->lease_seq, seq) > 0) if (ceph_seq_cmp(di->lease_seq, seq) > 0)
h->seq = cpu_to_le32(di->lease_seq); h->seq = cpu_to_le32(di->lease_seq);
__ceph_mdsc_drop_dentry_lease(dentry); __ceph_mdsc_drop_dentry_lease(dentry);
@ -2781,7 +2781,7 @@ static void handle_lease(struct ceph_mds_client *mdsc,
break; break;
case CEPH_MDS_LEASE_RENEW: case CEPH_MDS_LEASE_RENEW:
if (di && di->lease_session == session && if (di->lease_session == session &&
di->lease_gen == session->s_cap_gen && di->lease_gen == session->s_cap_gen &&
di->lease_renew_from && di->lease_renew_from &&
di->lease_renew_after == 0) { di->lease_renew_after == 0) {