From: Sage Weil Date: Wed, 22 Jun 2016 14:28:28 +0000 (-0400) Subject: include/small_encoding: fix lba encoding with many low zeros X-Git-Tag: v11.0.0~81^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3c8c882c31e990478c8b6260debccdfb3b0b11a7;p=ceph.git include/small_encoding: fix lba encoding with many low zeros Signed-off-by: Sage Weil --- diff --git a/src/include/small_encoding.h b/src/include/small_encoding.h index 5efca0cfb2bf..e07afaf381e0 100644 --- a/src/include/small_encoding.h +++ b/src/include/small_encoding.h @@ -183,6 +183,7 @@ inline void small_encode_lba(uint64_t v, bufferlist& bl) { pos = t + 1; word = (1 << t) - 1; } else { + v >>= 20; pos = 3; word = 0x3; } diff --git a/src/test/encoding.cc b/src/test/encoding.cc index 5469c42109ac..b9b13f73d9dc 100644 --- a/src/test/encoding.cc +++ b/src/test/encoding.cc @@ -320,6 +320,7 @@ TEST(small_encoding, varint_lowz) { {0x7f0000, 2, 2, 2}, {0xffff0000, 4, 4, 4}, {0xffffffff, 5, 5, 5}, + {0x41000000, 3, 4, 4}, {0, 0, 0, 0} }; for (unsigned i=0; v[i][1]; ++i) { @@ -382,6 +383,7 @@ TEST(small_encoding, lba) { {0x3fffffff0000, 5}, {0xfffffff00000, 4}, {0x1fffffff00000, 5}, + {0x41000000, 4}, {0, 0} }; for (unsigned i=0; v[i][1]; ++i) {