int mdd_declare_changelog_store(const struct lu_env *env,
struct mdd_device *mdd,
+ enum changelog_rec_type type,
const struct lu_name *tname,
const struct lu_name *sname,
struct thandle *handle)
int reclen;
int rc;
- /* Not recording */
- if (!recording_changelog(env, mdd))
+ if (!mdd_changelog_enabled(env, mdd, type))
return 0;
reclen = mdd_llog_record_calc_size(env, tname, sname);
int rc;
ENTRY;
- /* Not recording */
- if (!recording_changelog(env, mdd))
- RETURN(0);
-
- if ((mdd->mdd_cl.mc_mask & (1 << type)) == 0)
+ if (!mdd_changelog_enabled(env, mdd, type))
RETURN(0);
LASSERT(tpfid != NULL);
if (rc != 0)
return rc;
- rc = mdd_declare_changelog_store(env, mdd, name, NULL, handle);
+ rc = mdd_declare_changelog_store(env, mdd, CL_HARDLINK, name, NULL,
+ handle);
return rc;
}
return rc;
/* FIXME: need changelog for remove entry */
- rc = mdd_declare_changelog_store(env, mdd, name, NULL, handle);
+ rc = mdd_declare_changelog_store(env, mdd, CL_UNLINK, name,
+ NULL, handle);
}
return rc;
if (rc)
GOTO(stop, rc);
- rc = mdd_declare_changelog_store(env, mdd, NULL, NULL, handle);
+ rc = mdd_declare_changelog_store(env, mdd, CL_LAYOUT, NULL, NULL,
+ handle);
if (rc)
GOTO(stop, rc);
GOTO(out, rc);
} else {
struct lu_attr *la = &mdd_env_info(env)->mti_la_for_fix;
+ enum changelog_rec_type type;
rc = mdo_declare_index_insert(env, p, mdo2fid(c), attr->la_mode,
name->ln_name, handle);
if (rc)
return rc;
- rc = mdd_declare_changelog_store(env, mdd, name, NULL, handle);
+ type = S_ISDIR(attr->la_mode) ? CL_MKDIR :
+ S_ISREG(attr->la_mode) ? CL_CREATE :
+ S_ISLNK(attr->la_mode) ? CL_SOFTLINK : CL_MKNOD;
+
+ rc = mdd_declare_changelog_store(env, mdd, type, name, NULL,
+ handle);
if (rc)
return rc;
}
return rc;
}
- rc = mdd_declare_changelog_store(env, mdd, tname, sname, handle);
+ rc = mdd_declare_changelog_store(env, mdd, CL_RENAME, tname, sname,
+ handle);
if (rc)
return rc;
if (rc != 0)
return rc;
- rc = mdd_declare_changelog_store(env, mdd, lname, NULL, handle);
+ rc = mdd_declare_changelog_store(env, mdd, CL_MIGRATE, lname, NULL,
+ handle);
return rc;
}