Whamcloud - gitweb
- merging issues fixed
authoralex <alex>
Thu, 9 Jul 2009 17:50:12 +0000 (17:50 +0000)
committeralex <alex>
Thu, 9 Jul 2009 17:50:12 +0000 (17:50 +0000)
lustre/mdd/mdd_device.c
lustre/ofd/ofd_recovery.c

index 899c8cd..bca5064 100644 (file)
@@ -116,6 +116,7 @@ static void mdd_device_shutdown(const struct lu_env *env,
         ENTRY;
         mdd_changelog_fini(env, m);
         dt_txn_callback_del(m->mdd_child, &m->mdd_txn_cb);
+        orph_index_fini(env, m);
         if (m->mdd_dot_lustre_objs.mdd_obf)
                 mdd_object_put(env, m->mdd_dot_lustre_objs.mdd_obf);
         if (m->mdd_dot_lustre)
index 5aacfe1..6f61a0d 100644 (file)
@@ -278,14 +278,17 @@ int filter_fs_setup(const struct lu_env *env, struct filter_device *ofd,
         attr.la_valid = LA_MODE;
         attr.la_mode = S_IFREG | 0666;
 
-        rc = lut_init2(env, &ofd->ofd_lut, obd, ofd->ofd_osd, &fid);
-        LASSERT(rc == 0);
-
         fo = filter_object_find_or_create(env, ofd, &fid, &attr);
         LASSERT(!IS_ERR(fo));
         ofd->ofd_last_rcvd = filter_object_child(fo);
         rc = filter_server_data_init(env, ofd);
         LASSERT(rc == 0);
+        lu_object_put(env, &ofd->ofd_last_rcvd->do_lu);
+        ofd->ofd_last_rcvd = NULL;
+
+        LASSERT(ofd->ofd_osd);
+        rc = lut_init2(env, &ofd->ofd_lut, obd, ofd->ofd_osd, &fid);
+        LASSERT(rc == 0);
 
         lu_local_obj_fid(&fid, OFD_LAST_GROUP);
         memset(&attr, 0, sizeof(attr));
@@ -330,6 +333,7 @@ void filter_fs_cleanup(const struct lu_env *env, struct filter_device *ofd)
 
         if (ofd->ofd_last_group_file)
                 lu_object_put(env, &ofd->ofd_last_group_file->do_lu);
+
         ofd->ofd_last_group_file = NULL;
 
         OBD_FREE(ofd->ofd_last_rcvd_slots, LR_MAX_CLIENTS / 8);