From: Kefu Chai Date: Wed, 23 Nov 2016 05:58:08 +0000 (+0800) Subject: osd_types: pg_t::is_split(): use unsigned for bits operations X-Git-Tag: v11.1.0~139^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=97eb2ad72df825817c2eeb4c12ab846c01751c98;p=ceph.git osd_types: pg_t::is_split(): use unsigned for bits operations this silences the warning of The result of the '<<' expression is undefined quote from n3337, ยง5.8 expr.shift: If E1 has an unsigned type, the value ... (is deterministic)... Otherwise, if E1 has a signed type and non-negative value, and E1 x 2^E2 is representable in the result type, then that is the resulting value; otherwise, the behavior is undefined. Signed-off-by: Kefu Chai --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index b6fdc7fbe628..93586843e534 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -476,10 +476,10 @@ bool pg_t::is_split(unsigned old_pg_num, unsigned new_pg_num, set *childre bool split = false; if (true) { - int old_bits = cbits(old_pg_num); - int old_mask = (1 << old_bits) - 1; - for (int n = 1; ; n++) { - int next_bit = (n << (old_bits-1)); + unsigned old_bits = cbits(old_pg_num); + unsigned old_mask = (1 << old_bits) - 1; + for (unsigned n = 1; ; n++) { + unsigned next_bit = (n << (old_bits-1)); unsigned s = next_bit | m_seed; if (s < old_pg_num || s == m_seed)