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:glus...
(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;
}