[Engine-devel] DC Compat Version Vs Storage Format Version

Itamar Heim iheim at redhat.com
Fri Mar 1 08:28:51 UTC 2013


On 01/03/2013 09:04, Deepak C Shetty wrote:
> Hi All,
>     I am seeing an error while testing the WIP engine patches  for
> supporting GLUSTERFS_DOMAIN @
>
> http://gerrit.ovirt.org/#/q/project:ovirt-engine+branch:master+topic:glusterfs,n,z
>
> (Copyign Sharad, who is the author for the patch series)
> Note my VDSM host has VDSM running which  has support for
> GLUSTERFS_DOMAIN (its already upstream in VDSM)
>
> I get the below error in GUI while trying to create a new Storage Domain
> of type Data/GlusterFS
> *Error: Cannot add Storage. Storage format V3 is not supported on the
> selected host version." *
>
> I cannot change storgae format in the GUI, its fixed at V3
> DC is of type GlusterFS and so is cluster, compat version is 3.3
>
> I have few questions ...
>
> 1) How are compat version and storage format related ?

storage formats are supported for specific compat version.

>
> 2) What does 'host version' in the above error msg mean. It doesn't tell
> clearly why/what the incompatibility is about

host version is probably the supported cluster levels it has.

>
> 3) What needs to be done in the engine to make this work ?

it seems while 3.3 cluster version was added, not all config keys are 
available for it yet (yair/eli?)
for example:
backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql:select 
fn_db_add_config_value('SupportedStorageFormats','0,2,3','3.2');

is missing for 3.3 cluster level.

Also, specifcially, need to review the logic of this method when adding 
a new type of storage domain. NFS is V0/V1 for backward compatibility 
and V3. but GlusterFS should probably only be V3:


in AddStorageDomainCommand:

      private boolean isStorageFormatCompatibleWithDomain() {
          StorageFormatType storageFormat = 
getStorageDomain().getStorageFormat();
          StorageType storageType = getStorageDomain().getStorageType();
          StorageDomainType storageDomainFunction = 
getStorageDomain().getStorageDomainType();

          boolean isBlockStorage = storageType == StorageType.ISCSI || 
storageType == StorageType.FCP;
          boolean isDataStorageDomain = storageDomainFunction == 
StorageDomainType.Data;

          // V2 is applicable only for block data storage domains
          if (storageFormat == StorageFormatType.V2 && (!isBlockStorage 
|| !isDataStorageDomain)) {
              return false;
          }

          // V3 is applicable only for data storage domains
          if (storageFormat == StorageFormatType.V3 && 
!isDataStorageDomain) {
              return false;
          }

          return true;
      }



More information about the Engine-devel mailing list