Fix creating volume by snapshot for GPFS driver
For a operation of creating volume from volume snapshot, GPFS driver is currently doing a full copy instead of clone when it is creating a new volume. This happens when the source volume is not in any consistency group. With this patch, a GPFS file clone is created when both the volumes (snapshot parent volume and new volume being created) are not in any consistency group. Change-Id: I0aa550842fb16b7abb8765e4aa8dce61cd0994c3 Closes-bug: #1528305
This commit is contained in:
parent
a4e7656620
commit
73cd77712c
@ -855,6 +855,9 @@ class GPFSDriverTestCase(test.TestCase):
|
||||
mock_resize_volume_file.return_value = 5 * units.Gi
|
||||
volume = self._fake_volume()
|
||||
volume['consistencygroup_id'] = None
|
||||
self.driver.db = mock.Mock()
|
||||
self.driver.db.volume_get = mock.Mock()
|
||||
self.driver.db.volume_get.return_value = volume
|
||||
snapshot = self._fake_snapshot()
|
||||
mock_snapshot_path.return_value = "/tmp/fakepath"
|
||||
self.assertEqual({'size': 5.0},
|
||||
@ -885,6 +888,9 @@ class GPFSDriverTestCase(test.TestCase):
|
||||
mock_resize_volume_file.return_value = 5 * units.Gi
|
||||
volume = self._fake_volume()
|
||||
volume['consistencygroup_id'] = None
|
||||
self.driver.db = mock.Mock()
|
||||
self.driver.db.volume_get = mock.Mock()
|
||||
self.driver.db.volume_get.return_value = volume
|
||||
snapshot = self._fake_snapshot()
|
||||
mock_snapshot_path.return_value = "/tmp/fakepath"
|
||||
mock_set_volume_attributes.return_value = True
|
||||
|
@ -542,12 +542,11 @@ class GPFSDriver(driver.ConsistencyGroupVD, driver.ExtendVD,
|
||||
# check if the snapshot lies in the same CG as the volume to be created
|
||||
# if yes, clone the volume from the snapshot, else perform full copy
|
||||
clone = False
|
||||
if volume['consistencygroup_id'] is not None:
|
||||
ctxt = context.get_admin_context()
|
||||
snap_parent_vol = self.db.volume_get(ctxt, snapshot['volume_id'])
|
||||
if (volume['consistencygroup_id'] ==
|
||||
snap_parent_vol['consistencygroup_id']):
|
||||
clone = True
|
||||
ctxt = context.get_admin_context()
|
||||
snap_parent_vol = self.db.volume_get(ctxt, snapshot['volume_id'])
|
||||
if (volume['consistencygroup_id'] ==
|
||||
snap_parent_vol['consistencygroup_id']):
|
||||
clone = True
|
||||
volume_path = self._get_volume_path(volume)
|
||||
if clone:
|
||||
self._create_gpfs_copy(src=snapshot_path, dest=volume_path)
|
||||
|
Loading…
Reference in New Issue
Block a user