]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
os/bluestore: don't round_up_to in apply_for_bitset_range. 31903/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 28 Nov 2019 08:23:01 +0000 (16:23 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Thu, 28 Nov 2019 08:23:01 +0000 (16:23 +0800)
commit755c7c2c26af54524a0f186784cd0eaaf0bc7420
tree7f7beddfa03a815779d9e4887716f4953a36eeb2
parent22a9a28e2859718c4168f5b3cf6e20a9186e18bc
os/bluestore: don't round_up_to in apply_for_bitset_range.

I met the following error messages:
>sceph7: /home/Jianpeng/ceph/src/os/bluestore/bluestore_common.h: In function 'void apply_for_bitset_range(uint64_t, uint64_t, uint64_t, Bitset&, Func) [with Bitset = boost::dynamic_bitset<long unsigned int>; Func = BlueFS::_replay(bool, bool)::<lambda(uint64_t, boost::dynamic_bitset<long unsigned int>&)>; uint64_t = long unsigned int]' thread 7f7d55a3dd40 time 2019-11-27T23:26:05.949827+0800
>sceph7: /home/Jianpeng/ceph/src/os/bluestore/bluestore_common.h: 28: FAILED ceph_assert(end <= bitset.size())
>sceph7:  ceph version 15.0.0-7747-g22a9a28e28 (22a9a28e2859718c4168f5b3cf6e20a9186e18bc) octopus (dev)
>sceph7:  1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x14f) [0x56322c4440ef]
>sceph7:  2: (()+0x50d2d9) [0x56322c4442d9]
>sceph7:  3: (BlueFS::_replay(bool, bool)+0x5639) [0x56322cb51e49]
>sceph7:  4: (BlueFS::mount()+0x269) [0x56322cb53289]
>sceph7:  5: (BlueStore::_open_bluefs(bool)+0x29e) [0x56322ca6e38e]
>sceph7:  6: (BlueStore::_open_db(bool, bool, bool)+0x59b) [0x56322ca6e9cb]
>sceph7:  7: (BlueStore::mkfs()+0x749) [0x56322caaa259]
>sceph7:  8: (OSD::mkfs(CephContext*, ObjectStore*, uuid_d, int)+0x1c8) [0x56322c5099e8]
>sceph7:  9: (main()+0x1787) [0x56322c4ab117]
>sceph7:  10: (__libc_start_main()+0xeb) [0x7f7d55b5fb6b]
>sceph7:  11: (_start()+0x2a) [0x56322c4de71a]
>sceph7: *** Caught signal (Aborted) **
>sceph7:  in thread 7f7d55a3dd40 thread_name:ceph-osd

If bdev[i]->get_size() / alloc_size[i] != 0,  round_up_to(off+lengh,alloc_size[i])/alloc_size is larger than(one)
ownend_blocks[i].size().

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/os/bluestore/BlueFS.cc