Whamcloud - gitweb
LU-1581 build: remove false ldiskfs dependencies
[fs/lustre-release.git] / lustre / mdd / mdd_device.c
index cc2324c..35f80f4 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_MDS
 
-#include <linux/module.h>
-#include <ldiskfs/ldiskfs_jbd2.h>
-#include <obd.h>
 #include <obd_class.h>
-#include <lustre_ver.h>
-#include <obd_support.h>
 #include <lprocfs_status.h>
-
 #include <lustre_fid.h>
-#include <ldiskfs/ldiskfs.h>
 #include <lustre_mds.h>
-#include <lustre/lustre_idl.h>
 #include <lustre_disk.h>      /* for changelogs */
 #include <lustre_param.h>
 #include <lustre_fid.h>
@@ -66,6 +58,20 @@ static struct lu_device_type mdd_device_type;
 static const char mdd_root_dir_name[] = "ROOT";
 static const char mdd_obf_dir_name[] = "fid";
 
+/* Slab for MDD object allocation */
+cfs_mem_cache_t *mdd_object_kmem;
+
+static struct lu_kmem_descr mdd_caches[] = {
+       {
+               .ckd_cache = &mdd_object_kmem,
+               .ckd_name  = "mdd_obj",
+               .ckd_size  = sizeof(struct mdd_object)
+       },
+       {
+               .ckd_cache = NULL
+       }
+};
+
 static int mdd_device_init(const struct lu_env *env, struct lu_device *d,
                            const char *name, struct lu_device *next)
 {
@@ -94,7 +100,6 @@ static struct lu_device *mdd_device_fini(const struct lu_env *env,
                                          struct lu_device *d)
 {
         struct mdd_device *mdd = lu2mdd_dev(d);
-        struct lu_device *next = &mdd->mdd_child->dd_lu_dev;
         int rc;
 
         rc = mdd_procfs_fini(mdd);
@@ -102,7 +107,7 @@ static struct lu_device *mdd_device_fini(const struct lu_env *env,
                 CERROR("proc fini error %d \n", rc);
                 return ERR_PTR(rc);
         }
-        return next;
+       return NULL;
 }
 
 static void mdd_changelog_fini(const struct lu_env *env,
@@ -321,7 +326,7 @@ int mdd_changelog_llog_write(struct mdd_device         *mdd,
                 return -ENXIO;
 
         /* nested journal transaction */
-        rc = llog_add(ctxt, &rec->cr_hdr, NULL, NULL, 0);
+       rc = llog_add(NULL, ctxt, &rec->cr_hdr, NULL, NULL, 0);
         llog_ctxt_put(ctxt);
 
         return rc;
@@ -357,7 +362,7 @@ int mdd_changelog_ext_llog_write(struct mdd_device *mdd,
                return -ENXIO;
 
        /* nested journal transaction */
-       rc = llog_add(ctxt, &rec->cr_hdr, NULL, NULL, 0);
+       rc = llog_add(NULL, ctxt, &rec->cr_hdr, NULL, NULL, 0);
        llog_ctxt_put(ctxt);
 
        return rc;
@@ -369,7 +374,8 @@ int mdd_changelog_ext_llog_write(struct mdd_device *mdd,
  * \param endrec
  * \retval 0 ok
  */
-int mdd_changelog_llog_cancel(struct mdd_device *mdd, long long endrec)
+int mdd_changelog_llog_cancel(const struct lu_env *env,
+                             struct mdd_device *mdd, long long endrec)
 {
         struct obd_device *obd = mdd2obd_dev(mdd);
         struct llog_ctxt *ctxt;
@@ -407,7 +413,7 @@ int mdd_changelog_llog_cancel(struct mdd_device *mdd, long long endrec)
         mdd->mdd_cl.mc_starttime = cfs_time_current_64();
 
         /* XXX: transaction is started by llog itself */
-        rc = llog_cancel(ctxt, NULL, 1, (struct llog_cookie *)&endrec, 0);
+       rc = llog_cancel(env, ctxt, NULL, 1, (struct llog_cookie *)&endrec, 0);
 out:
         llog_ctxt_put(ctxt);
         return rc;
@@ -1280,13 +1286,12 @@ static struct lu_device *mdd_device_free(const struct lu_env *env,
                                          struct lu_device *lu)
 {
         struct mdd_device *m = lu2mdd_dev(lu);
-        struct lu_device  *next = &m->mdd_child->dd_lu_dev;
         ENTRY;
 
         LASSERT(cfs_atomic_read(&lu->ld_ref) == 0);
         md_device_fini(&m->mdd_md_dev);
         OBD_FREE_PTR(m);
-        RETURN(next);
+       RETURN(NULL);
 }
 
 static struct obd_ops mdd_obd_device_ops = {
@@ -1383,7 +1388,7 @@ static int mdd_changelog_user_register(struct mdd_device *mdd, int *id)
         rec->cur_endrec = mdd->mdd_cl.mc_index;
         cfs_spin_unlock(&mdd->mdd_cl.mc_user_lock);
 
-        rc = llog_add(ctxt, &rec->cur_hdr, NULL, NULL, 0);
+       rc = llog_add(NULL, ctxt, &rec->cur_hdr, NULL, NULL, 0);
 
         CDEBUG(D_IOCTL, "Registered changelog user %d\n", *id);
 out:
@@ -1494,8 +1499,8 @@ static int mdd_changelog_user_purge_cb(const struct lu_env *env,
                 if (rc)
                         GOTO(stop, rc);
 
-                rc = llog_cat_cancel_records(llh->u.phd.phd_cat_handle,
-                                             1, &cookie);
+               rc = llog_cat_cancel_records(env, llh->u.phd.phd_cat_handle,
+                                            1, &cookie);
                 if (rc == 0)
                         mcud->mcud_usercount--;
 
@@ -1510,8 +1515,8 @@ stop:
 
         /* hdr+1 is loc of data */
         hdr->lrh_len -= sizeof(*hdr) + sizeof(struct llog_rec_tail);
-        rc = llog_write_rec(llh, hdr, NULL, 0, (void *)(hdr + 1),
-                            hdr->lrh_index);
+       rc = llog_write_rec(env, llh, hdr, NULL, 0, (void *)(hdr + 1),
+                           hdr->lrh_index);
 
         RETURN(rc);
 }
@@ -1553,7 +1558,7 @@ static int mdd_changelog_user_purge(const struct lu_env *env,
                 CDEBUG(D_IOCTL, "Purging changelog entries up to "LPD64
                        ", referenced by "CHANGELOG_USER_PREFIX"%d\n",
                        data.mcud_minrec, data.mcud_minid);
-                rc = mdd_changelog_llog_cancel(mdd, data.mcud_minrec);
+               rc = mdd_changelog_llog_cancel(env, mdd, data.mcud_minrec);
         } else {
                 CWARN("Could not determine changelog records to purge; rc=%d\n",
                       rc);
@@ -1750,15 +1755,24 @@ static struct lu_local_obj_desc llod_lfsck_bookmark = {
 static int __init mdd_mod_init(void)
 {
        struct lprocfs_static_vars lvars;
+       int rc;
+
        lprocfs_mdd_init_vars(&lvars);
 
+       rc = lu_kmem_init(mdd_caches);
+       if (rc)
+               return rc;
+
        llo_local_obj_register(&llod_capa_key);
        llo_local_obj_register(&llod_mdd_orphan);
        llo_local_obj_register(&llod_mdd_root);
        llo_local_obj_register(&llod_lfsck_bookmark);
 
-       return class_register_type(&mdd_obd_device_ops, NULL, lvars.module_vars,
-                                  LUSTRE_MDD_NAME, &mdd_device_type);
+       rc = class_register_type(&mdd_obd_device_ops, NULL, lvars.module_vars,
+                                LUSTRE_MDD_NAME, &mdd_device_type);
+       if (rc)
+               lu_kmem_fini(mdd_caches);
+       return rc;
 }
 
 static void __exit mdd_mod_exit(void)
@@ -1769,6 +1783,7 @@ static void __exit mdd_mod_exit(void)
        llo_local_obj_unregister(&llod_lfsck_bookmark);
 
        class_unregister_type(LUSTRE_MDD_NAME);
+       lu_kmem_fini(mdd_caches);
 }
 
 MODULE_AUTHOR("Sun Microsystems, Inc. <http://www.lustre.org/>");