From e5b2e6840d5b55891c0f0cd5d0182b4e02834733 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Wed, 10 Apr 2019 11:17:03 +0800 Subject: [PATCH] os/bluestore: check return value of func _open_db_and_around. In develop, met the following error messages: 2019-04-08 10:24:54.259 7faa25114d80 1 bdev create path /var/lib/ceph/mnt/osd-device-6-data/block.db type kernel 2019-04-08 10:24:54.259 7faa25114d80 1 bdev(0x55ef0840ce00 /var/lib/ceph/mnt/osd-device-6-data/block.db) open path /var/lib/ceph/mnt/osd-device-6-data/block.db 2019-04-08 10:24:54.259 7faa25114d80 -1 bdev(0x55ef0840ce00 /var/lib/ceph/mnt/osd-device-6-data/block.db) _lock flock failed on /var/lib/ceph/mnt/osd-device-6-data/block.db 2019-04-08 10:24:54.259 7faa25114d80 -1 bdev(0x55ef0840ce00 /var/lib/ceph/mnt/osd-device-6-data/block.db) open failed to lock /var/lib/ceph/mnt/osd-device-6-data/block.db: (11) Resource temporarily unavailable 2019-04-08 10:24:54.259 7faa25114d80 -1 bluestore(/var/lib/ceph/mnt/osd-device-6-data) _minimal_open_bluefs add block device(/var/lib/ceph/mnt/osd-device-6-data/block.db) returned: (11) Resource temporarily unavailable 2019-04-08 10:24:54.259 7faa25114d80 1 fbmap_alloc 0x55ef0754ef00 shutdown 2019-04-08 10:24:54.259 7faa25114d80 1 freelist shutdown 2019-04-08 10:24:54.259 7faa25114d80 1 bluestore(/var/lib/ceph/mnt/osd-device-6-data) _upgrade_super from 2, latest 2 2019-04-08 10:24:54.259 7faa25114d80 1 bluestore(/var/lib/ceph/mnt/osd-device-6-data) _upgrade_super done 2019-04-08 10:24:54.264 7faa25114d80 -1 *** Caught signal (Segmentation fault) ** in thread 7faa25114d80 thread_name:ceph-osd ceph version 14.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) nautilus (stable) 1: (()+0xf5d0) [0x7faa21d655d0] 2: (BlueStore::_open_collections(int*)+0x5b) [0x55eefd1f511b] 3: (BlueStore::_mount(bool, bool)+0x6c6) [0x55eefd22d1c6] 4: (OSD::init()+0x3aa) [0x55eefcda4e4a] 5: (main()+0x14fa) [0x55eefcc4137a] 6: (__libc_start_main()+0xf5) [0x7faa20b483d5] 7: (()+0x5646c5) [0x55eefcd356c5] NOTE: a copy of the executable, or `objdump -rdS ` is needed to interpret this. Signed-off-by: Jianpeng Ma --- src/os/bluestore/BlueStore.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index e94d9381346..0457effeecb 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -6581,8 +6581,9 @@ int BlueStore::_mount(bool kv_only, bool open_db) // we can bypass db open exclusively in case of kv_only mode ceph_assert(kv_only); r = _open_db(false, true); - if (r < 0) - goto out_bdev; + } + if (r < 0) { + goto out_bdev; } if (kv_only) -- 2.39.5