]>
git.proxmox.com Git - ceph.git/blob - ceph/src/client/ObjecterWriteback.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3 #ifndef CEPH_OSDC_OBJECTERWRITEBACKHANDLER_H
4 #define CEPH_OSDC_OBJECTERWRITEBACKHANDLER_H
6 #include "osdc/Objecter.h"
7 #include "osdc/WritebackHandler.h"
9 class ObjecterWriteback
: public WritebackHandler
{
11 ObjecterWriteback(Objecter
*o
, Finisher
*fin
, Mutex
*lock
)
15 ~ObjecterWriteback() override
{}
17 void read(const object_t
& oid
, uint64_t object_no
,
18 const object_locator_t
& oloc
, uint64_t off
, uint64_t len
,
19 snapid_t snapid
, bufferlist
*pbl
, uint64_t trunc_size
,
20 __u32 trunc_seq
, int op_flags
, Context
*onfinish
) override
{
21 m_objecter
->read_trunc(oid
, oloc
, off
, len
, snapid
, pbl
, 0,
22 trunc_size
, trunc_seq
,
23 new C_OnFinisher(new C_Lock(m_lock
, onfinish
),
27 bool may_copy_on_write(const object_t
& oid
, uint64_t read_off
,
28 uint64_t read_len
, snapid_t snapid
) override
{
32 ceph_tid_t
write(const object_t
& oid
, const object_locator_t
& oloc
,
33 uint64_t off
, uint64_t len
,
34 const SnapContext
& snapc
, const bufferlist
&bl
,
35 ceph::real_time mtime
, uint64_t trunc_size
,
36 __u32 trunc_seq
, ceph_tid_t journal_tid
,
37 Context
*oncommit
) override
{
38 return m_objecter
->write_trunc(oid
, oloc
, off
, len
, snapc
, bl
, mtime
, 0,
39 trunc_size
, trunc_seq
,
40 new C_OnFinisher(new C_Lock(m_lock
,
45 bool can_scattered_write() override
{ return true; }
46 using WritebackHandler::write
;
47 ceph_tid_t
write(const object_t
& oid
, const object_locator_t
& oloc
,
48 vector
<pair
<uint64_t, bufferlist
> >& io_vec
,
49 const SnapContext
& snapc
, ceph::real_time mtime
,
50 uint64_t trunc_size
, __u32 trunc_seq
,
51 Context
*oncommit
) override
{
53 for (vector
<pair
<uint64_t, bufferlist
> >::iterator p
= io_vec
.begin();
56 op
.write(p
->first
, p
->second
, trunc_size
, trunc_seq
);
58 return m_objecter
->mutate(oid
, oloc
, op
, snapc
, mtime
, 0,
59 new C_OnFinisher(new C_Lock(m_lock
, oncommit
),