Whamcloud - gitweb
LU-9443 mdd: omit changelog records for volatile files 31/26931/3
authorJohn L. Hammond <john.hammond@intel.com>
Wed, 16 Dec 2015 21:16:43 +0000 (15:16 -0600)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 9 May 2017 03:47:26 +0000 (03:47 +0000)
Omit changelog records for volatile files. Policy engines need not be
concerned with these files.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Change-Id: Id28db03e0bd6e477db8de1bab1d53688ac7720dd
Reviewed-by: Faccini Bruno <bruno.faccini@intel.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/26931
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/mdd/mdd_dir.c
lustre/mdd/mdd_internal.h
lustre/mdd/mdd_object.c

index 07fe079..cd2d20f 100644 (file)
@@ -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 {
index e844c64..5242ff4 100644 (file)
@@ -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));
index 0062be6..1fec22c 100644 (file)
@@ -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)) {