mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user