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

sub object held by master object will stop it to be released

Details

    • Bug
    • Resolution: Not a Bug
    • Minor
    • Lustre 2.8.0
    • Lustre 2.7.0
    • None
    • 3
    • 9223372036854775807

    Description

      Sub stripe object will be holded by master object until the master object is freed. (lod_object_free()->lod_object_free_striping()

      void lod_object_free_striping(const struct lu_env *env, struct lod_object *lo)
      {
              int i; 
               
              if (lo->ldo_dir_stripe != NULL) {
                      OBD_FREE_PTR(lo->ldo_dir_stripe);
                      lo->ldo_dir_stripe = NULL;
              }
              
              if (lo->ldo_stripe) {
                      LASSERT(lo->ldo_stripes_allocated > 0);
      
                      for (i = 0; i < lo->ldo_stripenr; i++) {
                              if (lo->ldo_stripe[i])
                                      lu_object_put(env, &lo->ldo_stripe[i]->do_lu);
                      }
      
                      i = sizeof(struct dt_object *) * lo->ldo_stripes_allocated;
                      OBD_FREE(lo->ldo_stripe, i);
                      lo->ldo_stripe = NULL;
                      lo->ldo_stripes_allocated = 0;
              }
              ............
      

      So the master object (of striped directory) should be freed immediately once the ref count reach to 0.

      Attachments

        Activity

          People

            di.wang Di Wang
            di.wang Di Wang
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: