int Client::WriteEncMgr::read_async(uint64_t off, uint64_t len, bufferlist *bl,
iofinish_method_ctx<WriteEncMgr> *ioctx)
{
+ ldout(cct, 10) << __func__ << dendl;
get();
if (off >= in->size) {
int Client::WriteEncMgr::read_modify_write(Context *_iofinish)
{
- iofinish = _iofinish;
+ get();
+ iofinish = new LambdaContext([this, _iofinish](int r) {
+ this->put();
+ _iofinish->complete(r);
+ });
if (!denc) {
return do_write();
void Client::WriteEncMgr::finish_read_start(int r)
{
ceph_assert(ceph_mutex_is_locked_by_me(clnt->client_lock));
+ ldout(cct, 10) << __func__ << dendl;
if (r >= 0) {
std::lock_guard l{lock};
void Client::WriteEncMgr::finish_read_end(int r)
{
ceph_assert(ceph_mutex_is_locked_by_me(clnt->client_lock));
+ ldout(cct, 10) << __func__ << dendl;
if (r >= 0) {
std::lock_guard l{lock};
bool Client::WriteEncMgr::do_try_finish(int r)
{
ceph_assert(ceph_mutex_is_locked_by_me(clnt->client_lock));
+ ldout(cct, 10) << __func__ << dendl;
if (!aioc.is_complete()) {
return false;
update_write_params();
r = do_write();
-
return true;
}
int Client::WriteEncMgr_Buffered::do_write()
{
+ ldout(cct, 10) << __func__ << dendl;
int r = 0;
// do buffered write
int Client::WriteEncMgr_NotBuffered::do_write()
{
+ ldout(cct, 10) << __func__ << dendl;
clnt->get_cap_ref(in, CEPH_CAP_FILE_BUFFER);
clnt->filer->write_trunc(in->ino, &in->layout, in->snaprealm->get_snap_context(),
if (buffered_write) {
enc_mgr = ceph::make_ref<WriteEncMgr_Buffered>(this, f,
- offset, size, bl,
- !!onfinish);
+ offset, size, bl,
+ !!onfinish);
} else {
enc_mgr = ceph::make_ref<WriteEncMgr_NotBuffered>(this, f,
- offset, size, bl,
- !!onfinish);
+ offset, size, bl,
+ !!onfinish);
}
return r;
}
+ ldout(cct, 10) << __func__ << ": enc_mgr=" << enc_mgr << dendl;
+
ldout(cct, 10) << " snaprealm " << *in->snaprealm << dendl;
std::unique_ptr<Context> iofinish = nullptr;