From: Kefu Chai Date: Sun, 25 Aug 2019 03:48:42 +0000 (+0800) Subject: os/bluestore: implement copy ctor and assignment for bluestore_blob_use_tracker_t X-Git-Tag: v15.1.0~1760^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8bc4352725c14b7b03456ea8602054321aeba313;p=ceph.git os/bluestore: implement copy ctor and assignment for bluestore_blob_use_tracker_t to address the `check-generated.sh` test failure. Signed-off-by: Kefu Chai --- diff --git a/src/os/bluestore/bluestore_types.cc b/src/os/bluestore/bluestore_types.cc index a2b421596ded..f7ff63e936dc 100644 --- a/src/os/bluestore/bluestore_types.cc +++ b/src/os/bluestore/bluestore_types.cc @@ -353,6 +353,37 @@ ostream& operator<<(ostream& out, const bluestore_extent_ref_map_t& m) } // bluestore_blob_use_tracker_t +bluestore_blob_use_tracker_t::bluestore_blob_use_tracker_t( + const bluestore_blob_use_tracker_t& tracker) + : au_size{tracker.au_size}, + num_au{tracker.num_au}, + bytes_per_au{nullptr} +{ + if (num_au > 0) { + allocate(); + std::copy(tracker.bytes_per_au, tracker.bytes_per_au + num_au, bytes_per_au); + } else { + total_bytes = tracker.total_bytes; + } +} + +bluestore_blob_use_tracker_t& +bluestore_blob_use_tracker_t::operator=(const bluestore_blob_use_tracker_t& rhs) +{ + if (this == &rhs) { + return *this; + } + clear(); + au_size = rhs.au_size; + num_au = rhs.num_au; + if (rhs.num_au > 0) { + allocate(); + std::copy(rhs.bytes_per_au, rhs.bytes_per_au + num_au, bytes_per_au); + } else { + total_bytes = rhs.total_bytes; + } + return *this; +} void bluestore_blob_use_tracker_t::allocate() { diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index aff9e07df202..867531c4e4f3 100644 --- a/src/os/bluestore/bluestore_types.h +++ b/src/os/bluestore/bluestore_types.h @@ -257,6 +257,8 @@ struct bluestore_blob_use_tracker_t { bluestore_blob_use_tracker_t() : au_size(0), num_au(0), bytes_per_au(nullptr) { } + bluestore_blob_use_tracker_t(const bluestore_blob_use_tracker_t& tracker); + bluestore_blob_use_tracker_t& operator=(const bluestore_blob_use_tracker_t& rhs); ~bluestore_blob_use_tracker_t() { clear(); }