In some container scenarios, the file '/sys/block/nbd0/pid'
in the container records the host pid of the process
which opened the device, therefore the file '/proc/pid/cmdline'
corresponding to the pid in the container does not exist,
in that case, 'rbd-nbd list-mapped' will cause the
following assertion failure, this patch fixes it.
src/tools/rbd_nbd/rbd-nbd.cc: In function 'int get_mapped_info(int, Config*)'
/src/tools/rbd_nbd/rbd-nbd.cc: 834: FAILED assert(ifs.is_open())
ceph version
13.0.0-1632-gf9cfe84 (
f9cfe843a1c749d145b6c3b81a0519cc6536eb28) mimic (dev)
1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x102) [0x7fc6b1054ba2]
2: (()+0x15c58) [0x560cd4697c58]
3: (main()+0x9) [0x560cd46937f9]
4: (__libc_start_main()+0xf0) [0x7fc6b003f830]
5: (_start()+0x29) [0x560cd46938f9]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
Aborted (core dumped)
Fixes: http://tracker.ceph.com/issues/22011
Signed-off-by: Li Wang <laurence.liwang@gmail.com>
(cherry picked from commit
07d5b81b57f17696f4f693225fcb5a1f7060e9d9)