On Tue, Jan 27, 2015 at 02:14:41PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
>
> xfs_ioctl_setxflags doesn't need all of the functionailty in
> xfs_ioctl_setattr() and now we have separate helper functions that
> share the checks and modifications that xfs_ioctl_setxflags
> requires. Hence disaggregate it from xfs_ioctl_setattr() to allow
> further work to be done on xfs_ioctl_setattr.
>
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---
Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>
> fs/xfs/xfs_ioctl.c | 23 ++++++++++++++++++-----
> 1 file changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
> index d06f596..c71f32d 100644
> --- a/fs/xfs/xfs_ioctl.c
> +++ b/fs/xfs/xfs_ioctl.c
> @@ -1321,14 +1321,14 @@ xfs_ioc_getxflags(
>
> STATIC int
> xfs_ioc_setxflags(
> - xfs_inode_t *ip,
> + struct xfs_inode *ip,
> struct file *filp,
> void __user *arg)
> {
> + struct xfs_trans *tp;
> struct fsxattr fa;
> unsigned int flags;
> - unsigned int mask;
> - int error;
> + int error;
>
> if (copy_from_user(&flags, arg, sizeof(flags)))
> return -EFAULT;
> @@ -1338,13 +1338,26 @@ xfs_ioc_setxflags(
> FS_SYNC_FL))
> return -EOPNOTSUPP;
>
> - mask = FSX_XFLAGS;
> fa.fsx_xflags = xfs_merge_ioc_xflags(flags, xfs_ip2xflags(ip));
>
> error = mnt_want_write_file(filp);
> if (error)
> return error;
> - error = xfs_ioctl_setattr(ip, &fa, mask);
> +
> + tp = xfs_ioctl_setattr_get_trans(ip);
> + if (IS_ERR(tp)) {
> + error = PTR_ERR(tp);
> + goto out_drop_write;
> + }
> +
> + error = xfs_ioctl_setattr_xflags(tp, ip, &fa);
> + if (error) {
> + xfs_trans_cancel(tp, 0);
> + goto out_drop_write;
> + }
> +
> + error = xfs_trans_commit(tp, 0);
> +out_drop_write:
> mnt_drop_write_file(filp);
> return error;
> }
> --
> 2.0.0
>
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
|