From: Yuan Lu Date: Thu, 23 Apr 2020 06:01:51 +0000 (+0800) Subject: librbd: add WriteSameLogOperation X-Git-Tag: v16.1.0~2409^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4264138deb739a39b064f2b140fa509d1a0855b8;p=ceph.git librbd: add WriteSameLogOperation Signed-off-by: Peterson, Scott Signed-off-by: Li, Xiaoyan Signed-off-by: Lu, Yuan Signed-off-by: Chamarthy, Mahati --- diff --git a/src/librbd/cache/rwl/LogOperation.cc b/src/librbd/cache/rwl/LogOperation.cc index 52f458ec6756..d306c55ebed3 100644 --- a/src/librbd/cache/rwl/LogOperation.cc +++ b/src/librbd/cache/rwl/LogOperation.cc @@ -211,7 +211,7 @@ void WriteLogOperation::complete(int result) { utime_t buf_lat = buf_persist_comp_time - buf_persist_time; m_perfcounter->tinc(l_librbd_rwl_log_op_buf_to_bufc_t, buf_lat); m_perfcounter->hinc(l_librbd_rwl_log_op_buf_to_bufc_t_hist, buf_lat.to_nsec(), - log_entry->ram_entry.write_bytes); + log_entry->ram_entry.write_bytes); m_perfcounter->tinc(l_librbd_rwl_log_op_buf_to_app_t, log_append_time - buf_persist_time); } @@ -309,6 +309,30 @@ std::ostream &operator<<(std::ostream &os, return op.format(os); } +WriteSameLogOperation::WriteSameLogOperation(WriteLogOperationSet &set, + uint64_t image_offset_bytes, + uint64_t write_bytes, + uint32_t data_len, + CephContext *cct) + : WriteLogOperation(set, image_offset_bytes, write_bytes, cct) { + log_entry = + std::make_shared(set.sync_point->log_entry, image_offset_bytes, write_bytes, data_len); + ldout(m_cct, 20) << __func__ << " " << this << dendl; +} + +WriteSameLogOperation::~WriteSameLogOperation() { } + +std::ostream &WriteSameLogOperation::format(std::ostream &os) const { + os << "(Write Same) "; + WriteLogOperation::format(os); + return os; +}; + +std::ostream &operator<<(std::ostream &os, + const WriteSameLogOperation &op) { + return op.format(os); +} + } // namespace rwl } // namespace cache } // namespace librbd diff --git a/src/librbd/cache/rwl/LogOperation.h b/src/librbd/cache/rwl/LogOperation.h index c3d42566cdc4..ad12f6aac460 100644 --- a/src/librbd/cache/rwl/LogOperation.h +++ b/src/librbd/cache/rwl/LogOperation.h @@ -202,6 +202,28 @@ public: const DiscardLogOperation &op); }; +class WriteSameLogOperation : public WriteLogOperation { +public: + using GenericWriteLogOperation::m_lock; + using GenericWriteLogOperation::sync_point; + using GenericWriteLogOperation::on_write_append; + using GenericWriteLogOperation::on_write_persist; + using WriteLogOperation::log_entry; + using WriteLogOperation::bl; + using WriteLogOperation::buffer_alloc; + WriteSameLogOperation(WriteLogOperationSet &set, + const uint64_t image_offset_bytes, + const uint64_t write_bytes, + const uint32_t data_len, + CephContext *cct); + ~WriteSameLogOperation(); + WriteSameLogOperation(const WriteSameLogOperation&) = delete; + WriteSameLogOperation &operator=(const WriteSameLogOperation&) = delete; + std::ostream &format(std::ostream &os) const; + friend std::ostream &operator<<(std::ostream &os, + const WriteSameLogOperation &op); +}; + } // namespace rwl } // namespace cache } // namespace librbd