Lines Matching refs:fa

464 void fileattr_fill_xflags(struct fileattr *fa, u32 xflags)  in fileattr_fill_xflags()  argument
466 memset(fa, 0, sizeof(*fa)); in fileattr_fill_xflags()
467 fa->fsx_valid = true; in fileattr_fill_xflags()
468 fa->fsx_xflags = xflags; in fileattr_fill_xflags()
469 if (fa->fsx_xflags & FS_XFLAG_IMMUTABLE) in fileattr_fill_xflags()
470 fa->flags |= FS_IMMUTABLE_FL; in fileattr_fill_xflags()
471 if (fa->fsx_xflags & FS_XFLAG_APPEND) in fileattr_fill_xflags()
472 fa->flags |= FS_APPEND_FL; in fileattr_fill_xflags()
473 if (fa->fsx_xflags & FS_XFLAG_SYNC) in fileattr_fill_xflags()
474 fa->flags |= FS_SYNC_FL; in fileattr_fill_xflags()
475 if (fa->fsx_xflags & FS_XFLAG_NOATIME) in fileattr_fill_xflags()
476 fa->flags |= FS_NOATIME_FL; in fileattr_fill_xflags()
477 if (fa->fsx_xflags & FS_XFLAG_NODUMP) in fileattr_fill_xflags()
478 fa->flags |= FS_NODUMP_FL; in fileattr_fill_xflags()
479 if (fa->fsx_xflags & FS_XFLAG_DAX) in fileattr_fill_xflags()
480 fa->flags |= FS_DAX_FL; in fileattr_fill_xflags()
481 if (fa->fsx_xflags & FS_XFLAG_PROJINHERIT) in fileattr_fill_xflags()
482 fa->flags |= FS_PROJINHERIT_FL; in fileattr_fill_xflags()
494 void fileattr_fill_flags(struct fileattr *fa, u32 flags) in fileattr_fill_flags() argument
496 memset(fa, 0, sizeof(*fa)); in fileattr_fill_flags()
497 fa->flags_valid = true; in fileattr_fill_flags()
498 fa->flags = flags; in fileattr_fill_flags()
499 if (fa->flags & FS_SYNC_FL) in fileattr_fill_flags()
500 fa->fsx_xflags |= FS_XFLAG_SYNC; in fileattr_fill_flags()
501 if (fa->flags & FS_IMMUTABLE_FL) in fileattr_fill_flags()
502 fa->fsx_xflags |= FS_XFLAG_IMMUTABLE; in fileattr_fill_flags()
503 if (fa->flags & FS_APPEND_FL) in fileattr_fill_flags()
504 fa->fsx_xflags |= FS_XFLAG_APPEND; in fileattr_fill_flags()
505 if (fa->flags & FS_NODUMP_FL) in fileattr_fill_flags()
506 fa->fsx_xflags |= FS_XFLAG_NODUMP; in fileattr_fill_flags()
507 if (fa->flags & FS_NOATIME_FL) in fileattr_fill_flags()
508 fa->fsx_xflags |= FS_XFLAG_NOATIME; in fileattr_fill_flags()
509 if (fa->flags & FS_DAX_FL) in fileattr_fill_flags()
510 fa->fsx_xflags |= FS_XFLAG_DAX; in fileattr_fill_flags()
511 if (fa->flags & FS_PROJINHERIT_FL) in fileattr_fill_flags()
512 fa->fsx_xflags |= FS_XFLAG_PROJINHERIT; in fileattr_fill_flags()
525 int vfs_fileattr_get(struct dentry *dentry, struct fileattr *fa) in vfs_fileattr_get() argument
532 return inode->i_op->fileattr_get(dentry, fa); in vfs_fileattr_get()
543 int copy_fsxattr_to_user(const struct fileattr *fa, struct fsxattr __user *ufa) in copy_fsxattr_to_user() argument
548 xfa.fsx_xflags = fa->fsx_xflags; in copy_fsxattr_to_user()
549 xfa.fsx_extsize = fa->fsx_extsize; in copy_fsxattr_to_user()
550 xfa.fsx_nextents = fa->fsx_nextents; in copy_fsxattr_to_user()
551 xfa.fsx_projid = fa->fsx_projid; in copy_fsxattr_to_user()
552 xfa.fsx_cowextsize = fa->fsx_cowextsize; in copy_fsxattr_to_user()
561 static int copy_fsxattr_from_user(struct fileattr *fa, in copy_fsxattr_from_user() argument
569 fileattr_fill_xflags(fa, xfa.fsx_xflags); in copy_fsxattr_from_user()
570 fa->fsx_extsize = xfa.fsx_extsize; in copy_fsxattr_from_user()
571 fa->fsx_nextents = xfa.fsx_nextents; in copy_fsxattr_from_user()
572 fa->fsx_projid = xfa.fsx_projid; in copy_fsxattr_from_user()
573 fa->fsx_cowextsize = xfa.fsx_cowextsize; in copy_fsxattr_from_user()
586 struct fileattr *fa) in fileattr_set_prepare() argument
594 if ((fa->flags ^ old_ma->flags) & (FS_APPEND_FL | FS_IMMUTABLE_FL) && in fileattr_set_prepare()
598 err = fscrypt_prepare_setflags(inode, old_ma->flags, fa->flags); in fileattr_set_prepare()
608 if (old_ma->fsx_projid != fa->fsx_projid) in fileattr_set_prepare()
610 if ((old_ma->fsx_xflags ^ fa->fsx_xflags) & in fileattr_set_prepare()
618 if (old_ma->fsx_projid != fa->fsx_projid && in fileattr_set_prepare()
619 !projid_valid(make_kprojid(&init_user_ns, fa->fsx_projid))) in fileattr_set_prepare()
624 if ((fa->fsx_xflags & FS_XFLAG_EXTSIZE) && !S_ISREG(inode->i_mode)) in fileattr_set_prepare()
627 if ((fa->fsx_xflags & FS_XFLAG_EXTSZINHERIT) && in fileattr_set_prepare()
631 if ((fa->fsx_xflags & FS_XFLAG_COWEXTSIZE) && in fileattr_set_prepare()
639 if ((fa->fsx_xflags & FS_XFLAG_DAX) && in fileattr_set_prepare()
644 if (fa->fsx_extsize == 0) in fileattr_set_prepare()
645 fa->fsx_xflags &= ~(FS_XFLAG_EXTSIZE | FS_XFLAG_EXTSZINHERIT); in fileattr_set_prepare()
646 if (fa->fsx_cowextsize == 0) in fileattr_set_prepare()
647 fa->fsx_xflags &= ~FS_XFLAG_COWEXTSIZE; in fileattr_set_prepare()
669 struct fileattr *fa) in vfs_fileattr_set() argument
685 if (fa->flags_valid) { in vfs_fileattr_set()
686 fa->fsx_xflags |= old_ma.fsx_xflags & ~FS_XFLAG_COMMON; in vfs_fileattr_set()
687 fa->fsx_extsize = old_ma.fsx_extsize; in vfs_fileattr_set()
688 fa->fsx_nextents = old_ma.fsx_nextents; in vfs_fileattr_set()
689 fa->fsx_projid = old_ma.fsx_projid; in vfs_fileattr_set()
690 fa->fsx_cowextsize = old_ma.fsx_cowextsize; in vfs_fileattr_set()
692 fa->flags |= old_ma.flags & ~FS_COMMON_FL; in vfs_fileattr_set()
694 err = fileattr_set_prepare(inode, &old_ma, fa); in vfs_fileattr_set()
696 err = inode->i_op->fileattr_set(idmap, dentry, fa); in vfs_fileattr_set()
706 struct fileattr fa = { .flags_valid = true }; /* hint only */ in ioctl_getflags() local
709 err = vfs_fileattr_get(file->f_path.dentry, &fa); in ioctl_getflags()
711 err = put_user(fa.flags, argp); in ioctl_getflags()
719 struct fileattr fa; in ioctl_setflags() local
727 fileattr_fill_flags(&fa, flags); in ioctl_setflags()
728 err = vfs_fileattr_set(idmap, dentry, &fa); in ioctl_setflags()
737 struct fileattr fa = { .fsx_valid = true }; /* hint only */ in ioctl_fsgetxattr() local
740 err = vfs_fileattr_get(file->f_path.dentry, &fa); in ioctl_fsgetxattr()
742 err = copy_fsxattr_to_user(&fa, argp); in ioctl_fsgetxattr()
751 struct fileattr fa; in ioctl_fssetxattr() local
754 err = copy_fsxattr_from_user(&fa, argp); in ioctl_fssetxattr()
758 err = vfs_fileattr_set(idmap, dentry, &fa); in ioctl_fssetxattr()