diff --git a/lustre/fid/fid_handler.c b/lustre/fid/fid_handler.c
index b831b3a..4ecd224 100644
--- a/lustre/fid/fid_handler.c
+++ b/lustre/fid/fid_handler.c
@@ -558,15 +558,13 @@ EXPORT_SYMBOL(seq_server_fini);
 cfs_proc_dir_entry_t *seq_type_proc_dir = NULL;
 
 static struct lu_local_obj_desc llod_seq_srv = {
-        .llod_name      = LUSTRE_SEQ_SRV_NAME,
-        .llod_oid       = FID_SEQ_SRV_OID,
-        .llod_is_index  = 0,
+	.llod_name = LUSTRE_SEQ_SRV_NAME,
+	.llod_fid  = LU_LOCAL_OBJ_FID(FID_SEQ_SRV_OID),
 };
 
 static struct lu_local_obj_desc llod_seq_ctl = {
-        .llod_name      = LUSTRE_SEQ_CTL_NAME,
-        .llod_oid       = FID_SEQ_CTL_OID,
-        .llod_is_index  = 0,
+	.llod_name = LUSTRE_SEQ_CTL_NAME,
+	.llod_fid  = LU_LOCAL_OBJ_FID(FID_SEQ_CTL_OID),
 };
 
 static int __init fid_mod_init(void)
diff --git a/lustre/fld/fld_handler.c b/lustre/fld/fld_handler.c
index fd83f96..8039ed9 100644
--- a/lustre/fld/fld_handler.c
+++ b/lustre/fld/fld_handler.c
@@ -77,10 +77,9 @@ LU_CONTEXT_KEY_DEFINE(fld, LCT_MD_THREAD|LCT_DT_THREAD);
 cfs_proc_dir_entry_t *fld_type_proc_dir = NULL;
 
 static struct lu_local_obj_desc llod_fld_index = {
-        .llod_name      = fld_index_name,
-        .llod_oid       = FLD_INDEX_OID,
-        .llod_is_index  = 1,
-        .llod_feat      = &fld_index_features,
+	.llod_name = fld_index_name,
+	.llod_fid  = LU_LOCAL_OBJ_FID(FLD_INDEX_OID),
+	.llod_feat = &fld_index_features,
 };
 
 static int __init fld_mod_init(void)
diff --git a/lustre/include/md_object.h b/lustre/include/md_object.h
index 42bf7b7..b0f9f94 100644
--- a/lustre/include/md_object.h
+++ b/lustre/include/md_object.h
@@ -914,12 +914,17 @@ struct dt_device;
 struct lu_local_obj_desc {
         const char                      *llod_dir;
         const char                      *llod_name;
-        __u32                            llod_oid;
-        int                              llod_is_index;
+	struct lu_fid                    llod_fid;
         const struct dt_index_features  *llod_feat;
         cfs_list_t                       llod_linkage;
 };
 
+#define LU_LOCAL_OBJ_FID(oid) ((struct lu_fid) { \
+		.f_seq = FID_SEQ_LOCAL_FILE,     \
+		.f_oid = (oid),                  \
+		.f_ver = 0,                      \
+	})
+
 struct md_object *llo_store_resolve(const struct lu_env *env,
                                     struct md_device *md,
                                     struct dt_device *dt,
@@ -941,13 +946,6 @@ struct md_object *llo_store_create_index(const struct lu_env *env,
                                          const struct lu_fid *fid,
                                          const struct dt_index_features *feat);
 
-struct md_object *llo_store_create(const struct lu_env *env,
-                                   struct md_device *md,
-                                   struct dt_device *dt,
-                                   const char *dirname,
-                                   const char *objname,
-                                   const struct lu_fid *fid);
-
 void llo_local_obj_register(struct lu_local_obj_desc *);
 void llo_local_obj_unregister(struct lu_local_obj_desc *);
 
diff --git a/lustre/mdd/mdd_device.c b/lustre/mdd/mdd_device.c
index 725677b..e3224a0 100644
--- a/lustre/mdd/mdd_device.c
+++ b/lustre/mdd/mdd_device.c
@@ -413,400 +413,6 @@ int mdd_changelog_write_header(struct mdd_device *mdd, int markerflags)
 }
 
 /**
- * Create ".lustre" directory.
- */
-static int create_dot_lustre_dir(const struct lu_env *env, struct mdd_device *m)
-{
-        struct lu_fid *fid = &mdd_env_info(env)->mti_fid;
-        struct md_object *mdo;
-        int rc;
-
-        memcpy(fid, &LU_DOT_LUSTRE_FID, sizeof(struct lu_fid));
-        mdo = llo_store_create_index(env, &m->mdd_md_dev, m->mdd_child,
-                                     mdd_root_dir_name, dot_lustre_name,
-                                     fid, &dt_directory_features);
-        /* .lustre dir may be already present */
-        if (IS_ERR(mdo) && PTR_ERR(mdo) != -EEXIST) {
-                rc = PTR_ERR(mdo);
-                CERROR("creating obj [%s] fid = "DFID" rc = %d\n",
-                        dot_lustre_name, PFID(fid), rc);
-                RETURN(rc);
-        }
-
-        if (!IS_ERR(mdo))
-                lu_object_put(env, &mdo->mo_lu);
-
-        return 0;
-}
-
-
-static int dot_lustre_mdd_permission(const struct lu_env *env,
-                                     struct md_object *pobj,
-                                     struct md_object *cobj,
-                                     struct md_attr *attr, int mask)
-{
-        if (mask & ~(MAY_READ | MAY_EXEC))
-                return -EPERM;
-        else
-                return 0;
-}
-
-static int dot_lustre_mdd_attr_get(const struct lu_env *env,
-                                   struct md_object *obj, struct md_attr *ma)
-{
-        struct mdd_object *mdd_obj = md2mdd_obj(obj);
-
-        return mdd_attr_get_internal_locked(env, mdd_obj, ma);
-}
-
-static int dot_lustre_mdd_attr_set(const struct lu_env *env,
-                                   struct md_object *obj,
-                                   const struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_xattr_get(const struct lu_env *env,
-                                    struct md_object *obj, struct lu_buf *buf,
-                                    const char *name)
-{
-        return 0;
-}
-
-static int dot_lustre_mdd_xattr_list(const struct lu_env *env,
-                                     struct md_object *obj, struct lu_buf *buf)
-{
-        return 0;
-}
-
-static int dot_lustre_mdd_xattr_set(const struct lu_env *env,
-                                    struct md_object *obj,
-                                    const struct lu_buf *buf, const char *name,
-                                    int fl)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_xattr_del(const struct lu_env *env,
-                                    struct md_object *obj,
-                                    const char *name)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_readlink(const struct lu_env *env,
-                                   struct md_object *obj, struct lu_buf *buf)
-{
-        return 0;
-}
-
-static int dot_lustre_mdd_object_create(const struct lu_env *env,
-                                        struct md_object *obj,
-                                        const struct md_op_spec *spec,
-                                        struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_ref_add(const struct lu_env *env,
-                                  struct md_object *obj,
-                                  const struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_ref_del(const struct lu_env *env,
-                                  struct md_object *obj,
-                                  struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_open(const struct lu_env *env, struct md_object *obj,
-                               int flags)
-{
-        struct mdd_object *mdd_obj = md2mdd_obj(obj);
-
-        mdd_write_lock(env, mdd_obj, MOR_TGT_CHILD);
-        mdd_obj->mod_count++;
-        mdd_write_unlock(env, mdd_obj);
-
-        return 0;
-}
-
-static int dot_lustre_mdd_close(const struct lu_env *env, struct md_object *obj,
-                                struct md_attr *ma, int mode)
-{
-        struct mdd_object *mdd_obj = md2mdd_obj(obj);
-
-        mdd_write_lock(env, mdd_obj, MOR_TGT_CHILD);
-        mdd_obj->mod_count--;
-        mdd_write_unlock(env, mdd_obj);
-
-        return 0;
-}
-
-static int dot_lustre_mdd_object_sync(const struct lu_env *env,
-                                      struct md_object *obj)
-{
-        return -ENOSYS;
-}
-
-static int dot_lustre_mdd_path(const struct lu_env *env, struct md_object *obj,
-                           char *path, int pathlen, __u64 *recno, int *linkno)
-{
-        return -ENOSYS;
-}
-
-static int dot_file_lock(const struct lu_env *env, struct md_object *obj,
-                         struct lov_mds_md *lmm, struct ldlm_extent *extent,
-                         struct lustre_handle *lockh)
-{
-        return -ENOSYS;
-}
-
-static int dot_file_unlock(const struct lu_env *env, struct md_object *obj,
-                           struct lov_mds_md *lmm, struct lustre_handle *lockh)
-{
-        return -ENOSYS;
-}
-
-static struct md_object_operations mdd_dot_lustre_obj_ops = {
-        .moo_permission    = dot_lustre_mdd_permission,
-        .moo_attr_get      = dot_lustre_mdd_attr_get,
-        .moo_attr_set      = dot_lustre_mdd_attr_set,
-        .moo_xattr_get     = dot_lustre_mdd_xattr_get,
-        .moo_xattr_list    = dot_lustre_mdd_xattr_list,
-        .moo_xattr_set     = dot_lustre_mdd_xattr_set,
-        .moo_xattr_del     = dot_lustre_mdd_xattr_del,
-        .moo_readpage      = mdd_readpage,
-        .moo_readlink      = dot_lustre_mdd_readlink,
-        .moo_object_create = dot_lustre_mdd_object_create,
-        .moo_ref_add       = dot_lustre_mdd_ref_add,
-        .moo_ref_del       = dot_lustre_mdd_ref_del,
-        .moo_open          = dot_lustre_mdd_open,
-        .moo_close         = dot_lustre_mdd_close,
-        .moo_capa_get      = mdd_capa_get,
-        .moo_object_sync   = dot_lustre_mdd_object_sync,
-        .moo_path          = dot_lustre_mdd_path,
-        .moo_file_lock     = dot_file_lock,
-        .moo_file_unlock   = dot_file_unlock,
-};
-
-
-static int dot_lustre_mdd_lookup(const struct lu_env *env, struct md_object *p,
-                                 const struct lu_name *lname, struct lu_fid *f,
-                                 struct md_op_spec *spec)
-{
-        if (strcmp(lname->ln_name, mdd_obf_dir_name) == 0)
-                *f = LU_OBF_FID;
-        else
-                return -ENOENT;
-
-        return 0;
-}
-
-static mdl_mode_t dot_lustre_mdd_lock_mode(const struct lu_env *env,
-                                           struct md_object *obj,
-                                           mdl_mode_t mode)
-{
-        return MDL_MINMODE;
-}
-
-static int dot_lustre_mdd_create(const struct lu_env *env,
-                                 struct md_object *pobj,
-                                 const struct lu_name *lname,
-                                 struct md_object *child,
-                                 struct md_op_spec *spec,
-                                 struct md_attr* ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_create_data(const struct lu_env *env,
-                                      struct md_object *p,
-                                      struct md_object *o,
-                                      const struct md_op_spec *spec,
-                                      struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_rename(const struct lu_env *env,
-                                 struct md_object *src_pobj,
-                                 struct md_object *tgt_pobj,
-                                 const struct lu_fid *lf,
-                                 const struct lu_name *lsname,
-                                 struct md_object *tobj,
-                                 const struct lu_name *ltname,
-                                 struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_link(const struct lu_env *env,
-                               struct md_object *tgt_obj,
-                               struct md_object *src_obj,
-                               const struct lu_name *lname,
-                               struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_unlink(const struct lu_env *env,
-                                 struct md_object *pobj,
-                                 struct md_object *cobj,
-                                 const struct lu_name *lname,
-                                 struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_name_insert(const struct lu_env *env,
-                                      struct md_object *obj,
-                                      const struct lu_name *lname,
-                                      const struct lu_fid *fid,
-                                      const struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_name_remove(const struct lu_env *env,
-                                      struct md_object *obj,
-                                      const struct lu_name *lname,
-                                      const struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int dot_lustre_mdd_rename_tgt(const struct lu_env *env,
-                                     struct md_object *pobj,
-                                     struct md_object *tobj,
-                                     const struct lu_fid *fid,
-                                     const struct lu_name *lname,
-                                     struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-
-static struct md_dir_operations mdd_dot_lustre_dir_ops = {
-        .mdo_is_subdir   = mdd_is_subdir,
-        .mdo_lookup      = dot_lustre_mdd_lookup,
-        .mdo_lock_mode   = dot_lustre_mdd_lock_mode,
-        .mdo_create      = dot_lustre_mdd_create,
-        .mdo_create_data = dot_lustre_mdd_create_data,
-        .mdo_rename      = dot_lustre_mdd_rename,
-        .mdo_link        = dot_lustre_mdd_link,
-        .mdo_unlink      = dot_lustre_mdd_unlink,
-        .mdo_name_insert = dot_lustre_mdd_name_insert,
-        .mdo_name_remove = dot_lustre_mdd_name_remove,
-        .mdo_rename_tgt  = dot_lustre_mdd_rename_tgt,
-};
-
-static int obf_attr_get(const struct lu_env *env, struct md_object *obj,
-                        struct md_attr *ma)
-{
-        int rc = 0;
-
-        if (ma->ma_need & MA_INODE) {
-                struct mdd_device *mdd = mdo2mdd(obj);
-
-                /* "fid" is a virtual object and hence does not have any "real"
-                 * attributes. So we reuse attributes of .lustre for "fid" dir */
-                ma->ma_need |= MA_INODE;
-                rc = dot_lustre_mdd_attr_get(env, &mdd->mdd_dot_lustre->mod_obj,
-                                             ma);
-                if (rc)
-                        return rc;
-                ma->ma_valid |= MA_INODE;
-        }
-
-        /* "fid" directory does not have any striping information. */
-        if (ma->ma_need & MA_LOV) {
-                struct mdd_object *mdd_obj = md2mdd_obj(obj);
-
-                if (ma->ma_valid & MA_LOV)
-                        return 0;
-
-                if (!(S_ISREG(mdd_object_type(mdd_obj)) ||
-                      S_ISDIR(mdd_object_type(mdd_obj))))
-                        return 0;
-
-                if (ma->ma_need & MA_LOV_DEF) {
-                        rc = mdd_get_default_md(mdd_obj, ma->ma_lmm);
-                        if (rc > 0) {
-                                ma->ma_lmm_size = rc;
-                                ma->ma_valid |= MA_LOV;
-                                rc = 0;
-                        }
-                }
-        }
-
-        return rc;
-}
-
-static int obf_attr_set(const struct lu_env *env, struct md_object *obj,
-                        const struct md_attr *ma)
-{
-        return -EPERM;
-}
-
-static int obf_xattr_get(const struct lu_env *env,
-                         struct md_object *obj, struct lu_buf *buf,
-                         const char *name)
-{
-        return 0;
-}
-
-static int obf_mdd_open(const struct lu_env *env, struct md_object *obj,
-                        int flags)
-{
-        struct mdd_object *mdd_obj = md2mdd_obj(obj);
-
-        mdd_write_lock(env, mdd_obj, MOR_TGT_CHILD);
-        mdd_obj->mod_count++;
-        mdd_write_unlock(env, mdd_obj);
-
-        return 0;
-}
-
-static int obf_mdd_close(const struct lu_env *env, struct md_object *obj,
-                         struct md_attr *ma, int mode)
-{
-        struct mdd_object *mdd_obj = md2mdd_obj(obj);
-
-        mdd_write_lock(env, mdd_obj, MOR_TGT_CHILD);
-        mdd_obj->mod_count--;
-        mdd_write_unlock(env, mdd_obj);
-
-        return 0;
-}
-
-/** Nothing to list in "fid" directory */
-static int obf_mdd_readpage(const struct lu_env *env, struct md_object *obj,
-                            const struct lu_rdpg *rdpg)
-{
-        return -EPERM;
-}
-
-static int obf_path(const struct lu_env *env, struct md_object *obj,
-                    char *path, int pathlen, __u64 *recno, int *linkno)
-{
-        return -ENOSYS;
-}
-
-static struct md_object_operations mdd_obf_obj_ops = {
-        .moo_attr_get   = obf_attr_get,
-        .moo_attr_set   = obf_attr_set,
-        .moo_xattr_get  = obf_xattr_get,
-        .moo_open       = obf_mdd_open,
-        .moo_close      = obf_mdd_close,
-        .moo_readpage   = obf_mdd_readpage,
-        .moo_path       = obf_path
-};
-
-/**
  * Lookup method for "fid" object. Only filenames with correct SEQ:OID format
  * are valid. We also check if object with passed fid exists or not.
  */
@@ -826,7 +432,7 @@ static int obf_lookup(const struct lu_env *env, struct md_object *p,
         if (!fid_is_sane(f)) {
                 CWARN("bad FID format [%s], should be "DFID"\n", lname->ln_name,
                       (__u64)1, 2, 0);
-                GOTO(out, rc = -EINVAL);
+		GOTO(out, rc = -ENOENT);
         }
 
         /* Check if object with this fid exists */
@@ -892,15 +498,13 @@ static int mdd_obf_setup(const struct lu_env *env, struct mdd_device *m)
         struct lu_object *obf_lu_obj;
         int rc = 0;
 
-        m->mdd_dot_lustre_objs.mdd_obf = mdd_object_find(env, m,
-                                                         &LU_OBF_FID);
-        if (m->mdd_dot_lustre_objs.mdd_obf == NULL ||
-            IS_ERR(m->mdd_dot_lustre_objs.mdd_obf))
-                GOTO(out, rc = -ENOENT);
+	mdd_obf = mdd_object_find(env, m, &LU_OBF_FID);
+	if (mdd_obf == NULL || IS_ERR(mdd_obf))
+		GOTO(out, rc = -ENOENT);
+
+	m->mdd_dot_lustre_objs.mdd_obf = mdd_obf;
 
-        mdd_obf = m->mdd_dot_lustre_objs.mdd_obf;
-        mdd_obf->mod_obj.mo_dir_ops = &mdd_obf_dir_ops;
-        mdd_obf->mod_obj.mo_ops = &mdd_obf_obj_ops;
+	mdd_obf->mod_obj.mo_dir_ops = &mdd_obf_dir_ops;
         /* Don't allow objects to be created in "fid" dir */
         mdd_obf->mod_flags |= IMMUTE_OBJ;
 
@@ -911,39 +515,6 @@ out:
         return rc;
 }
 
-/** Setup ".lustre" directory object */
-static int mdd_dot_lustre_setup(const struct lu_env *env, struct mdd_device *m)
-{
-        struct dt_object *dt_dot_lustre;
-        struct lu_fid *fid = &mdd_env_info(env)->mti_fid;
-        int rc;
-
-        rc = create_dot_lustre_dir(env, m);
-        if (rc)
-                return rc;
-
-        dt_dot_lustre = dt_store_open(env, m->mdd_child, mdd_root_dir_name,
-                                      dot_lustre_name, fid);
-        if (IS_ERR(dt_dot_lustre)) {
-                rc = PTR_ERR(dt_dot_lustre);
-                GOTO(out, rc);
-        }
-
-        /* references are released in mdd_device_shutdown() */
-        m->mdd_dot_lustre = lu2mdd_obj(lu_object_locate(dt_dot_lustre->do_lu.lo_header,
-                                                        &mdd_device_type));
-
-        m->mdd_dot_lustre->mod_obj.mo_dir_ops = &mdd_dot_lustre_dir_ops;
-        m->mdd_dot_lustre->mod_obj.mo_ops = &mdd_dot_lustre_obj_ops;
-
-        rc = mdd_obf_setup(env, m);
-        if (rc)
-                CERROR("Error initializing \"fid\" object - %d.\n", rc);
-
-out:
-        RETURN(rc);
-}
-
 static int mdd_process_config(const struct lu_env *env,
                               struct lu_device *d, struct lustre_cfg *cfg)
 {
@@ -1085,11 +656,9 @@ static int mdd_prepare(const struct lu_env *env,
         if (rc)
                 GOTO(out, rc);
 
-        rc = mdd_dot_lustre_setup(env, mdd);
-        if (rc) {
-                CERROR("Error(%d) initializing .lustre objects\n", rc);
-                GOTO(out, rc);
-        }
+	rc = mdd_obf_setup(env, mdd);
+	if (rc)
+		GOTO(out, rc);
 
         /* we use capa file to declare llog changes,
          * will be fixed with new llog in 2.3 */
@@ -1650,23 +1219,42 @@ static void mdd_key_fini(const struct lu_context *ctx,
 LU_CONTEXT_KEY_DEFINE(mdd, LCT_MD_THREAD);
 
 static struct lu_local_obj_desc llod_capa_key = {
-        .llod_name      = CAPA_KEYS,
-        .llod_oid       = MDD_CAPA_KEYS_OID,
-        .llod_is_index  = 0,
+	.llod_name = CAPA_KEYS,
+	.llod_fid  = LU_LOCAL_OBJ_FID(MDD_CAPA_KEYS_OID),
 };
 
 static struct lu_local_obj_desc llod_mdd_orphan = {
-        .llod_name      = orph_index_name,
-        .llod_oid       = MDD_ORPHAN_OID,
-        .llod_is_index  = 1,
-        .llod_feat      = &dt_directory_features,
+	.llod_name = orph_index_name,
+	.llod_fid  = LU_LOCAL_OBJ_FID(MDD_ORPHAN_OID),
+	.llod_feat = &dt_directory_features,
 };
 
 static struct lu_local_obj_desc llod_mdd_root = {
-        .llod_name      = mdd_root_dir_name,
-        .llod_oid       = MDD_ROOT_INDEX_OID,
-        .llod_is_index  = 1,
-        .llod_feat      = &dt_directory_features,
+	.llod_name = mdd_root_dir_name,
+	.llod_fid  = LU_LOCAL_OBJ_FID(MDD_ROOT_INDEX_OID),
+	.llod_feat = &dt_directory_features,
+};
+
+static struct lu_local_obj_desc llod_dot_lustre = {
+	.llod_dir  = mdd_root_dir_name,
+	.llod_name = dot_lustre_name,
+	.llod_fid  = {
+		.f_seq = FID_SEQ_DOT_LUSTRE,
+		.f_oid = FID_OID_DOT_LUSTRE,
+		.f_ver = 0x0000000000000000
+	},
+	.llod_feat = &dt_directory_features,
+};
+
+static struct lu_local_obj_desc llod_dot_lustre_obf = {
+	.llod_dir = "ROOT/.lustre", /* XXX */
+	.llod_name = mdd_obf_dir_name,
+	.llod_fid  = {
+		.f_seq = FID_SEQ_DOT_LUSTRE,
+		.f_oid = FID_OID_DOT_LUSTRE_OBF,
+		.f_ver = 0x0000000000000000
+	},
+	.llod_feat = &dt_directory_features,
 };
 
 static int __init mdd_mod_init(void)
@@ -1677,7 +1265,9 @@ static int __init mdd_mod_init(void)
         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_dot_lustre);
+        llo_local_obj_register(&llod_dot_lustre_obf);
+	
         return class_register_type(&mdd_obd_device_ops, NULL, lvars.module_vars,
                                    LUSTRE_MDD_NAME, &mdd_device_type);
 }
@@ -1687,6 +1277,8 @@ static void __exit mdd_mod_exit(void)
         llo_local_obj_unregister(&llod_capa_key);
         llo_local_obj_unregister(&llod_mdd_orphan);
         llo_local_obj_unregister(&llod_mdd_root);
+        llo_local_obj_unregister(&llod_dot_lustre);
+        llo_local_obj_unregister(&llod_dot_lustre_obf);
 
         class_unregister_type(LUSTRE_MDD_NAME);
 }
diff --git a/lustre/obdclass/md_local_object.c b/lustre/obdclass/md_local_object.c
index 77c9ce8..3411d4b 100644
--- a/lustre/obdclass/md_local_object.c
+++ b/lustre/obdclass/md_local_object.c
@@ -345,28 +345,6 @@ struct md_object *llo_store_create_index(const struct lu_env *env,
 EXPORT_SYMBOL(llo_store_create_index);
 
 /**
- * Create md object for regular file in \a directory.
- *
- *       \param  md       device
- *       \param  dirname  parent directory
- *       \param  objname  file name
- *       \param  fid      object fid.
- */
-
-struct md_object *llo_store_create(const struct lu_env *env,
-                                   struct md_device *md,
-                                   struct dt_device *dt,
-                                   const char *dirname,
-                                   const char *objname,
-                                   const struct lu_fid *fid)
-{
-        return llo_store_create_index(env, md, dt, dirname,
-                                      objname, fid, NULL);
-}
-
-EXPORT_SYMBOL(llo_store_create);
-
-/**
  * Register object for 'create on first mount' facility.
  * objects are created in order of registration.
  */
@@ -397,35 +375,28 @@ int llo_local_objects_setup(const struct lu_env *env,
                              struct md_device * md,
                              struct dt_device *dt)
 {
-        struct llo_thread_info *info = llo_env_info(env);
-        struct lu_fid *fid;
         struct lu_local_obj_desc *scan;
         struct md_object *mdo;
         const char *dir;
         int rc = 0;
 
-        fid = &info->lti_cfid;
         cfs_mutex_lock(&llo_lock);
 
         cfs_list_for_each_entry(scan, &llo_lobj_list, llod_linkage) {
-                lu_local_obj_fid(fid, scan->llod_oid);
                 dir = "";
                 if (scan->llod_dir)
                         dir = scan->llod_dir;
 
-                if (scan->llod_is_index)
-                        mdo = llo_store_create_index(env, md, dt ,
-                                                     dir, scan->llod_name,
-                                                     fid,
-                                                     scan->llod_feat);
-                else
-                        mdo = llo_store_create(env, md, dt,
-                                               dir, scan->llod_name,
-                                               fid);
+		mdo = llo_store_create_index(env, md, dt,
+					     dir,
+					     scan->llod_name,
+					     &scan->llod_fid,
+					     scan->llod_feat);
+
                 if (IS_ERR(mdo) && PTR_ERR(mdo) != -EEXIST) {
                         rc = PTR_ERR(mdo);
                         CERROR("creating obj [%s] fid = "DFID" rc = %d\n",
-                               scan->llod_name, PFID(fid), rc);
+                               scan->llod_name, PFID(&scan->llod_fid), rc);
                         goto out;
                 }
 
diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c
index eced8db..030f2cb 100644
--- a/lustre/osd-ldiskfs/osd_handler.c
+++ b/lustre/osd-ldiskfs/osd_handler.c
@@ -2197,7 +2197,7 @@ static int osd_object_ea_create(const struct lu_env *env, struct dt_object *dt,
 
         result = __osd_object_create(info, obj, attr, hint, dof, th);
         /* objects under osd root shld have igif fid, so dont add fid EA */
-        if (result == 0 && fid_seq(fid) >= FID_SEQ_NORMAL)
+        if (result == 0 && fid_seq(fid) >= FID_SEQ_LOCAL_FILE)
                 result = osd_ea_fid_set(env, dt, fid);
 
         if (result == 0)
diff --git a/lustre/osd-ldiskfs/osd_oi.c b/lustre/osd-ldiskfs/osd_oi.c
index dfa42ab..17ff267 100644
--- a/lustre/osd-ldiskfs/osd_oi.c
+++ b/lustre/osd-ldiskfs/osd_oi.c
@@ -569,7 +569,7 @@ int osd_oi_insert(struct osd_thread_info *info, struct osd_device *osd,
 	struct lu_fid	    *oi_fid = &info->oti_fid2;
 	struct osd_inode_id *oi_id = &info->oti_id2;
 
-	if (fid_is_igif(fid) || unlikely(fid_seq(fid) == FID_SEQ_DOT_LUSTRE))
+	if (fid_is_igif(fid))
 		return 0;
 
 	if (fid_is_idif(fid) || fid_seq(fid) == FID_SEQ_LLOG)
