mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-18 02:50:30 +00:00
rbd: resize the volume created from volume
If the requested volume size is greater than the parent volume size, resize the cloned volume after creating a final clone from a parent volume. Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
This commit is contained in:
parent
f7f662678a
commit
a28a4a4285
@ -181,6 +181,14 @@ func (rv *rbdVolume) createCloneFromImage(ctx context.Context, parentVol *rbdVol
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// expand the image if the requested size is greater than the current size
|
||||||
|
err = rv.expand()
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorLog(ctx, "failed to resize volume %s: %v", rv, err)
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,6 +408,13 @@ func (cs *ControllerServer) repairExistingVolume(ctx context.Context, req *csi.C
|
|||||||
return nil, cleanupThickClone(ctx, parentVol, rbdVol, rbdSnap, cr)
|
return nil, cleanupThickClone(ctx, parentVol, rbdVol, rbdSnap, cr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// expand the image if the requested size is greater than the current size
|
||||||
|
err := rbdVol.expand()
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorLog(ctx, "failed to resize volume %s: %v", rbdVol, err)
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return buildCreateVolumeResponse(req, rbdVol), nil
|
return buildCreateVolumeResponse(req, rbdVol), nil
|
||||||
|
@ -1703,6 +1703,16 @@ func cleanupRBDImageMetadataStash(metaDataPath string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// expand checks if the requestedVolume size and the existing image size both
|
||||||
|
// are same. If they are same, it returns nil else it resizes the image.
|
||||||
|
func (rv *rbdVolume) expand() error {
|
||||||
|
if rv.RequestedVolSize == rv.VolSize {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv.resize(rv.RequestedVolSize)
|
||||||
|
}
|
||||||
|
|
||||||
// resize the given volume to new size.
|
// resize the given volume to new size.
|
||||||
// updates Volsize of rbdVolume object to newSize in case of success.
|
// updates Volsize of rbdVolume object to newSize in case of success.
|
||||||
func (rv *rbdVolume) resize(newSize int64) error {
|
func (rv *rbdVolume) resize(newSize int64) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user