Details
-
Bug
-
Resolution: Not a Bug
-
Minor
-
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.