From: Patrick Donnelly Date: Mon, 15 Jul 2019 23:56:32 +0000 (-0700) Subject: pybind/mgr/volumes: refactor trash readdir X-Git-Tag: v15.1.0~2189^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e71e9187ec69ce80e9d7a2fc2c58946dd3db88e1;p=ceph-ci.git pybind/mgr/volumes: refactor trash readdir Signed-off-by: Patrick Donnelly --- diff --git a/src/pybind/mgr/volumes/fs/subvolume.py b/src/pybind/mgr/volumes/fs/subvolume.py index c11f26c7d40..6d0232c56e1 100644 --- a/src/pybind/mgr/volumes/fs/subvolume.py +++ b/src/pybind/mgr/volumes/fs/subvolume.py @@ -39,25 +39,21 @@ class SubVolume(object): def _get_single_dir_entry(self, dir_path, exclude=[]): """ - Return a directory entry in a given directory exclusing passed + Return a directory entry in a given directory excluding passed in entries. """ + exclude.extend((b".", b"..")) try: - dir_handle = self.fs.opendir(dir_path) + with self.fs.opendir(dir_path) as d: + entry = self.fs.readdir(d) + while entry: + if entry.d_name not in exclude and entry.is_dir(): + return entry.d_name + entry = self.fs.readdir(d) + return None except cephfs.Error as e: raise VolumeException(-e.args[0], e.args[1]) - exclude.extend((b".", b"..")) - - d = self.fs.readdir(dir_handle) - d_name = None - while d: - if not d.d_name in exclude and d.is_dir(): - d_name = d.d_name - break - d = self.fs.readdir(dir_handle) - self.fs.closedir(dir_handle) - return d_name ### basic subvolume operations