Clearly name the extended attribute and inode flags so that it is
possible to distinguish them more easily.
Test-Parameters: trivial
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Id1ad2ba6411f69efb2de38e1019940f5fb3ebbe5
Reviewed-on: https://review.whamcloud.com/36519
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
* versions. These flags are set/cleared via FSFILT_IOC_{GET,SET}_FLAGS.
* See b=16526 for a full history.
*/
* versions. These flags are set/cleared via FSFILT_IOC_{GET,SET}_FLAGS.
* See b=16526 for a full history.
*/
-static inline int ll_ext_to_inode_flags(int flags)
+static inline int ll_ext_to_inode_flags(int ext_flags)
- return (((flags & LUSTRE_SYNC_FL) ? S_SYNC : 0) |
- ((flags & LUSTRE_NOATIME_FL) ? S_NOATIME : 0) |
- ((flags & LUSTRE_APPEND_FL) ? S_APPEND : 0) |
- ((flags & LUSTRE_DIRSYNC_FL) ? S_DIRSYNC : 0) |
+ return (((ext_flags & LUSTRE_SYNC_FL) ? S_SYNC : 0) |
+ ((ext_flags & LUSTRE_NOATIME_FL) ? S_NOATIME : 0) |
+ ((ext_flags & LUSTRE_APPEND_FL) ? S_APPEND : 0) |
+ ((ext_flags & LUSTRE_DIRSYNC_FL) ? S_DIRSYNC : 0) |
- ((flags & LUSTRE_ENCRYPT_FL) ? S_ENCRYPTED : 0) |
+ ((ext_flags & LUSTRE_ENCRYPT_FL) ? S_ENCRYPTED : 0) |
- ((flags & LUSTRE_IMMUTABLE_FL) ? S_IMMUTABLE : 0));
+ ((ext_flags & LUSTRE_IMMUTABLE_FL) ? S_IMMUTABLE : 0));
-static inline int ll_inode_to_ext_flags(int iflags)
+static inline int ll_inode_to_ext_flags(int inode_flags)
- return (((iflags & S_SYNC) ? LUSTRE_SYNC_FL : 0) |
- ((iflags & S_NOATIME) ? LUSTRE_NOATIME_FL : 0) |
- ((iflags & S_APPEND) ? LUSTRE_APPEND_FL : 0) |
- ((iflags & S_DIRSYNC) ? LUSTRE_DIRSYNC_FL : 0) |
+ return (((inode_flags & S_SYNC) ? LUSTRE_SYNC_FL : 0) |
+ ((inode_flags & S_NOATIME) ? LUSTRE_NOATIME_FL : 0) |
+ ((inode_flags & S_APPEND) ? LUSTRE_APPEND_FL : 0) |
+ ((inode_flags & S_DIRSYNC) ? LUSTRE_DIRSYNC_FL : 0) |
- ((iflags & S_ENCRYPTED) ? LUSTRE_ENCRYPT_FL : 0) |
+ ((inode_flags & S_ENCRYPTED) ? LUSTRE_ENCRYPT_FL : 0) |
- ((iflags & S_IMMUTABLE) ? LUSTRE_IMMUTABLE_FL : 0));
+ ((inode_flags & S_IMMUTABLE) ? LUSTRE_IMMUTABLE_FL : 0));
}
struct obd_heat_instance {
}
struct obd_heat_instance {
__u32 mbo_mode;
__u32 mbo_uid;
__u32 mbo_gid;
__u32 mbo_mode;
__u32 mbo_uid;
__u32 mbo_gid;
- __u32 mbo_flags; /* LUSTRE_*_FL file attributes */
+ __u32 mbo_flags; /* most replies: LUSTRE_*_FL file attributes,
+ * data_version: OBD_FL_* flags
+ */
__u32 mbo_rdev;
__u32 mbo_nlink; /* #bytes to read in the case of MDS_READPAGE */
__u32 mbo_layout_gen; /* was "generation" until 2.4.0 */
__u32 mbo_rdev;
__u32 mbo_nlink; /* #bytes to read in the case of MDS_READPAGE */
__u32 mbo_layout_gen; /* was "generation" until 2.4.0 */
int ll_ioctl_fssetxattr(struct inode *inode, unsigned int cmd,
unsigned long arg)
{
int ll_ioctl_fssetxattr(struct inode *inode, unsigned int cmd,
unsigned long arg)
{
struct md_op_data *op_data;
struct ptlrpc_request *req = NULL;
struct md_op_data *op_data;
struct ptlrpc_request *req = NULL;
struct fsxattr fsxattr;
struct cl_object *obj;
struct fsxattr fsxattr;
struct cl_object *obj;
- struct iattr *attr;
- int flags;
+ unsigned int inode_flags;
+ int rc = 0;
if (copy_from_user(&fsxattr,
(const struct fsxattr __user *)arg,
if (copy_from_user(&fsxattr,
(const struct fsxattr __user *)arg,
if (IS_ERR(op_data))
RETURN(PTR_ERR(op_data));
if (IS_ERR(op_data))
RETURN(PTR_ERR(op_data));
- flags = ll_xflags_to_inode_flags(fsxattr.fsx_xflags);
- op_data->op_attr_flags = ll_inode_to_ext_flags(flags);
+ inode_flags = ll_xflags_to_inode_flags(fsxattr.fsx_xflags);
+ op_data->op_attr_flags = ll_inode_to_ext_flags(inode_flags);
if (fsxattr.fsx_xflags & FS_XFLAG_PROJINHERIT)
op_data->op_attr_flags |= LUSTRE_PROJINHERIT_FL;
op_data->op_projid = fsxattr.fsx_projid;
op_data->op_xvalid |= OP_XVALID_PROJID | OP_XVALID_FLAGS;
if (fsxattr.fsx_xflags & FS_XFLAG_PROJINHERIT)
op_data->op_attr_flags |= LUSTRE_PROJINHERIT_FL;
op_data->op_projid = fsxattr.fsx_projid;
op_data->op_xvalid |= OP_XVALID_PROJID | OP_XVALID_FLAGS;
- rc = md_setattr(ll_i2sbi(inode)->ll_md_exp, op_data, NULL,
- 0, &req);
+ rc = md_setattr(ll_i2sbi(inode)->ll_md_exp, op_data, NULL, 0, &req);
ptlrpc_req_finished(req);
if (rc)
GOTO(out_fsxattr, rc);
ll_update_inode_flags(inode, op_data->op_attr_flags);
ptlrpc_req_finished(req);
if (rc)
GOTO(out_fsxattr, rc);
ll_update_inode_flags(inode, op_data->op_attr_flags);
- obj = ll_i2info(inode)->lli_clob;
- if (obj == NULL)
- GOTO(out_fsxattr, rc);
- /* Avoiding OST RPC if this is only project ioctl */
+ /* Avoid OST RPC if this is only ioctl setting project inherit flag */
if (fsxattr.fsx_xflags == 0 ||
fsxattr.fsx_xflags == FS_XFLAG_PROJINHERIT)
GOTO(out_fsxattr, rc);
if (fsxattr.fsx_xflags == 0 ||
fsxattr.fsx_xflags == FS_XFLAG_PROJINHERIT)
GOTO(out_fsxattr, rc);
- OBD_ALLOC_PTR(attr);
- if (attr == NULL)
- GOTO(out_fsxattr, rc = -ENOMEM);
+ obj = ll_i2info(inode)->lli_clob;
+ if (obj) {
+ struct iattr attr = { 0 };
+
+ rc = cl_setattr_ost(obj, &attr, OP_XVALID_FLAGS,
+ fsxattr.fsx_xflags);
+ }
- rc = cl_setattr_ost(obj, attr, OP_XVALID_FLAGS,
- fsxattr.fsx_xflags);
- OBD_FREE_PTR(attr);
out_fsxattr:
ll_finish_md_op_data(op_data);
RETURN(rc);
out_fsxattr:
ll_finish_md_op_data(op_data);
RETURN(rc);
((xflags & FS_XFLAG_IMMUTABLE) ? S_IMMUTABLE : 0);
}
((xflags & FS_XFLAG_IMMUTABLE) ? S_IMMUTABLE : 0);
}
-static inline int ll_inode_flags_to_xflags(int flags)
+static inline int ll_inode_flags_to_xflags(int inode_flags)
- return ((flags & S_SYNC) ? FS_XFLAG_SYNC : 0) |
- ((flags & S_NOATIME) ? FS_XFLAG_NOATIME : 0) |
- ((flags & S_APPEND) ? FS_XFLAG_APPEND : 0) |
- ((flags & S_IMMUTABLE) ? FS_XFLAG_IMMUTABLE : 0);
+ return ((inode_flags & S_SYNC) ? FS_XFLAG_SYNC : 0) |
+ ((inode_flags & S_NOATIME) ? FS_XFLAG_NOATIME : 0) |
+ ((inode_flags & S_APPEND) ? FS_XFLAG_APPEND : 0) |
+ ((inode_flags & S_IMMUTABLE) ? FS_XFLAG_IMMUTABLE : 0);
}
int ll_migrate(struct inode *parent, struct file *file,
}
int ll_migrate(struct inode *parent, struct file *file,
int ll_statfs_internal(struct ll_sb_info *sbi, struct obd_statfs *osfs,
u32 flags);
int ll_update_inode(struct inode *inode, struct lustre_md *md);
int ll_statfs_internal(struct ll_sb_info *sbi, struct obd_statfs *osfs,
u32 flags);
int ll_update_inode(struct inode *inode, struct lustre_md *md);
-void ll_update_inode_flags(struct inode *inode, int ext_flags);
+void ll_update_inode_flags(struct inode *inode, unsigned int ext_flags);
int ll_read_inode2(struct inode *inode, void *opaque);
void ll_delete_inode(struct inode *inode);
int ll_iocontrol(struct inode *inode, struct file *file,
int ll_read_inode2(struct inode *inode, void *opaque);
void ll_delete_inode(struct inode *inode);
int ll_iocontrol(struct inode *inode, struct file *file,
mutex_unlock(&lli->lli_size_mutex);
}
mutex_unlock(&lli->lli_size_mutex);
}
-void ll_update_inode_flags(struct inode *inode, int ext_flags)
+void ll_update_inode_flags(struct inode *inode, unsigned int ext_flags)
{
/* do not clear encryption flag */
ext_flags |= ll_inode_to_ext_flags(inode->i_flags) & LUSTRE_ENCRYPT_FL;
{
/* do not clear encryption flag */
ext_flags |= ll_inode_to_ext_flags(inode->i_flags) & LUSTRE_ENCRYPT_FL;