From: zhaoqin Date: Fri, 8 Nov 2013 17:45:02 +0000 (+0800) Subject: Report zero capacity if GPFS is unmounted X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=5ec46e1810d1a0af03e5517a00090e9a30909cae;p=openstack-build%2Fcinder-build.git 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 --- diff --git a/cinder/volume/drivers/gpfs.py b/cinder/volume/drivers/gpfs.py index 2e5b8119c..409a8c82c 100644 --- a/cinder/volume/drivers/gpfs.py +++ b/cinder/volume/drivers/gpfs.py @@ -589,6 +589,18 @@ class GPFSDriver(driver.VolumeDriver): 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]