Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-5980

Eliminate old quota formats

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Minor
    • Lustre 2.8.0
    • 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, &quota_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
      

      Attachments

        Issue Links

          Activity

            People

              niu Niu Yawei (Inactive)
              jamesanunez James Nunez (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: