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

Method ll_delegation

src/client/Client.cc:17721–17747  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17719}
17720
17721int Client::ll_delegation(Fh *fh, unsigned cmd, ceph_deleg_cb_t cb, void *priv)
17722{
17723 int ret = -EINVAL;
17724
17725 RWRef_t mref_reader(mount_state, CLIENT_MOUNTING);
17726 if (!mref_reader.is_state_satisfied())
17727 return -ENOTCONN;
17728
17729 std::scoped_lock lock(client_lock);
17730
17731 Inode *inode = fh->inode.get();
17732
17733 switch(cmd) {
17734 case CEPH_DELEGATION_NONE:
17735 inode->unset_deleg(fh);
17736 ret = 0;
17737 break;
17738 default:
17739 try {
17740 ret = inode->set_deleg(fh, cmd, cb, priv);
17741 } catch (std::bad_alloc&) {
17742 ret = -ENOMEM;
17743 }
17744 break;
17745 }
17746 return ret;
17747}
17748
17749class C_Client_RequestInterrupt : public Context {
17750private:

Callers 1

ceph_ll_delegationFunction · 0.80

Calls 4

is_state_satisfiedMethod · 0.80
unset_delegMethod · 0.80
set_delegMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected