Details
-
Bug
-
Resolution: Duplicate
-
Minor
-
Lustre 2.8.0
-
3
-
16693
Description
From comment in Lustre code,
we use different index feature for each quota type and target type for the time being. This is done for on-disk conversion from the old quota format. Once this is no longer required, we should just be using dt_quota_glb_features for all global index file
In Lustre 2.8, tag 2.7.53 and above, the code for the on-disk conversion of the old quota format is no longer used, due to LUSTRE_VERSION_CODE, and the conversion is no longer supported. If we want to continue to support the old format, the following code should be modified else it should be removed.
In lustre/quota/lquota_disk.c, routine lquota_disk_glb_find_create(),
#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 7, 53, 0) /* we use different index feature for each quota type and target type * for the time being. This is done for on-disk conversion from the old * quota format. Once this is no longer required, we should just be * using dt_quota_glb_features for all global index file */ idx_feat = glb_idx_feature(fid); #else idx_feat = &dt_quota_glb_features; #endif
In lustre/quota/lquota_lib.c, glb_idx_features() and associated structs are no longer defined/supported.
#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 7, 53, 0)
/* Index features supported by the global index objects.
* We actually use one dt_index_features structure for each quota combination
* of quota type x [inode, block] to allow the ldiskfs OSD to recognize those
* objects and to handle the conversion from the old administrative quota file
* format */
struct dt_index_features dt_quota_iusr_features;
EXPORT_SYMBOL(dt_quota_iusr_features);
struct dt_index_features dt_quota_busr_features;
EXPORT_SYMBOL(dt_quota_busr_features);
struct dt_index_features dt_quota_igrp_features;
EXPORT_SYMBOL(dt_quota_igrp_features);
struct dt_index_features dt_quota_bgrp_features;
EXPORT_SYMBOL(dt_quota_bgrp_features);
/**
* Helper routine returning the right index feature structure to be used
* depending on the FID of the global index.
*/
const struct dt_index_features *glb_idx_feature(struct lu_fid *fid)
{
int res_type, quota_type, rc;
rc = lquota_extract_fid(fid, NULL, &res_type, "a_type);
if (rc)
return ERR_PTR(rc);
if (quota_type == USRQUOTA) {
if (res_type == LQUOTA_RES_MD)
return &dt_quota_iusr_features;
else
return &dt_quota_busr_features;
} else {
if (res_type == LQUOTA_RES_MD)
return &dt_quota_igrp_features;
else
return &dt_quota_bgrp_features;
}
}
#endif /* LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 7, 53, 0) */
and in init_lquota():
#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 7, 53, 0) dt_quota_iusr_features = dt_quota_busr_features = dt_quota_glb_features; dt_quota_igrp_features = dt_quota_bgrp_features = dt_quota_glb_features; #endif