Whamcloud - gitweb
LU-8471 obdclass: restore EXPORT_SYMBOL for lu_ref* functions
[fs/lustre-release.git] / lustre / target / tgt_main.c
index 6dfb7c4..3e45abf 100644 (file)
@@ -153,7 +153,7 @@ int tgt_init(const struct lu_env *env, struct lu_target *lut,
        struct lu_attr           attr;
        struct lu_fid            fid;
        struct dt_object        *o;
-       int                      rc = 0;
+       int i, rc = 0;
 
        ENTRY;
 
@@ -272,9 +272,17 @@ out_put:
        if (lut->lut_reply_data != NULL)
                lu_object_put(env, &lut->lut_reply_data->do_lu);
        lut->lut_reply_data = NULL;
-       if (lut->lut_reply_bitmap != NULL)
+       if (lut->lut_reply_bitmap != NULL) {
+               for (i = 0; i < LUT_REPLY_SLOTS_MAX_CHUNKS; i++) {
+                       if (lut->lut_reply_bitmap[i] != NULL)
+                               OBD_FREE_LARGE(lut->lut_reply_bitmap[i],
+                                   BITS_TO_LONGS(LUT_REPLY_SLOTS_PER_CHUNK) *
+                                   sizeof(long));
+                       lut->lut_reply_bitmap[i] = NULL;
+               }
                OBD_FREE(lut->lut_reply_bitmap,
                         LUT_REPLY_SLOTS_MAX_CHUNKS * sizeof(unsigned long *));
+       }
        lut->lut_reply_bitmap = NULL;
        return rc;
 }
@@ -306,7 +314,7 @@ void tgt_fini(const struct lu_env *env, struct lu_target *lut)
        if (lut->lut_reply_bitmap != NULL) {
                for (i = 0; i < LUT_REPLY_SLOTS_MAX_CHUNKS; i++) {
                        if (lut->lut_reply_bitmap[i] != NULL)
-                               OBD_FREE(lut->lut_reply_bitmap[i],
+                               OBD_FREE_LARGE(lut->lut_reply_bitmap[i],
                                    BITS_TO_LONGS(LUT_REPLY_SLOTS_PER_CHUNK) *
                                    sizeof(long));
                        lut->lut_reply_bitmap[i] = NULL;