]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-disk: compatibility fix for python 3 24347/head
authorTim Serong <tserong@suse.com>
Mon, 10 Sep 2018 10:27:11 +0000 (20:27 +1000)
committerPrashant D <pdhange@redhat.com>
Mon, 1 Oct 2018 02:38:29 +0000 (22:38 -0400)
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)

src/ceph-disk/ceph_disk/main.py

index 0058f1ac2d977514d446ad92d2f12ae2becb3421..73f26ce17d7ab19e61870e5ba8fdd0e76ef09c8b 100644 (file)
@@ -898,8 +898,8 @@ def is_mounted(dev):
     """
     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: