MCPcopy Create free account
hub / github.com/ceph/ceph / encode_inode_release

Method encode_inode_release

src/client/Client.cc:2415–2459  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2413}
2414
2415int Client::encode_inode_release(Inode *in, MetaRequest *req,
2416 mds_rank_t mds, int drop,
2417 int unless, int force)
2418{
2419 ldout(cct, 20) << __func__ << " enter(in:" << *in << ", req:" << req
2420 << " mds:" << mds << ", drop:" << ccap_string(drop) << ", unless:" << ccap_string(unless)
2421 << ", force:" << force << ")" << dendl;
2422 int released = 0;
2423 auto it = in->caps.find(mds);
2424 if (it != in->caps.end()) {
2425 Cap &cap = it->second;
2426 drop &= ~(in->dirty_caps | get_caps_used(in));
2427 if ((drop & cap.issued) &&
2428 !(unless & cap.issued)) {
2429 ldout(cct, 25) << "dropping caps " << ccap_string(drop) << dendl;
2430 cap.issued &= ~drop;
2431 cap.implemented &= ~drop;
2432 released = 1;
2433 } else {
2434 released = force;
2435 }
2436 if (released) {
2437 cap.wanted = in->caps_wanted();
2438 if (&cap == in->auth_cap &&
2439 !(cap.wanted & CEPH_CAP_ANY_FILE_WR)) {
2440 in->requested_max_size = 0;
2441 ldout(cct, 25) << "reset requested_max_size due to not wanting any file write cap" << dendl;
2442 }
2443 ceph_mds_request_release rel;
2444 rel.ino = in->ino;
2445 rel.cap_id = cap.cap_id;
2446 rel.seq = cap.seq;
2447 rel.issue_seq = cap.issue_seq;
2448 rel.mseq = cap.mseq;
2449 rel.caps = cap.implemented;
2450 rel.wanted = cap.wanted;
2451 rel.dname_len = 0;
2452 rel.dname_seq = 0;
2453 req->cap_releases.push_back(MClientRequest::Release(rel,""));
2454 }
2455 }
2456 ldout(cct, 25) << __func__ << " exit(in:" << *in << ") released:"
2457 << released << dendl;
2458 return released;
2459}
2460
2461void Client::encode_dentry_release(Dentry *dn, MetaRequest *req,
2462 mds_rank_t mds, int drop, int unless)

Callers

nothing calls this directly

Calls 6

ccap_stringFunction · 0.85
ReleaseClass · 0.85
caps_wantedMethod · 0.80
findMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected