In python 3, dev is a string, but mounts_dev is bytes (because
/proc/mounts was opened with mode 'rb') so they can't compare
equal, resulting in is_mounted() returning None for mounted OSDs.
The safest fix for this we could come up with was to normalize
dev to a str using _bytes2str() (just in case), and open
/proc/mounts in mode 'r', so its lines are interpreted as strs.
Fixes: https://tracker.ceph.com/issues/35906
Signed-off-by: Tim Serong <tserong@suse.com>
(cherry picked from commit
8e3d948ff4c3b19dc55b9a5ae63f5b63f0c476a3)
"""
Check if the given device is mounted.
"""
- dev = os.path.realpath(dev)
- with open(PROCDIR + '/mounts', 'rb') as proc_mounts:
+ dev = os.path.realpath(_bytes2str(dev))
+ with open(PROCDIR + '/mounts', 'r') as proc_mounts:
for line in proc_mounts:
fields = line.split()
if len(fields) < 3: