From 5ec46e1810d1a0af03e5517a00090e9a30909cae Mon Sep 17 00:00:00 2001 From: zhaoqin Date: Sat, 9 Nov 2013 01:45:02 +0800 Subject: [PATCH] Report zero capacity if GPFS is unmounted _get_available_capacity() calls df command to gather the capacity of GPFS filesystem. If GPFS is unmounted, df command will return the capacity of root file system. This change will let get_volume_stats() to report zero capacity, so that Cinder can schedule the volume request to another volume service After GPFS is mounted again, the correct capacity will be reported. Change-Id: I4c229d78e7d659604a23a50e6ab46060642b4088 Closes-Bug: #1246779 --- cinder/volume/drivers/gpfs.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cinder/volume/drivers/gpfs.py b/cinder/volume/drivers/gpfs.py index 2e5b8119cbb..409a8c82cbf 100644 --- a/cinder/volume/drivers/gpfs.py +++ b/cinder/volume/drivers/gpfs.py @@ -589,6 +589,18 @@ def _mkfs(self, volume, fs, label=None): def _get_available_capacity(self, path): """Calculate available space on path.""" + # Check if GPFS is mounted + try: + self._verify_gpfs_path_state(path) + mounted = True + except exception.VolumeBackendAPIException: + mounted = False + + # If GPFS is not mounted, return zero capacity. So that the volume + # request can be scheduled to another volume service. + if not mounted: + return 0, 0 + out, _ = self._execute('df', '-P', '-B', '1', path, run_as_root=True) out = out.splitlines()[1]