diff options
author | Sage Weil <sage@newdream.net> | 2010-07-23 22:54:21 +0200 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-07-23 22:54:21 +0200 |
commit | 1dadcce358a4c4078e1ea0bc4365c3f67b8e373e (patch) | |
tree | 01e2bc98db97884a5c039a185612a878c199a1aa /fs | |
parent | ceph: fix leak of dentry in ceph_init_dentry() error path (diff) | |
download | linux-1dadcce358a4c4078e1ea0bc4365c3f67b8e373e.tar.xz linux-1dadcce358a4c4078e1ea0bc4365c3f67b8e373e.zip |
ceph: fix dentry lease release
When we embed a dentry lease release notification in a request, invalidate
our lease so we don't think we still have it. Otherwise we can get all
sorts of incorrect client behavior when multiple clients are interacting
with the same part of the namespace.
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ceph/caps.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 74144d6389f0..6afc1affb50a 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -2984,6 +2984,7 @@ int ceph_encode_dentry_release(void **p, struct dentry *dentry, memcpy(*p, dentry->d_name.name, dentry->d_name.len); *p += dentry->d_name.len; rel->dname_seq = cpu_to_le32(di->lease_seq); + __ceph_mdsc_drop_dentry_lease(dentry); } spin_unlock(&dentry->d_lock); return ret; |