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