aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-07-23 13:54:21 -0700
committerSage Weil <sage@newdream.net>2010-07-23 13:54:21 -0700
commit1dadcce358a4c4078e1ea0bc4365c3f67b8e373e (patch)
tree01e2bc98db97884a5c039a185612a878c199a1aa /fs/ceph
parent8c696737aa61316a252c4514d09dd163f1464d33 (diff)
downloadkernel_samsung_smdk4412-1dadcce358a4c4078e1ea0bc4365c3f67b8e373e.zip
kernel_samsung_smdk4412-1dadcce358a4c4078e1ea0bc4365c3f67b8e373e.tar.gz
kernel_samsung_smdk4412-1dadcce358a4c4078e1ea0bc4365c3f67b8e373e.tar.bz2
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/ceph')
-rw-r--r--fs/ceph/caps.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 74144d6..6afc1af 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;