From: Andrew Kerr Date: Fri, 5 Sep 2014 15:28:06 +0000 (-0500) Subject: Don't clear _mounted_shares list in remoteFS while updating X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=9cc9cf111ef8a0265df5323fecaed12b0dabe312;p=openstack-build%2Fcinder-build.git Don't clear _mounted_shares list in remoteFS while updating This fix makes the updating of the _mounted_shares list in remoteFS more of an atomic operation. Previously this list would be cleared, then rebuilt. That allowed a race condition where operations that took place during this update would have a list of 0 shares to work with. Change-Id: I740d8f1b87db911242326a38ff398b81c5974cea Closes-Bug: #1366083 --- diff --git a/cinder/volume/drivers/remotefs.py b/cinder/volume/drivers/remotefs.py index 85e625fb5..d62f14e80 100644 --- a/cinder/volume/drivers/remotefs.py +++ b/cinder/volume/drivers/remotefs.py @@ -138,7 +138,7 @@ class RemoteFSDriver(driver.VolumeDriver): """Look for remote shares in the flags and tries to mount them locally. """ - self._mounted_shares = [] + mounted_shares = [] self._load_shares_config(getattr(self.configuration, self.driver_prefix + @@ -147,10 +147,12 @@ class RemoteFSDriver(driver.VolumeDriver): for share in self.shares.keys(): try: self._ensure_share_mounted(share) - self._mounted_shares.append(share) + mounted_shares.append(share) except Exception as exc: LOG.warning(_('Exception during mounting %s') % (exc,)) + self._mounted_shares = mounted_shares + LOG.debug('Available shares %s' % self._mounted_shares) def create_cloned_volume(self, volume, src_vref):