CL_SETATTR = 14,
CL_XATTR = 15,
CL_HSM = 16, /* HSM specific events, see flags */
+ CL_TIME = 17, /* mtime, atime, ctime change only */
CL_LAST
};
static const char *changelog_str[] = {
"MARK", "CREAT", "MKDIR", "HLINK", "SLINK", "MKNOD", "UNLNK",
"RMDIR", "RNMFM", "RNMTO", "OPEN", "CLOSE", "IOCTL", "TRUNC",
- "SATTR", "XATTR", "HSM" };
+ "SATTR", "XATTR", "HSM", "TIME" };
if (type >= 0 && type < CL_LAST)
return changelog_str[type];
return NULL;
rc = mdd_changelog_llog_write(mdd, rec, NULL);
/* assume on or off event; reset repeat-access time */
- mdd->mdd_cl.mc_starttime = rec->cr.cr_time;
+ mdd->mdd_cl.mc_starttime = cfs_time_current_64();
OBD_FREE(rec, reclen);
RETURN(rc);
LASSERT(handle != NULL);
LASSERT(mdd_obj != NULL);
- if ((type == CL_SETATTR) &&
+ if ((type == CL_TIME) &&
cfs_time_before_64(mdd->mdd_cl.mc_starttime, mdd_obj->mod_cltime)) {
/* Don't need multiple updates in this log */
/* Don't check under lock - no big deal if we get an extra
}
cleanup:
- if ((rc == 0) && (ma->ma_attr.la_valid & (LA_MTIME | LA_CTIME)))
- rc = mdd_changelog_data_store(env, mdd, CL_SETATTR, mdd_obj,
- handle);
+ if (rc == 0)
+ rc = mdd_changelog_data_store(env, mdd,
+ (ma->ma_attr.la_valid &
+ ~(LA_MTIME|LA_CTIME|LA_ATIME)) ?
+ CL_SETATTR : CL_TIME,
+ mdd_obj, handle);
mdd_trans_stop(env, mdd, rc, handle);
if (rc == 0 && (lmm != NULL && lmm_size > 0 )) {
/*set obd attr, if needed*/