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_WRITEBACKHANDLER_H
4 #define CEPH_OSDC_WRITEBACKHANDLER_H
6 #include "include/Context.h"
7 #include "include/types.h"
8 #include "osd/osd_types.h"
10 class WritebackHandler
{
13 virtual ~WritebackHandler() {}
15 virtual void read(const object_t
& oid
, uint64_t object_no
,
16 const object_locator_t
& oloc
, uint64_t off
, uint64_t len
,
17 snapid_t snapid
, bufferlist
*pbl
, uint64_t trunc_size
,
18 __u32 trunc_seq
, int op_flags
,
19 const ZTracer::Trace
&parent_trace
, Context
*onfinish
) = 0;
21 * check if a given extent read result may change due to a write
23 * Check if the content we see at the given read offset may change
24 * due to a write to this object.
27 * @param read_off read offset
28 * @param read_len read length
29 * @param snapid read snapid
31 virtual bool may_copy_on_write(const object_t
& oid
, uint64_t read_off
,
32 uint64_t read_len
, snapid_t snapid
) = 0;
33 virtual ceph_tid_t
write(const object_t
& oid
, const object_locator_t
& oloc
,
34 uint64_t off
, uint64_t len
,
35 const SnapContext
& snapc
,
36 const bufferlist
&bl
, ceph::real_time mtime
,
37 uint64_t trunc_size
, __u32 trunc_seq
,
38 ceph_tid_t journal_tid
,
39 const ZTracer::Trace
&parent_trace
,
40 Context
*oncommit
) = 0;
42 virtual void overwrite_extent(const object_t
& oid
, uint64_t off
, uint64_t len
,
43 ceph_tid_t original_journal_tid
,
44 ceph_tid_t new_journal_tid
) {}
46 virtual bool can_scattered_write() { return false; }
47 virtual 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
,