From af73b39130f789341c9eba4cdd8427bba895b005 Mon Sep 17 00:00:00 2001 From: "John L. Hammond" Date: Wed, 16 Dec 2015 15:16:43 -0600 Subject: [PATCH] LU-9443 mdd: omit changelog records for volatile files Omit changelog records for volatile files. Policy engines need not be concerned with these files. Signed-off-by: John L. Hammond Change-Id: Id28db03e0bd6e477db8de1bab1d53688ac7720dd Reviewed-by: Faccini Bruno Signed-off-by: Minh Diep Reviewed-on: https://review.whamcloud.com/26931 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Alex Zhuravlev Reviewed-by: Oleg Drokin --- lustre/mdd/mdd_dir.c | 1 + lustre/mdd/mdd_internal.h | 6 ++++++ lustre/mdd/mdd_object.c | 7 +++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lustre/mdd/mdd_dir.c b/lustre/mdd/mdd_dir.c index 07fe079..cd2d20f 100644 --- a/lustre/mdd/mdd_dir.c +++ b/lustre/mdd/mdd_dir.c @@ -2447,6 +2447,7 @@ static int mdd_create(const struct lu_env *env, struct md_object *pobj, if (unlikely(spec->sp_cr_flags & MDS_OPEN_VOLATILE)) { mdd_write_lock(env, son, MOR_TGT_CHILD); + son->mod_flags |= VOLATILE_OBJ; rc = __mdd_orphan_add(env, son, handle); GOTO(out_volatile, rc); } else { diff --git a/lustre/mdd/mdd_internal.h b/lustre/mdd/mdd_internal.h index e844c64..5242ff4 100644 --- a/lustre/mdd/mdd_internal.h +++ b/lustre/mdd/mdd_internal.h @@ -117,6 +117,7 @@ enum mod_flags { /* The dir object has been unlinked */ DEAD_OBJ = 1 << 0, ORPHAN_OBJ = 1 << 1, + VOLATILE_OBJ = 1 << 4, }; struct mdd_object { @@ -426,6 +427,11 @@ static inline int mdd_is_dead_obj(struct mdd_object *obj) return obj && obj->mod_flags & DEAD_OBJ; } +static inline bool mdd_is_volatile_obj(struct mdd_object *obj) +{ + return obj->mod_flags & VOLATILE_OBJ; +} + static inline int mdd_object_exists(struct mdd_object *obj) { return lu_object_exists(mdd2lu_obj(obj)); diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index 0062be6..1fec22c 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -681,14 +681,17 @@ int mdd_changelog_data_store(const struct lu_env *env, struct mdd_device *mdd, { int rc; + LASSERT(mdd_obj != NULL); + LASSERT(handle != NULL); + /* Not recording */ if (!(mdd->mdd_cl.mc_flags & CLM_ON)) RETURN(0); if ((mdd->mdd_cl.mc_mask & (1 << type)) == 0) RETURN(0); - LASSERT(mdd_obj != NULL); - LASSERT(handle != NULL); + if (mdd_is_volatile_obj(mdd_obj)) + RETURN(0); if ((type >= CL_MTIME) && (type <= CL_ATIME) && cfs_time_before_64(mdd->mdd_cl.mc_starttime, mdd_obj->mod_cltime)) { -- 1.8.3.1