make sure we call Locker::eval_gather() for inodes in 'to_eval' list.
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Fixes: https://tracker.ceph.com/issues/42759
(cherry picked from commit
06f175f34dbec471e5c31b00f76ccce727f3ff3b)
// invalidate all caps
session->inc_cap_gen();
+ bool ret = true;
std::vector<CInode*> to_eval;
for (auto p = session->caps.begin(); !p.end(); ) {
if (!revoking)
continue;
- if (revoking & CEPH_CAP_ANY_WR)
- return false;
+ if (revoking & CEPH_CAP_ANY_WR) {
+ ret = false;
+ break;
+ }
int issued = cap->issued();
CInode *in = cap->get_inode();
request_inode_file_caps(in);
}
- return true;
+ return ret;
}
void Locker::resume_stale_caps(Session *session)