Lines Matching refs:fa

468 void fileattr_fill_xflags(struct fileattr *fa, u32 xflags)  in fileattr_fill_xflags()  argument
470 memset(fa, 0, sizeof(*fa)); in fileattr_fill_xflags()
471 fa->fsx_valid = true; in fileattr_fill_xflags()
472 fa->fsx_xflags = xflags; in fileattr_fill_xflags()
473 if (fa->fsx_xflags & FS_XFLAG_IMMUTABLE) in fileattr_fill_xflags()
474 fa->flags |= FS_IMMUTABLE_FL; in fileattr_fill_xflags()
475 if (fa->fsx_xflags & FS_XFLAG_APPEND) in fileattr_fill_xflags()
476 fa->flags |= FS_APPEND_FL; in fileattr_fill_xflags()
477 if (fa->fsx_xflags & FS_XFLAG_SYNC) in fileattr_fill_xflags()
478 fa->flags |= FS_SYNC_FL; in fileattr_fill_xflags()
479 if (fa->fsx_xflags & FS_XFLAG_NOATIME) in fileattr_fill_xflags()
480 fa->flags |= FS_NOATIME_FL; in fileattr_fill_xflags()
481 if (fa->fsx_xflags & FS_XFLAG_NODUMP) in fileattr_fill_xflags()
482 fa->flags |= FS_NODUMP_FL; in fileattr_fill_xflags()
483 if (fa->fsx_xflags & FS_XFLAG_DAX) in fileattr_fill_xflags()
484 fa->flags |= FS_DAX_FL; in fileattr_fill_xflags()
485 if (fa->fsx_xflags & FS_XFLAG_PROJINHERIT) in fileattr_fill_xflags()
486 fa->flags |= FS_PROJINHERIT_FL; in fileattr_fill_xflags()
498 void fileattr_fill_flags(struct fileattr *fa, u32 flags) in fileattr_fill_flags() argument
500 memset(fa, 0, sizeof(*fa)); in fileattr_fill_flags()
501 fa->flags_valid = true; in fileattr_fill_flags()
502 fa->flags = flags; in fileattr_fill_flags()
503 if (fa->flags & FS_SYNC_FL) in fileattr_fill_flags()
504 fa->fsx_xflags |= FS_XFLAG_SYNC; in fileattr_fill_flags()
505 if (fa->flags & FS_IMMUTABLE_FL) in fileattr_fill_flags()
506 fa->fsx_xflags |= FS_XFLAG_IMMUTABLE; in fileattr_fill_flags()
507 if (fa->flags & FS_APPEND_FL) in fileattr_fill_flags()
508 fa->fsx_xflags |= FS_XFLAG_APPEND; in fileattr_fill_flags()
509 if (fa->flags & FS_NODUMP_FL) in fileattr_fill_flags()
510 fa->fsx_xflags |= FS_XFLAG_NODUMP; in fileattr_fill_flags()
511 if (fa->flags & FS_NOATIME_FL) in fileattr_fill_flags()
512 fa->fsx_xflags |= FS_XFLAG_NOATIME; in fileattr_fill_flags()
513 if (fa->flags & FS_DAX_FL) in fileattr_fill_flags()
514 fa->fsx_xflags |= FS_XFLAG_DAX; in fileattr_fill_flags()
515 if (fa->flags & FS_PROJINHERIT_FL) in fileattr_fill_flags()
516 fa->fsx_xflags |= FS_XFLAG_PROJINHERIT; in fileattr_fill_flags()
529 int vfs_fileattr_get(struct dentry *dentry, struct fileattr *fa) in vfs_fileattr_get() argument
536 return inode->i_op->fileattr_get(dentry, fa); in vfs_fileattr_get()
547 int copy_fsxattr_to_user(const struct fileattr *fa, struct fsxattr __user *ufa) in copy_fsxattr_to_user() argument
552 xfa.fsx_xflags = fa->fsx_xflags; in copy_fsxattr_to_user()
553 xfa.fsx_extsize = fa->fsx_extsize; in copy_fsxattr_to_user()
554 xfa.fsx_nextents = fa->fsx_nextents; in copy_fsxattr_to_user()
555 xfa.fsx_projid = fa->fsx_projid; in copy_fsxattr_to_user()
556 xfa.fsx_cowextsize = fa->fsx_cowextsize; in copy_fsxattr_to_user()
565 static int copy_fsxattr_from_user(struct fileattr *fa, in copy_fsxattr_from_user() argument
573 fileattr_fill_xflags(fa, xfa.fsx_xflags); in copy_fsxattr_from_user()
574 fa->fsx_extsize = xfa.fsx_extsize; in copy_fsxattr_from_user()
575 fa->fsx_nextents = xfa.fsx_nextents; in copy_fsxattr_from_user()
576 fa->fsx_projid = xfa.fsx_projid; in copy_fsxattr_from_user()
577 fa->fsx_cowextsize = xfa.fsx_cowextsize; in copy_fsxattr_from_user()
590 struct fileattr *fa) in fileattr_set_prepare() argument
598 if ((fa->flags ^ old_ma->flags) & (FS_APPEND_FL | FS_IMMUTABLE_FL) && in fileattr_set_prepare()
602 err = fscrypt_prepare_setflags(inode, old_ma->flags, fa->flags); in fileattr_set_prepare()
612 if (old_ma->fsx_projid != fa->fsx_projid) in fileattr_set_prepare()
614 if ((old_ma->fsx_xflags ^ fa->fsx_xflags) & in fileattr_set_prepare()
622 if (old_ma->fsx_projid != fa->fsx_projid && in fileattr_set_prepare()
623 !projid_valid(make_kprojid(&init_user_ns, fa->fsx_projid))) in fileattr_set_prepare()
628 if ((fa->fsx_xflags & FS_XFLAG_EXTSIZE) && !S_ISREG(inode->i_mode)) in fileattr_set_prepare()
631 if ((fa->fsx_xflags & FS_XFLAG_EXTSZINHERIT) && in fileattr_set_prepare()
635 if ((fa->fsx_xflags & FS_XFLAG_COWEXTSIZE) && in fileattr_set_prepare()
643 if ((fa->fsx_xflags & FS_XFLAG_DAX) && in fileattr_set_prepare()
648 if (fa->fsx_extsize == 0) in fileattr_set_prepare()
649 fa->fsx_xflags &= ~(FS_XFLAG_EXTSIZE | FS_XFLAG_EXTSZINHERIT); in fileattr_set_prepare()
650 if (fa->fsx_cowextsize == 0) in fileattr_set_prepare()
651 fa->fsx_xflags &= ~FS_XFLAG_COWEXTSIZE; in fileattr_set_prepare()
673 struct fileattr *fa) in vfs_fileattr_set() argument
689 if (fa->flags_valid) { in vfs_fileattr_set()
690 fa->fsx_xflags |= old_ma.fsx_xflags & ~FS_XFLAG_COMMON; in vfs_fileattr_set()
691 fa->fsx_extsize = old_ma.fsx_extsize; in vfs_fileattr_set()
692 fa->fsx_nextents = old_ma.fsx_nextents; in vfs_fileattr_set()
693 fa->fsx_projid = old_ma.fsx_projid; in vfs_fileattr_set()
694 fa->fsx_cowextsize = old_ma.fsx_cowextsize; in vfs_fileattr_set()
696 fa->flags |= old_ma.flags & ~FS_COMMON_FL; in vfs_fileattr_set()
698 err = fileattr_set_prepare(inode, &old_ma, fa); in vfs_fileattr_set()
700 err = inode->i_op->fileattr_set(mnt_userns, dentry, fa); in vfs_fileattr_set()
710 struct fileattr fa = { .flags_valid = true }; /* hint only */ in ioctl_getflags() local
713 err = vfs_fileattr_get(file->f_path.dentry, &fa); in ioctl_getflags()
715 err = put_user(fa.flags, argp); in ioctl_getflags()
723 struct fileattr fa; in ioctl_setflags() local
731 fileattr_fill_flags(&fa, flags); in ioctl_setflags()
732 err = vfs_fileattr_set(mnt_userns, dentry, &fa); in ioctl_setflags()
741 struct fileattr fa = { .fsx_valid = true }; /* hint only */ in ioctl_fsgetxattr() local
744 err = vfs_fileattr_get(file->f_path.dentry, &fa); in ioctl_fsgetxattr()
746 err = copy_fsxattr_to_user(&fa, argp); in ioctl_fsgetxattr()
755 struct fileattr fa; in ioctl_fssetxattr() local
758 err = copy_fsxattr_from_user(&fa, argp); in ioctl_fssetxattr()
762 err = vfs_fileattr_set(mnt_userns, dentry, &fa); in ioctl_fssetxattr()