Whamcloud - gitweb
LU-7659 mdc: expose changelog through char devices
[fs/lustre-release.git] / lustre / mgs / mgs_fs.c
index a3ce58f..217b41c 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -157,12 +153,13 @@ int mgs_fs_setup(const struct lu_env *env, struct mgs_device *mgs)
                GOTO(out_root, rc = PTR_ERR(o));
 
        if (!dt_try_as_dir(env, o)) {
-               lu_object_put(env, &o->do_lu);
+               dt_object_put(env, o);
                GOTO(out_root, rc = -ENOTDIR);
        }
 
        mgs->mgs_configs_dir = o;
 
+       /* colocated MDT will cache config in target root dir */
        nm_config_file_obj = local_index_find_or_create(env, mgs->mgs_los,
                                                        mgs->mgs_configs_dir,
                                                        LUSTRE_NODEMAP_NAME,
@@ -177,13 +174,14 @@ int mgs_fs_setup(const struct lu_env *env, struct mgs_device *mgs)
                                                        nm_config_file_obj,
                                                        &dt_nodemap_features);
                if (rc < 0) {
-                       lu_object_put(env, &nm_config_file_obj->do_lu);
+                       dt_object_put(env, nm_config_file_obj);
                        GOTO(out_configs, rc);
                }
        }
-       nm_config_file = nm_config_file_register(env, nm_config_file_obj);
+       nm_config_file = nm_config_file_register_mgs(env, nm_config_file_obj,
+                                                    mgs->mgs_los);
+       dt_object_put(env, nm_config_file_obj);
        if (IS_ERR(nm_config_file)) {
-               lu_object_put(env, &nm_config_file_obj->do_lu);
                CERROR("%s: error loading nodemap config file, file must be "
                       "removed via ldiskfs: rc = %ld\n",
                       mgs->mgs_obd->obd_name, PTR_ERR(nm_config_file));
@@ -201,16 +199,16 @@ int mgs_fs_setup(const struct lu_env *env, struct mgs_device *mgs)
 
 out_nm:
        if (rc < 0) {
-               nm_config_file_deregister(env, nm_config_file);
+               nm_config_file_deregister_mgs(env, nm_config_file);
                mgs->mgs_obd->u.obt.obt_nodemap_config_file = NULL;
        }
 out_configs:
        if (rc < 0) {
-               lu_object_put(env, &mgs->mgs_configs_dir->do_lu);
+               dt_object_put(env, mgs->mgs_configs_dir);
                mgs->mgs_configs_dir = NULL;
        }
 out_root:
-       lu_object_put(env, &root->do_lu);
+       dt_object_put(env, root);
 out_los:
        if (rc) {
                local_oid_storage_fini(env, mgs->mgs_los);
@@ -225,16 +223,17 @@ out:
 int mgs_fs_cleanup(const struct lu_env *env, struct mgs_device *mgs)
 {
        if (mgs->mgs_configs_dir) {
-               lu_object_put(env, &mgs->mgs_configs_dir->do_lu);
+               dt_object_put(env, mgs->mgs_configs_dir);
                mgs->mgs_configs_dir = NULL;
        }
        if (mgs->mgs_nidtbl_dir) {
-               lu_object_put(env, &mgs->mgs_nidtbl_dir->do_lu);
+               dt_object_put(env, mgs->mgs_nidtbl_dir);
                mgs->mgs_nidtbl_dir = NULL;
        }
        if (mgs->mgs_obd->u.obt.obt_nodemap_config_file != NULL) {
-               nm_config_file_deregister(env,
-                               mgs->mgs_obd->u.obt.obt_nodemap_config_file);
+               struct nm_config_file *ncf = mgs->mgs_obd->u.obt.obt_nodemap_config_file;
+
+               nm_config_file_deregister_mgs(env, ncf);
                mgs->mgs_obd->u.obt.obt_nodemap_config_file = NULL;
        }