From 8fa6ac12ffb92637874a7a9bfbe15212e56c8fe8 Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Fri, 19 Aug 2022 21:10:04 +0530 Subject: [PATCH] orchestra: add a method to check if given path is mounted Add a method mount() that checks if the given path is mounted or unmounted without using "mount" of "findmnt" commands. Signed-off-by: Rishabh Dave --- teuthology/orchestra/remote.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/teuthology/orchestra/remote.py b/teuthology/orchestra/remote.py index df269c74..963f82da 100644 --- a/teuthology/orchestra/remote.py +++ b/teuthology/orchestra/remote.py @@ -300,6 +300,21 @@ class RemoteShell(object): """ self.write_file(path, data, sudo=True, **kwargs) + def is_mounted(self, path): + """ + Check if the given path is mounted on the remote machine. + + This method checks the contents of "/proc/self/mounts" instead of + using "mount" or "findmnt" command since these commands hang when a + CephFS client is blocked and its mount point on the remote machine + is left unhandled/unmounted. + + :param path: path on remote host + """ + # XXX: matching newline too is crucial so that "/mnt" does not match + # "/mnt/cephfs" if it's present in the output. + return f'{path}\n' in self.sh("cat /proc/self/mounts | awk '{print $2}'") + @property def os(self): if not hasattr(self, '_os'): -- 2.47.3