#define MODULE_ALIAS_FS(name)
#endif
-#define LTIME_S(time) (time.tv_sec)
-
#ifdef HAVE_GENERIC_PERMISSION_2ARGS
# define ll_generic_permission(inode, mask, flags, check_acl) \
generic_permission(inode, mask)
* if it's at least 'mdd.*.atime_diff' older.
* All in all, the atime in Lustre does not strictly comply with
* POSIX. Solving this problem needs to send an RPC to MDT for each
- * read, this will hurt performance. */
- if (LTIME_S(inode->i_atime) < lli->lli_atime || lli->lli_update_atime) {
- LTIME_S(inode->i_atime) = lli->lli_atime;
+ * read, this will hurt performance.
+ */
+ if (inode->i_atime.tv_sec < lli->lli_atime ||
+ lli->lli_update_atime) {
+ inode->i_atime.tv_sec = lli->lli_atime;
lli->lli_update_atime = 0;
}
- LTIME_S(inode->i_mtime) = lli->lli_mtime;
- LTIME_S(inode->i_ctime) = lli->lli_ctime;
+ inode->i_mtime.tv_sec = lli->lli_mtime;
+ inode->i_ctime.tv_sec = lli->lli_ctime;
- atime = LTIME_S(inode->i_atime);
- mtime = LTIME_S(inode->i_mtime);
- ctime = LTIME_S(inode->i_ctime);
+ mtime = inode->i_mtime.tv_sec;
+ atime = inode->i_atime.tv_sec;
+ ctime = inode->i_ctime.tv_sec;
cl_object_attr_lock(obj);
if (OBD_FAIL_CHECK(OBD_FAIL_MDC_MERGE))
i_size_write(inode, attr->cat_size);
inode->i_blocks = attr->cat_blocks;
- LTIME_S(inode->i_atime) = atime;
- LTIME_S(inode->i_mtime) = mtime;
- LTIME_S(inode->i_ctime) = ctime;
+ inode->i_mtime.tv_sec = mtime;
+ inode->i_atime.tv_sec = atime;
+ inode->i_ctime.tv_sec = ctime;
out_size_unlock:
ll_inode_size_unlock(inode);
RETURN(rc);
}
- LTIME_S(inode->i_atime) = lli->lli_atime;
- LTIME_S(inode->i_mtime) = lli->lli_mtime;
- LTIME_S(inode->i_ctime) = lli->lli_ctime;
+ inode->i_atime.tv_sec = lli->lli_atime;
+ inode->i_mtime.tv_sec = lli->lli_mtime;
+ inode->i_ctime.tv_sec = lli->lli_ctime;
}
OBD_FAIL_TIMEOUT(OBD_FAIL_GETATTR_DELAY, 30);
io->ci_obj = obj;
io->ci_verify_layout = 1;
- io->u.ci_setattr.sa_attr.lvb_atime = LTIME_S(attr->ia_atime);
- io->u.ci_setattr.sa_attr.lvb_mtime = LTIME_S(attr->ia_mtime);
- io->u.ci_setattr.sa_attr.lvb_ctime = LTIME_S(attr->ia_ctime);
+ io->u.ci_setattr.sa_attr.lvb_atime = attr->ia_atime.tv_sec;
+ io->u.ci_setattr.sa_attr.lvb_mtime = attr->ia_mtime.tv_sec;
+ io->u.ci_setattr.sa_attr.lvb_ctime = attr->ia_ctime.tv_sec;
io->u.ci_setattr.sa_attr.lvb_size = attr->ia_size;
io->u.ci_setattr.sa_attr_flags = attr_flags;
io->u.ci_setattr.sa_avalid = attr->ia_valid;
LASSERTF(S_ISDIR(inode->i_mode), "Not slave inode "DFID"\n",
PFID(fid));
- LTIME_S(inode->i_mtime) = 0;
- LTIME_S(inode->i_atime) = 0;
- LTIME_S(inode->i_ctime) = 0;
+ inode->i_mtime.tv_sec = 0;
+ inode->i_atime.tv_sec = 0;
+ inode->i_ctime.tv_sec = 0;
inode->i_rdev = 0;
#ifdef HAVE_BACKING_DEV_INFO
}
if (attr->ia_valid & (ATTR_MTIME | ATTR_CTIME))
- CDEBUG(D_INODE, "setting mtime %lu, ctime %lu, now = %llu\n",
- LTIME_S(attr->ia_mtime), LTIME_S(attr->ia_ctime),
- (s64)ktime_get_real_seconds());
+ CDEBUG(D_INODE, "setting mtime %lld, ctime %lld, now = %lld\n",
+ (s64)attr->ia_mtime.tv_sec, (s64)attr->ia_ctime.tv_sec,
+ ktime_get_real_seconds());
if (S_ISREG(inode->i_mode)) {
if (attr->ia_valid & ATTR_SIZE)
inode->i_generation = cl_fid_build_gen(&body->mbo_fid1);
if (body->mbo_valid & OBD_MD_FLATIME) {
- if (body->mbo_atime > LTIME_S(inode->i_atime))
- LTIME_S(inode->i_atime) = body->mbo_atime;
+ if (body->mbo_atime > inode->i_atime.tv_sec)
+ inode->i_atime.tv_sec = body->mbo_atime;
lli->lli_atime = body->mbo_atime;
}
if (body->mbo_valid & OBD_MD_FLMTIME) {
- if (body->mbo_mtime > LTIME_S(inode->i_mtime)) {
- CDEBUG(D_INODE, "setting ino %lu mtime from %lu "
- "to %llu\n", inode->i_ino,
- LTIME_S(inode->i_mtime), body->mbo_mtime);
- LTIME_S(inode->i_mtime) = body->mbo_mtime;
+ if (body->mbo_mtime > inode->i_mtime.tv_sec) {
+ CDEBUG(D_INODE,
+ "setting ino %lu mtime from %lld to %llu\n",
+ inode->i_ino, (s64)inode->i_mtime.tv_sec,
+ body->mbo_mtime);
+ inode->i_mtime.tv_sec = body->mbo_mtime;
}
lli->lli_mtime = body->mbo_mtime;
}
if (body->mbo_valid & OBD_MD_FLCTIME) {
- if (body->mbo_ctime > LTIME_S(inode->i_ctime))
- LTIME_S(inode->i_ctime) = body->mbo_ctime;
+ if (body->mbo_ctime > inode->i_ctime.tv_sec)
+ inode->i_ctime.tv_sec = body->mbo_ctime;
lli->lli_ctime = body->mbo_ctime;
}
/* Core attributes from the MDS first. This is a new inode, and
* the VFS doesn't zero times in the core inode so we have to do
* it ourselves. They will be overwritten by either MDS or OST
- * attributes - we just need to make sure they aren't newer. */
- LTIME_S(inode->i_mtime) = 0;
- LTIME_S(inode->i_atime) = 0;
- LTIME_S(inode->i_ctime) = 0;
- inode->i_rdev = 0;
+ * attributes - we just need to make sure they aren't newer.
+ */
+ inode->i_mtime.tv_sec = 0;
+ inode->i_atime.tv_sec = 0;
+ inode->i_ctime.tv_sec = 0;
+ inode->i_rdev = 0;
rc = ll_update_inode(inode, md);
if (rc != 0)
RETURN(rc);
LASSERT(body);
if (body->mbo_valid & OBD_MD_FLMTIME &&
- body->mbo_mtime > LTIME_S(inode->i_mtime)) {
- CDEBUG(D_INODE, "setting fid "DFID" mtime from %lu to %llu"
- "\n", PFID(ll_inode2fid(inode)),
- LTIME_S(inode->i_mtime), body->mbo_mtime);
- LTIME_S(inode->i_mtime) = body->mbo_mtime;
+ body->mbo_mtime > inode->i_mtime.tv_sec) {
+ CDEBUG(D_INODE,
+ "setting fid " DFID " mtime from %lld to %llu\n",
+ PFID(ll_inode2fid(inode)),
+ (s64)inode->i_mtime.tv_sec, body->mbo_mtime);
+ inode->i_mtime.tv_sec = body->mbo_mtime;
}
if (body->mbo_valid & OBD_MD_FLCTIME &&
- body->mbo_ctime > LTIME_S(inode->i_ctime))
- LTIME_S(inode->i_ctime) = body->mbo_ctime;
+ body->mbo_ctime > inode->i_ctime.tv_sec)
+ inode->i_ctime.tv_sec = body->mbo_ctime;
}
static int ll_new_node(struct inode *dir, struct dentry *dchild,
struct inode *inode = vvp_object_inode(obj);
ENTRY;
- lvb->lvb_mtime = LTIME_S(inode->i_mtime);
- lvb->lvb_atime = LTIME_S(inode->i_atime);
- lvb->lvb_ctime = LTIME_S(inode->i_ctime);
+ lvb->lvb_mtime = inode->i_mtime.tv_sec;
+ lvb->lvb_atime = inode->i_atime.tv_sec;
+ lvb->lvb_ctime = inode->i_ctime.tv_sec;
/*
* LU-417: Add dirty pages block count lest i_blocks reports 0, some
i_size_write(inode, body->mbo_size);
inode->i_blocks = body->mbo_blocks;
set_nlink(inode, body->mbo_nlink);
- LTIME_S(inode->i_atime) = body->mbo_atime;
- LTIME_S(inode->i_ctime) = body->mbo_ctime;
- LTIME_S(inode->i_mtime) = body->mbo_mtime;
+ inode->i_atime.tv_sec = body->mbo_atime;
+ inode->i_ctime.tv_sec = body->mbo_ctime;
+ inode->i_mtime.tv_sec = body->mbo_mtime;
}
md_set_lock_data(tgt->ltd_exp, lockh, inode, NULL);
for (i = 0; i < lsm->lsm_md_stripe_count; i++) {
struct inode *inode = lsm->lsm_md_oinfo[i].lmo_root;
- CDEBUG(D_INFO, ""DFID" size %llu, blocks %llu nlink %u,"
- " atime %lu ctime %lu, mtime %lu.\n",
+ CDEBUG(D_INFO,
+ "" DFID " size %llu, blocks %llu nlink %u, atime %lld ctime %lld, mtime %lld.\n",
PFID(&lsm->lsm_md_oinfo[i].lmo_fid),
i_size_read(inode), (unsigned long long)inode->i_blocks,
- inode->i_nlink, LTIME_S(inode->i_atime),
- LTIME_S(inode->i_ctime), LTIME_S(inode->i_mtime));
+ inode->i_nlink, (s64)inode->i_atime.tv_sec,
+ (s64)inode->i_ctime.tv_sec, (s64)inode->i_mtime.tv_sec);
/* for slave stripe, it needs to subtract nlink for . and .. */
if (i != 0)
attr->cat_size += i_size_read(inode);
attr->cat_blocks += inode->i_blocks;
- if (attr->cat_atime < LTIME_S(inode->i_atime))
- attr->cat_atime = LTIME_S(inode->i_atime);
+ if (attr->cat_atime < inode->i_atime.tv_sec)
+ attr->cat_atime = inode->i_atime.tv_sec;
- if (attr->cat_ctime < LTIME_S(inode->i_ctime))
- attr->cat_ctime = LTIME_S(inode->i_ctime);
+ if (attr->cat_ctime < inode->i_ctime.tv_sec)
+ attr->cat_ctime = inode->i_ctime.tv_sec;
- if (attr->cat_mtime < LTIME_S(inode->i_mtime))
- attr->cat_mtime = LTIME_S(inode->i_mtime);
+ if (attr->cat_mtime < inode->i_mtime.tv_sec)
+ attr->cat_mtime = inode->i_mtime.tv_sec;
}
return 0;
}
rec->sa_projid = op_data->op_projid;
rec->sa_size = op_data->op_attr.ia_size;
rec->sa_blocks = op_data->op_attr_blocks;
- rec->sa_atime = LTIME_S(op_data->op_attr.ia_atime);
- rec->sa_mtime = LTIME_S(op_data->op_attr.ia_mtime);
- rec->sa_ctime = LTIME_S(op_data->op_attr.ia_ctime);
+ rec->sa_atime = op_data->op_attr.ia_atime.tv_sec;
+ rec->sa_mtime = op_data->op_attr.ia_mtime.tv_sec;
+ rec->sa_ctime = op_data->op_attr.ia_ctime.tv_sec;
rec->sa_attr_flags = op_data->op_attr_flags;
if ((op_data->op_attr.ia_valid & ATTR_GID) &&
in_group_p(op_data->op_attr.ia_gid))
}
if (op_data->op_attr.ia_valid & (ATTR_MTIME | ATTR_CTIME))
- CDEBUG(D_INODE, "setting mtime %ld, ctime %ld\n",
- LTIME_S(op_data->op_attr.ia_mtime),
- LTIME_S(op_data->op_attr.ia_ctime));
+ CDEBUG(D_INODE, "setting mtime %lld, ctime %lld\n",
+ (s64)op_data->op_attr.ia_mtime.tv_sec,
+ (s64)op_data->op_attr.ia_ctime.tv_sec);
mdc_setattr_pack(req, op_data, ea, ealen);
req_capsule_set_size(&req->rq_pill, &RMF_ACL, RCL_SERVER,
u64 newvalid = 0;
if (valid & (OBD_MD_FLCTIME | OBD_MD_FLMTIME))
- CDEBUG(D_INODE, "valid %#llx, new time %lu/%lu\n",
- valid, LTIME_S(src->i_mtime),
- LTIME_S(src->i_ctime));
+ CDEBUG(D_INODE, "valid %#llx, new time %lld/%lld\n",
+ valid, (s64) src->i_mtime.tv_sec,
+ (s64) src->i_ctime.tv_sec);
if (valid & OBD_MD_FLATIME) {
- dst->o_atime = LTIME_S(src->i_atime);
+ dst->o_atime = src->i_atime.tv_sec;
newvalid |= OBD_MD_FLATIME;
}
if (valid & OBD_MD_FLMTIME) {
- dst->o_mtime = LTIME_S(src->i_mtime);
+ dst->o_mtime = src->i_mtime.tv_sec;
newvalid |= OBD_MD_FLMTIME;
}
if (valid & OBD_MD_FLCTIME) {
- dst->o_ctime = LTIME_S(src->i_ctime);
+ dst->o_ctime = src->i_ctime.tv_sec;
newvalid |= OBD_MD_FLCTIME;
}
if (valid & OBD_MD_FLSIZE) {
LA_PROJID | LA_FLAGS | LA_NLINK | LA_RDEV |
LA_BLKSIZE | LA_TYPE;
- attr->la_atime = LTIME_S(inode->i_atime);
- attr->la_mtime = LTIME_S(inode->i_mtime);
- attr->la_ctime = LTIME_S(inode->i_ctime);
+ attr->la_atime = inode->i_atime.tv_sec;
+ attr->la_mtime = inode->i_mtime.tv_sec;
+ attr->la_ctime = inode->i_ctime.tv_sec;
attr->la_mode = inode->i_mode;
attr->la_size = i_size_read(inode);
attr->la_blocks = inode->i_blocks;
if (dof->dof_type != DFT_NODE)
attr->la_valid &= ~LA_RDEV;
- if ((valid & LA_ATIME) && (attr->la_atime == LTIME_S(inode->i_atime)))
+ if ((valid & LA_ATIME) && (attr->la_atime == inode->i_atime.tv_sec))
attr->la_valid &= ~LA_ATIME;
- if ((valid & LA_CTIME) && (attr->la_ctime == LTIME_S(inode->i_ctime)))
+ if ((valid & LA_CTIME) && (attr->la_ctime == inode->i_ctime.tv_sec))
attr->la_valid &= ~LA_CTIME;
- if ((valid & LA_MTIME) && (attr->la_mtime == LTIME_S(inode->i_mtime)))
+ if ((valid & LA_MTIME) && (attr->la_mtime == inode->i_mtime.tv_sec))
attr->la_valid &= ~LA_MTIME;
result = osd_quota_transfer(inode, attr);