return -EPERM;
dentry = (struct dentry *)fs_data;
- ll_file_set_flag(ll_i2info(inode), LLIF_SET_ENC_CTX);
+ set_bit(LLIF_SET_ENC_CTX, &ll_i2info(inode)->lli_flags);
rc = ll_vfs_setxattr(dentry, inode, LL_XATTR_NAME_ENCRYPTION_CONTEXT,
ctx, len, XATTR_CREATE);
if (rc)
op_data->op_xvalid |= OP_XVALID_CTIME_SET;
op_data->op_attr_blocks = inode->i_blocks;
op_data->op_attr_flags = ll_inode_to_ext_flags(inode->i_flags);
- if (ll_file_test_flag(ll_i2info(inode), LLIF_PROJECT_INHERIT))
+ if (test_bit(LLIF_PROJECT_INHERIT, &ll_i2info(inode)->lli_flags))
op_data->op_attr_flags |= LUSTRE_PROJINHERIT_FL;
op_data->op_open_handle = och->och_open_handle;
if (och->och_flags & FMODE_WRITE &&
- ll_file_test_and_clear_flag(ll_i2info(inode), LLIF_DATA_MODIFIED))
+ test_and_clear_bit(LLIF_DATA_MODIFIED, &ll_i2info(inode)->lli_flags))
/* For HSM: if inode data has been modified, pack it so that
* MDT can set data dirty flag in the archive. */
op_data->op_bias |= MDS_DATA_MODIFIED;
* POSIX. Solving this problem needs to send an RPC to MDT for each
* read, this will hurt performance.
*/
- if (ll_file_test_and_clear_flag(lli, LLIF_UPDATE_ATIME) ||
+ if (test_and_clear_bit(LLIF_UPDATE_ATIME, &lli->lli_flags) ||
inode->i_atime.tv_sec < lli->lli_atime)
inode->i_atime.tv_sec = lli->lli_atime;
ll_heat_add(inode, CIT_WRITE, result);
ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_WRITE_BYTES,
result);
- ll_file_set_flag(ll_i2info(inode), LLIF_DATA_MODIFIED);
+ set_bit(LLIF_DATA_MODIFIED, &ll_i2info(inode)->lli_flags);
}
CDEBUG(D_VFSTRACE, "result: %zu, original count %zu\n", result, count);
RETURN(-EFAULT);
fsxattr.fsx_xflags = ll_inode_flags_to_xflags(inode->i_flags);
- if (ll_file_test_flag(ll_i2info(inode), LLIF_PROJECT_INHERIT))
+ if (test_bit(LLIF_PROJECT_INHERIT, &ll_i2info(inode)->lli_flags))
fsxattr.fsx_xflags |= FS_XFLAG_PROJINHERIT;
fsxattr.fsx_projid = ll_i2info(inode)->lli_projid;
if (copy_to_user((struct fsxattr __user *)arg,
if (ll_i2info(inode)->lli_projid != fa->fsx_projid)
return -EINVAL;
- if (ll_file_test_flag(ll_i2info(inode), LLIF_PROJECT_INHERIT)) {
+ if (test_bit(LLIF_PROJECT_INHERIT, &ll_i2info(inode)->lli_flags)) {
if (!(fa->fsx_xflags & FS_XFLAG_PROJINHERIT))
return -EINVAL;
} else {
* restore the MDT holds the layout lock so the glimpse will
* block up to the end of restore (getattr will block)
*/
- if (!ll_file_test_flag(lli, LLIF_FILE_RESTORING)) {
+ if (!test_bit(LLIF_FILE_RESTORING, &lli->lli_flags)) {
rc = ll_glimpse_size(inode);
if (rc < 0)
RETURN(rc);
if (unset)
if (lfm->lfm_type == LU_FOREIGN_TYPE_SYMLINK) {
- ll_file_set_flag(lli, LLIF_FOREIGN_REMOVABLE);
+ set_bit(LLIF_FOREIGN_REMOVABLE, &lli->lli_flags);
return true;
} else {
return false;
}
else
return lfm->lfm_type == LU_FOREIGN_TYPE_SYMLINK &&
- !ll_file_test_flag(lli, LLIF_FOREIGN_REMOVABLE);
+ !test_bit(LLIF_FOREIGN_REMOVABLE, &lli->lli_flags);
}
static bool should_preserve_foreign_dir(struct lmv_foreign_md *lfm,
if (unset)
if (lfm->lfm_type == LU_FOREIGN_TYPE_SYMLINK) {
- ll_file_set_flag(lli, LLIF_FOREIGN_REMOVABLE);
+ set_bit(LLIF_FOREIGN_REMOVABLE, &lli->lli_flags);
return true;
} else {
return false;
}
else
return lfm->lfm_type == LU_FOREIGN_TYPE_SYMLINK &&
- !ll_file_test_flag(lli, LLIF_FOREIGN_REMOVABLE);
+ !test_bit(LLIF_FOREIGN_REMOVABLE, &lli->lli_flags);
}
/* XXX
};
-static inline void ll_file_set_flag(struct ll_inode_info *lli,
- enum ll_file_flags flag)
-{
- set_bit(flag, &lli->lli_flags);
-}
-
-static inline void ll_file_clear_flag(struct ll_inode_info *lli,
- enum ll_file_flags flag)
-{
- clear_bit(flag, &lli->lli_flags);
-}
-
-static inline bool ll_file_test_flag(struct ll_inode_info *lli,
- enum ll_file_flags flag)
-{
- return test_bit(flag, &lli->lli_flags);
-}
-
-static inline bool ll_file_test_and_clear_flag(struct ll_inode_info *lli,
- enum ll_file_flags flag)
-{
- return test_and_clear_bit(flag, &lli->lli_flags);
-}
-
int ll_xattr_cache_destroy(struct inode *inode);
int ll_xattr_cache_get(struct inode *inode,
*/
xvalid |= OP_XVALID_OWNEROVERRIDE;
op_data->op_bias |= MDS_DATA_MODIFIED;
- ll_file_clear_flag(lli, LLIF_DATA_MODIFIED);
+ clear_bit(LLIF_DATA_MODIFIED, &lli->lli_flags);
}
if (attr->ia_valid & ATTR_FILE) {
* LLIF_DATA_MODIFIED is not set(see vvp_io_setattr_fini()).
* This way we can save an RPC for common open + trunc
* operation. */
- if (ll_file_test_and_clear_flag(lli, LLIF_DATA_MODIFIED)) {
+ if (test_and_clear_bit(LLIF_DATA_MODIFIED, &lli->lli_flags)) {
struct hsm_state_set hss = {
.hss_valid = HSS_SETMASK,
.hss_setmask = HS_DIRTY,
ext_flags |= ll_inode_to_ext_flags(inode->i_flags) & LUSTRE_ENCRYPT_FL;
inode->i_flags = ll_ext_to_inode_flags(ext_flags);
if (ext_flags & LUSTRE_PROJINHERIT_FL)
- ll_file_set_flag(ll_i2info(inode), LLIF_PROJECT_INHERIT);
+ set_bit(LLIF_PROJECT_INHERIT, &ll_i2info(inode)->lli_flags);
else
- ll_file_clear_flag(ll_i2info(inode), LLIF_PROJECT_INHERIT);
+ clear_bit(LLIF_PROJECT_INHERIT, &ll_i2info(inode)->lli_flags);
}
int ll_update_inode(struct inode *inode, struct lustre_md *md)
* glimpsing updated attrs
*/
if (body->mbo_t_state & MS_RESTORE)
- ll_file_set_flag(lli, LLIF_FILE_RESTORING);
+ set_bit(LLIF_FILE_RESTORING, &lli->lli_flags);
else
- ll_file_clear_flag(lli, LLIF_FILE_RESTORING);
+ clear_bit(LLIF_FILE_RESTORING, &lli->lli_flags);
}
return 0;
}
if (result == 0)
- ll_file_set_flag(lli, LLIF_DATA_MODIFIED);
+ set_bit(LLIF_DATA_MODIFIED, &lli->lli_flags);
}
EXIT;
lli = ll_i2info(inode);
if (bits & MDS_INODELOCK_UPDATE)
- ll_file_set_flag(lli, LLIF_UPDATE_ATIME);
+ set_bit(LLIF_UPDATE_ATIME, &lli->lli_flags);
if ((bits & MDS_INODELOCK_UPDATE) && S_ISDIR(inode->i_mode)) {
CDEBUG(D_INODE, "invalidating inode "DFID" lli = %p, "
GOTO(out, rc);
ll_inode_size_lock(inode);
- if (ll_file_test_and_clear_flag(lli, LLIF_UPDATE_ATIME) ||
+ if (test_and_clear_bit(LLIF_UPDATE_ATIME, &lli->lli_flags) ||
inode->i_atime.tv_sec < lli->lli_atime)
inode->i_atime.tv_sec = lli->lli_atime;
* the MDT holds the layout lock so the glimpse will block up to the
* end of restore (statahead/agl will block)
*/
- if (ll_file_test_flag(lli, LLIF_FILE_RESTORING)) {
+ if (test_bit(LLIF_FILE_RESTORING, &lli->lli_flags)) {
lli->lli_agl_index = 0;
iput(inode);
RETURN_EXIT;
/* today successful restore is the only possible
* case */
/* restore was done, clear restoring state */
- ll_file_clear_flag(ll_i2info(vvp_object_inode(obj)),
- LLIF_FILE_RESTORING);
+ clear_bit(LLIF_FILE_RESTORING,
+ &ll_i2info(vvp_object_inode(obj))->lli_flags);
}
GOTO(out, 0);
}
if (restore_needed && !ios->cis_io->ci_restore_needed) {
/* restore finished, set data modified flag for HSM */
- ll_file_set_flag(ll_i2info(inode), LLIF_DATA_MODIFIED);
+ set_bit(LLIF_DATA_MODIFIED, &ll_i2info(inode)->lli_flags);
}
}
vio->vui_iocb->ki_pos = pos + io->ci_nob - nob;
}
if (result > 0 || result == -EIOCBQUEUED) {
- ll_file_set_flag(ll_i2info(inode), LLIF_DATA_MODIFIED);
+ set_bit(LLIF_DATA_MODIFIED, &ll_i2info(inode)->lli_flags);
if (result != -EIOCBQUEUED && result < cnt)
io->ci_continue = 0;
*/
if (handler->flags == XATTR_SECURITY_T &&
!strcmp(name, "c") &&
- !ll_file_test_and_clear_flag(ll_i2info(inode), LLIF_SET_ENC_CTX))
+ !test_and_clear_bit(LLIF_SET_ENC_CTX, &ll_i2info(inode)->lli_flags))
RETURN(-EPERM);
fullname = kasprintf(GFP_KERNEL, "%s%s", xattr_prefix(handler), name);
LASSERT(lli != NULL);
INIT_LIST_HEAD(&lli->lli_xattrs);
- ll_file_set_flag(lli, LLIF_XATTR_CACHE);
+ set_bit(LLIF_XATTR_CACHE, &lli->lli_flags);
}
/**
*/
static int ll_xattr_cache_valid(struct ll_inode_info *lli)
{
- return ll_file_test_flag(lli, LLIF_XATTR_CACHE);
+ return test_bit(LLIF_XATTR_CACHE, &lli->lli_flags);
}
/**
while (ll_xattr_cache_del(&lli->lli_xattrs, NULL) == 0)
/* empty loop */ ;
- ll_file_clear_flag(lli, LLIF_XATTR_CACHE);
+ clear_bit(LLIF_XATTR_CACHE, &lli->lli_flags);
RETURN(0);
}