ceph: fix dentry lease release
authorSage Weil <sage@newdream.net>
Fri, 23 Jul 2010 20:54:21 +0000 (13:54 -0700)
committerSage Weil <sage@newdream.net>
Fri, 23 Jul 2010 20:54:21 +0000 (13:54 -0700)
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>
fs/ceph/caps.c

index 74144d6389f0af2181d0f1e22fb4ae67c9839ca5..6afc1affb50a3bceca58a3133ec550c98241853b 100644 (file)
@@ -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;