From 9cc9cf111ef8a0265df5323fecaed12b0dabe312 Mon Sep 17 00:00:00 2001 From: Andrew Kerr Date: Fri, 5 Sep 2014 10:28:06 -0500 Subject: [PATCH] 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 --- cinder/volume/drivers/remotefs.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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): -- 2.45.2