static inline int md_should_create(__u64 flags)
{
- return !(flags & MDS_OPEN_DELAY_CREATE) && (flags & FMODE_WRITE) &&
+ return !(flags & MDS_OPEN_DELAY_CREATE) && (flags & MDS_FMODE_WRITE) &&
!(flags & MDS_OPEN_LEASE);
}
LA_REMOTE_ATTR_SET = (LA_UID | LA_GID | LA_PROJID | LA_LAYOUT_VERSION)
};
-#ifndef FMODE_READ
-#define FMODE_READ 00000001
-#define FMODE_WRITE 00000002
-#endif
+#define MDS_FMODE_READ 00000001
+#define MDS_FMODE_WRITE 00000002
#define MDS_FMODE_CLOSED 00000000
#define MDS_FMODE_EXEC 00000004
static inline __u64 mds_pack_open_flags(__u64 flags)
{
- __u64 cr_flags = (flags & (FMODE_READ | FMODE_WRITE |
- MDS_OPEN_FL_INTERNAL));
+ __u64 cr_flags = (flags & MDS_OPEN_FL_INTERNAL);
+ if (flags & FMODE_READ)
+ cr_flags |= MDS_FMODE_READ;
+ if (flags & FMODE_WRITE)
+ cr_flags |= MDS_FMODE_WRITE;
if (flags & O_CREAT)
cr_flags |= MDS_OPEN_CREAT;
if (flags & O_EXCL)
/* If inode is known, cancel conflicting OPEN locks. */
if (fid_is_sane(&op_data->op_fid2)) {
if (it->it_flags & MDS_OPEN_LEASE) { /* try to get lease */
- if (it->it_flags & FMODE_WRITE)
+ if (it->it_flags & MDS_FMODE_WRITE)
mode = LCK_EX;
else
mode = LCK_PR;
} else {
- if (it->it_flags & (FMODE_WRITE|MDS_OPEN_TRUNC))
+ if (it->it_flags & (MDS_FMODE_WRITE | MDS_OPEN_TRUNC))
mode = LCK_CW;
#ifdef FMODE_EXEC
else if (it->it_flags & FMODE_EXEC)
static inline bool has_prefix(const char *str, const char *prefix);
-static fmode_t flags_helper(int flags)
+static unsigned int flags_helper(int flags)
{
- fmode_t mflags = 0;
+ unsigned int mflags = 0;
if (flags & MDS_FMODE_EXEC) {
mflags = MDS_FMODE_EXEC;
} else {
- if (flags & FMODE_READ)
- mflags = FMODE_READ;
- if (flags & (FMODE_WRITE | MDS_OPEN_TRUNC | MDS_OPEN_APPEND))
- mflags |= FMODE_WRITE;
+ if (flags & MDS_FMODE_READ)
+ mflags = MDS_FMODE_READ;
+ if (flags &
+ (MDS_FMODE_WRITE | MDS_OPEN_TRUNC | MDS_OPEN_APPEND))
+ mflags |= MDS_FMODE_WRITE;
}
return mflags;
return 0;
}
- if (flags & FMODE_READ)
+ if (flags & MDS_FMODE_READ)
res |= MAY_READ;
- if (flags & (FMODE_WRITE | MDS_OPEN_TRUNC | MDS_OPEN_APPEND))
+ if (flags & (MDS_FMODE_WRITE | MDS_OPEN_TRUNC | MDS_OPEN_APPEND))
res |= MAY_WRITE;
if (flags & MDS_FMODE_EXEC)
res = MAY_EXEC;
/* For writing append-only file must open it with append mode. */
if (attr->la_flags & LUSTRE_APPEND_FL) {
- if ((flag & FMODE_WRITE) && !(flag & MDS_OPEN_APPEND))
+ if ((flag & MDS_FMODE_WRITE) && !(flag & MDS_OPEN_APPEND))
RETURN(-EPERM);
if (flag & MDS_OPEN_TRUNC)
RETURN(-EPERM);
*/
if (!rc && !blocked &&
((!(mdd->mdd_cl.mc_mask & (1 << CL_OPEN)) &&
- (mode & (FMODE_WRITE | MDS_OPEN_APPEND | MDS_OPEN_TRUNC))) ||
+ (mode & (MDS_FMODE_WRITE | MDS_OPEN_APPEND | MDS_OPEN_TRUNC))) ||
((mdd->mdd_cl.mc_mask & (1 << CL_OPEN)) && last_close_by_uid)) &&
!(ma->ma_valid & MA_FLAGS && ma->ma_attr_flags & MDS_RECOV_OPEN)) {
if (handle == NULL) {
* archive request into a noop if it's not actually
* dirty.
*/
- if (mfd->mfd_mode & FMODE_WRITE)
+ if (mfd->mfd_mode & MDS_FMODE_WRITE)
rc = mdt_ctxt_add_dirty_flag(&env, info, mfd);
/* Don't unlink orphan on failover umount, LU-184 */
repbody->mbo_valid |= OBD_MD_FLDIREA | OBD_MD_MEA;
}
- if (flags & FMODE_WRITE)
+ if (flags & MDS_FMODE_WRITE)
rc = mdt_write_get(o);
else if (flags & MDS_FMODE_EXEC)
rc = mdt_write_deny(o);
RETURN(rc);
err_out:
- if (flags & FMODE_WRITE)
+ if (flags & MDS_FMODE_WRITE)
mdt_write_put(o);
else if (flags & MDS_FMODE_EXEC)
mdt_write_allow(o);
/* This can't be done earlier, we need to return reply body */
if (isdir) {
- if (flags & (MDS_OPEN_CREAT | FMODE_WRITE)) {
+ if (flags & (MDS_OPEN_CREAT | MDS_FMODE_WRITE)) {
/* We are trying to create or write an existing dir. */
RETURN(-EISDIR);
}
down_read(&obj->mot_open_sem);
if (open_flags & MDS_OPEN_LOCK) {
- if (open_flags & FMODE_WRITE)
+ if (open_flags & MDS_FMODE_WRITE)
lm = LCK_CW;
else if (open_flags & MDS_FMODE_EXEC)
lm = LCK_PR;
*ibits = MDS_INODELOCK_LOOKUP | MDS_INODELOCK_OPEN;
} else if (atomic_read(&obj->mot_lease_count) > 0) {
- if (open_flags & FMODE_WRITE)
+ if (open_flags & MDS_FMODE_WRITE)
lm = LCK_CW;
else
lm = LCK_CR;
lhc = &info->mti_lh[MDT_LH_LOCAL];
} else if (dom_lock) {
- lm = (open_flags & FMODE_WRITE) ? LCK_PW : LCK_PR;
+ lm = (open_flags & MDS_FMODE_WRITE) ? LCK_PW : LCK_PR;
*ibits = MDS_INODELOCK_DOM;
}
info->mti_spec.u.sp_ea.eadata == NULL)
GOTO(out, result = err_serious(-EINVAL));
- if (create_flags & FMODE_WRITE &&
+ if (create_flags & MDS_FMODE_WRITE &&
exp_connect_flags(req->rq_export) & OBD_CONNECT_RDONLY)
GOTO(out, result = -EROFS);
orp_ma->ma_lmm_size = ma->ma_lmm_size;
orp_ma->ma_valid = MA_INODE | MA_LOV;
orphan = mdt_orphan_open(info, info->mti_mdt, &data->cd_fid, orp_ma,
- FMODE_WRITE);
+ MDS_FMODE_WRITE);
if (IS_ERR(orphan)) {
CERROR("%s: cannot open orphan file "DFID": rc = %ld\n",
mdt_obd_name(info->mti_mdt), PFID(&data->cd_fid),
out_close:
/* Close orphan object anyway */
rc2 = mo_close(info->mti_env, mdt_object_child(orphan), orp_ma,
- FMODE_WRITE);
+ MDS_FMODE_WRITE);
if (rc2 < 0)
CERROR("%s: error closing volatile file "DFID": rc = %d\n",
mdt_obd_name(info->mti_mdt), PFID(&data->cd_fid), rc2);
break;
}
- if (mode & FMODE_WRITE)
+ if (mode & MDS_FMODE_WRITE)
mdt_write_put(o);
else if (mode & MDS_FMODE_EXEC)
mdt_write_allow(o);
/* Update atime on close only. */
- if ((mode & MDS_FMODE_EXEC || mode & FMODE_READ || mode & FMODE_WRITE)
+ if ((mode & MDS_FMODE_EXEC || mode & MDS_FMODE_READ ||
+ mode & MDS_FMODE_WRITE)
&& (ma->ma_valid & MA_INODE) && (ma->ma_attr.la_valid & LA_ATIME)) {
/* Set the atime only. */
ma->ma_valid = MA_INODE;
if (it != NULL &&
(it->it_op == IT_GETATTR || it->it_op == IT_LOOKUP ||
it->it_op == IT_READDIR ||
- (it->it_op == IT_LAYOUT && !(it->it_flags & FMODE_WRITE))))
+ (it->it_op == IT_LAYOUT && !(it->it_flags & MDS_FMODE_WRITE))))
return true;
return false;
}
memset(spec, 0, sizeof(*spec));
echo_set_lmm_size(env, ld, ma);
if (stripe_count != 0) {
- spec->sp_cr_flags |= FMODE_WRITE;
+ spec->sp_cr_flags |= MDS_FMODE_WRITE;
if (stripe_count != -1) {
if (S_ISDIR(mode)) {
struct lmv_user_md *lmu;
if (omd->cr_openflags & MDS_FMODE_EXEC) {
mode[2] = 'x';
} else {
- if (omd->cr_openflags & FMODE_READ)
+ if (omd->cr_openflags & MDS_FMODE_READ)
mode[0] = 'r';
if (omd->cr_openflags &
- (FMODE_WRITE |
+ (MDS_FMODE_WRITE |
MDS_OPEN_TRUNC |
MDS_OPEN_APPEND))
mode[1] = 'w';
mode[2] = 'x';
} else {
if (__le32_to_cpu(omd->cr_openflags) &
- FMODE_READ)
+ MDS_FMODE_READ)
mode[0] = 'r';
if (__le32_to_cpu(omd->cr_openflags) &
- (FMODE_WRITE | MDS_OPEN_TRUNC | MDS_OPEN_APPEND))
+ (MDS_FMODE_WRITE | MDS_OPEN_TRUNC | MDS_OPEN_APPEND))
mode[1] = 'w';
}