Merge pull request #19731 from wanyaoqi/automated-cherry-pick-of-#19730-upstream-master

Automated cherry pick of #19730: fix(region,host): lvm storage misc fix
This commit is contained in:
Zexi Li
2024-03-21 19:53:30 +08:00
committed by GitHub
4 changed files with 36 additions and 4 deletions
+14
View File
@@ -48,6 +48,20 @@ func (s *SCLVMStorageDriver) ValidateCreateData(ctx context.Context, userCred mc
if len(input.CLVMVgName) == 0 {
return httperrors.NewMissingParameterError("clvm_vg_name")
}
storages := []models.SStorage{}
q := models.StorageManager.Query().Equals("storage_type", api.STORAGE_CLVM)
err := db.FetchModelObjects(models.StorageManager, q, &storages)
if err != nil {
return httperrors.NewGeneralError(err)
}
for i := 0; i < len(storages); i++ {
vgName, _ := storages[i].StorageConf.GetString("clvm_vg_name")
if input.CLVMVgName == vgName {
return httperrors.NewDuplicateResourceError("This CLVM Storage[%s/%s] has already exist", storages[i].Name, input.CLVMVgName)
}
}
input.StorageConf = jsonutils.NewDict()
input.StorageConf.Set("clvm_vg_name", jsonutils.NewString(input.CLVMVgName))
return nil
+14
View File
@@ -62,6 +62,20 @@ func (s *SSLVMStorageDriver) ValidateCreateData(ctx context.Context, userCred mc
input.MasterHost = host.GetId()
}
storages := []models.SStorage{}
q := models.StorageManager.Query().Equals("storage_type", api.STORAGE_SLVM)
err := db.FetchModelObjects(models.StorageManager, q, &storages)
if err != nil {
return httperrors.NewGeneralError(err)
}
for i := 0; i < len(storages); i++ {
vgName, _ := storages[i].StorageConf.GetString("slvm_vg_name")
if input.SLVMVgName == vgName {
return httperrors.NewDuplicateResourceError("This SLVM Storage[%s/%s] has already exist", storages[i].Name, input.SLVMVgName)
}
}
input.StorageConf = jsonutils.NewDict()
input.StorageConf.Set("slvm_vg_name", jsonutils.NewString(input.SLVMVgName))
if input.Lvmlockd {
+7
View File
@@ -73,6 +73,13 @@ func (c *SLVMImageCache) GetDesc() *remotefile.SImageDesc {
func (c *SLVMImageCache) Load() error {
log.Debugf("loading lvm imagecache %s", c.GetPath())
if c.Manager.Lvmlockd() {
err := lvmutils.LVActive(c.GetPath(), true, false)
if err != nil {
return errors.Wrap(err, "lvmlockd set lv shared")
}
}
origin, err := qemuimg.NewQemuImage(c.GetPath())
if err != nil {
return errors.Wrap(err, "NewQemuImage")
@@ -81,11 +81,8 @@ func (c *SLVMImageCacheManager) loadCache(ctx context.Context) {
}
func (c *SLVMImageCacheManager) LoadImageCache(imageId string) {
imageCache := NewLocalImageCache(imageId, c)
imageCache := NewLVMImageCache(imageId, c)
if err := imageCache.Load(); err == nil {
if c.lvmlockd {
lvmutils.LVActive(imageCache.GetPath(), true, false)
}
c.cachedImages[imageId] = imageCache
} else {
log.Errorf("failed load cache %s %s", c.GetPath(), err)