MD_ATIME_SET = 1 << 0,
MD_MTIME_SET = 1 << 1,
MD_CTIME_SET = 1 << 2,
- MD_ATTR_FLAG = 1 << 3,
- MD_ATTR_RAW = 1 << 4
+ MD_ATTR_RAW = 1 << 3
};
/* additional parameters for create */
int mdd_fix_attr(const struct lu_context *ctxt, struct mdd_object *obj,
const struct md_attr *ma)
{
- time_t now = CURRENT_SECONDS;
- struct lu_attr *la = (struct lu_attr *)&ma->ma_attr;
- struct lu_attr *tmp_la = &mdd_ctx_info(ctxt)->mti_la;
+ struct lu_attr *la = (struct lu_attr*)&ma->ma_attr;
+ struct lu_attr *tmp_la = &mdd_ctx_info(ctxt)->mti_la;
struct dt_object *next = mdd_object_child(obj);
- int rc = 0;
+ time_t now = CURRENT_SECONDS;
+ int rc = 0;
ENTRY;
rc = next->do_ops->do_attr_get(ctxt, next, tmp_la);
if (rc)
RETURN(rc);
- if (!(ma->ma_attr_flags & ATTR_CTIME_SET))
+ if (!(ma->ma_attr_flags & MD_CTIME_SET))
la->la_ctime = now;
-
- if (!(ma->ma_attr_flags & ATTR_ATIME_SET))
+ if (!(ma->ma_attr_flags & MD_ATIME_SET))
la->la_atime = now;
- if (!(ma->ma_attr_flags & ATTR_MTIME_SET))
+ if (!(ma->ma_attr_flags & MD_MTIME_SET))
la->la_mtime = now;
/*XXX Check permission */
la->la_uid = tmp_la->la_uid;
if (la->la_gid == (gid_t) -1)
la->la_gid = tmp_la->la_gid;
- if (!(la->la_valid & ATTR_MODE))
+ if (!(la->la_valid & LA_MODE))
la->la_mode = tmp_la->la_mode;
/*
* If the user or group of a non-directory has been
rc = mdd_fix_attr(ctxt, mdd_obj, ma);
if (rc)
GOTO(cleanup, rc);
- if (ma->ma_attr_flags & MD_ATTR_FLAG) { /* ioctl */
- rc = -ENOTSUPP;
- } else if (ma->ma_attr.la_valid) { /* setattr */
+ if (ma->ma_attr.la_valid) { /* setattr */
mdd_lock(ctxt, mdd_obj, DT_WRITE_LOCK);
rc = mdd_attr_set_internal(ctxt, mdd_obj, &ma->ma_attr, handle);
mdd_unlock(ctxt, mdd_obj, DT_WRITE_LOCK);
rc = mdd_lov_set_dir_md(ctxt, child, lmmp, lmm_size, handle);
}
}
- CDEBUG(D_INFO, "Set lov md %p size %d for fid "DFID" rc%d/n",
+ CDEBUG(D_INFO, "Set lov md %p size %d for fid "DFID" rc%d\n",
lmmp, lmm_size, PFID(mdo2fid(child)), rc);
RETURN(rc);
}
out |= LA_MTIME;
if (in & ATTR_CTIME)
out |= LA_CTIME;
+ if (in & ATTR_ATTR_FLAG)
+ out |= LA_FLAGS;
if (in & ATTR_FROM_OPEN)
rr->rr_flags |= MRF_SETATTR_LOCKED;
if (in & ATTR_MTIME_SET)
ma->ma_attr_flags |= MD_MTIME_SET;
- if (in & ATTR_ATTR_FLAG)
- ma->ma_attr_flags |= MD_ATTR_FLAG;
-
if (in & ATTR_RAW)
ma->ma_attr_flags |= MD_ATTR_RAW;
finish_open:
if (result != 0 && created) {
+ int rc2;
ma->ma_need = 0;
- int rc2 = mdo_unlink(info->mti_ctxt, mdt_object_child(parent),
+ rc2 = mdo_unlink(info->mti_ctxt, mdt_object_child(parent),
mdt_object_child(child), rr->rr_name,
&info->mti_attr);
if (rc2 != 0)
if (bits & LA_ATIME)
inode->i_atime = *osd_inode_time(ctx, inode, attr->la_atime);
if (bits & LA_CTIME)
- inode->i_atime = *osd_inode_time(ctx, inode, attr->la_ctime);
+ inode->i_ctime = *osd_inode_time(ctx, inode, attr->la_ctime);
if (bits & LA_MTIME)
- inode->i_atime = *osd_inode_time(ctx, inode, attr->la_mtime);
+ inode->i_mtime = *osd_inode_time(ctx, inode, attr->la_mtime);
if (bits & LA_SIZE)
inode->i_size = attr->la_size;
if (bits & LA_BLOCKS)
}
if (st.st_atime != utb.actime ) {
- fprintf(stderr, "%s: bad utime mtime %lu should be %lu\n",
+ fprintf(stderr, "%s: bad utime atime %lu should be %lu\n",
prog, st.st_atime, utb.actime);
- return 7;
+ return 8;
}
printf("%s: good utime mtimes %lu, atime %lu\n",