From: Sage Weil Date: Mon, 28 Apr 2008 01:35:29 +0000 (-0700) Subject: kclient: lease ttl fix, again X-Git-Tag: v0.2~104 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5a5eefca61be53a3c9dedf5f59d6bdef7f8c9e96;p=ceph.git kclient: lease ttl fix, again --- diff --git a/src/kernel/inode.c b/src/kernel/inode.c index 33e18272c0b7..58eec525c8de 100644 --- a/src/kernel/inode.c +++ b/src/kernel/inode.c @@ -232,7 +232,7 @@ void ceph_update_inode_lease(struct inode *inode, * be careful: we can't remove lease from a different session * without holding that other session's s_mutex. so don't. */ - if (!time_before(ttl, ci->i_lease_ttl) && + if ((ci->i_lease_ttl == 0 || !time_before(ttl, ci->i_lease_ttl)) && (!ci->i_lease_session || ci->i_lease_session == session)) { ci->i_lease_ttl = ttl; ci->i_lease_mask = mask; @@ -301,7 +301,7 @@ void ceph_update_dentry_lease(struct dentry *dentry, return; spin_lock(&dentry->d_lock); - if (time_before(ttl, dentry->d_time)) + if (dentry->d_time != 0 && time_before(ttl, dentry->d_time)) goto fail_unlock; /* we already have a newer lease. */ di = ceph_dentry(dentry);