ceph: always renew caps if mds_wanted is insufficient
Original code only renews caps for inodes with CEPH_I_CAP_DROPPED flag, which indicates that mds has closed the session and caps were dropped. Remove this flag in preparation for not requesting caps for idle open files. Signed-off-by: "Yan, Zheng" <zyan@redhat.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
@@ -1514,8 +1514,6 @@ static int remove_session_caps_cb(struct inode *inode, struct ceph_cap *cap,
|
||||
dout("removing cap %p, ci is %p, inode is %p\n",
|
||||
cap, ci, &ci->vfs_inode);
|
||||
spin_lock(&ci->i_ceph_lock);
|
||||
if (cap->mds_wanted | cap->issued)
|
||||
ci->i_ceph_flags |= CEPH_I_CAP_DROPPED;
|
||||
__ceph_remove_cap(cap, false);
|
||||
if (!ci->i_auth_cap) {
|
||||
struct ceph_cap_flush *cf;
|
||||
@@ -1681,9 +1679,6 @@ static int wake_up_session_cb(struct inode *inode, struct ceph_cap *cap,
|
||||
/* mds did not re-issue stale cap */
|
||||
spin_lock(&ci->i_ceph_lock);
|
||||
cap->issued = cap->implemented = CEPH_CAP_PIN;
|
||||
/* make sure mds knows what we want */
|
||||
if (__ceph_caps_file_wanted(ci) & ~cap->mds_wanted)
|
||||
ci->i_ceph_flags |= CEPH_I_CAP_DROPPED;
|
||||
spin_unlock(&ci->i_ceph_lock);
|
||||
}
|
||||
} else if (ev == FORCE_RO) {
|
||||
|
Reference in New Issue
Block a user