From: Kefu Chai Date: Sat, 8 May 2021 13:02:54 +0000 (+0800) Subject: librbd: use uint64_t instead of size_t for SparseExtent::length X-Git-Tag: v17.1.0~1949^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3982d0ea2ca25457e78504afb7e559ef02f62055;p=ceph.git librbd: use uint64_t instead of size_t for SparseExtent::length SparseBufferlistExtent's ctor accepts size_t, so, on a 32-bit platform, the parameter would be narrowed before passing to the ctor, and GCC complains at seeing this: /builds/a16bitsysop/aports/community/ceph/src/ceph-16.2.3/src/librbd/deep_copy/ObjectCopyRequest.cc:789:60: warning: narrowing conversion of 'object_extent.striper::LightweightObjectExtent::length' from 'uint64_t' {aka 'long long unsigned int'} to 'size_t' {aka 'unsigned int'} [-Wnarrowing] 789 | {io::SPARSE_EXTENT_STATE_ZEROED, object_extent.length}); | ~~~~~~~~~~~~~~^~~~~~ so change SparseExtent::length to uint64_t, as ReadExtent::length is uint64_t and related length() methods in the surrounding classes all return uint64_t. Signed-off-by: Kefu Chai --- diff --git a/src/librbd/io/Types.h b/src/librbd/io/Types.h index 030f0814a66d..12fea2bb3262 100644 --- a/src/librbd/io/Types.h +++ b/src/librbd/io/Types.h @@ -163,9 +163,9 @@ std::ostream& operator<<(std::ostream& os, SparseExtentState state); struct SparseExtent { SparseExtentState state; - size_t length; + uint64_t length; - SparseExtent(SparseExtentState state, size_t length) + SparseExtent(SparseExtentState state, uint64_t length) : state(state), length(length) { } @@ -214,11 +214,11 @@ typedef std::map SnapshotDelta; struct SparseBufferlistExtent : public SparseExtent { ceph::bufferlist bl; - SparseBufferlistExtent(SparseExtentState state, size_t length) + SparseBufferlistExtent(SparseExtentState state, uint64_t length) : SparseExtent(state, length) { ceph_assert(state != SPARSE_EXTENT_STATE_DATA); } - SparseBufferlistExtent(SparseExtentState state, size_t length, + SparseBufferlistExtent(SparseExtentState state, uint64_t length, ceph::bufferlist&& bl_) : SparseExtent(state, length), bl(std::move(bl_)) { ceph_assert(state != SPARSE_EXTENT_STATE_DATA || length == bl.length());