From: Yan, Zheng Date: Sat, 19 Sep 2015 13:13:33 +0000 (+0800) Subject: client: add scattered write callback to ObjecterWriteback X-Git-Tag: v10.0.3~48^2~2^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=41aa50b45e2c61e4b75315112849b00691d6ea12;p=ceph.git client: add scattered write callback to ObjecterWriteback Signed-off-by: Yan, Zheng Update for ceph::real_time Signed-off-by: Greg Farnum --- diff --git a/src/client/ObjecterWriteback.h b/src/client/ObjecterWriteback.h index 5d0343f0c6dc..8acd3f736202 100644 --- a/src/client/ObjecterWriteback.h +++ b/src/client/ObjecterWriteback.h @@ -42,6 +42,23 @@ class ObjecterWriteback : public WritebackHandler { m_finisher)); } + virtual bool can_scattered_write() { return true; } + virtual ceph_tid_t write(const object_t& oid, const object_locator_t& oloc, + vector >& io_vec, + const SnapContext& snapc, ceph::real_time mtime, + uint64_t trunc_size, __u32 trunc_seq, + Context *oncommit) { + ObjectOperation op; + for (vector >::iterator p = io_vec.begin(); + p != io_vec.end(); + ++p) + op.write(p->first, p->second, trunc_size, trunc_seq); + + return m_objecter->mutate(oid, oloc, op, snapc, mtime, 0, NULL, + new C_OnFinisher(new C_Lock(m_lock, oncommit), + m_finisher)); + } + private: Objecter *m_objecter; Finisher *m_finisher;