Lines Matching +full:buffered +full:- +full:positive
1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
48 /* Return 0 on success or positive error */
56 xfs_bulkstat_to_bstat(breq->mp, &bs1, bstat); in xfs_fsbulkstat_one_fmt()
57 if (copy_to_user(breq->ubuffer, &bs1, sizeof(bs1))) in xfs_fsbulkstat_one_fmt()
58 return -EFAULT; in xfs_fsbulkstat_one_fmt()
70 if (copy_to_user(breq->ubuffer, &ig1, sizeof(struct xfs_inogrp))) in xfs_fsinumbers_fmt()
71 return -EFAULT; in xfs_fsinumbers_fmt()
81 struct xfs_mount *mp = XFS_I(file_inode(file))->i_mount; in xfs_ioc_fsbulkstat()
95 return -EPERM; in xfs_ioc_fsbulkstat()
98 return -EIO; in xfs_ioc_fsbulkstat()
101 return -EFAULT; in xfs_ioc_fsbulkstat()
104 return -EFAULT; in xfs_ioc_fsbulkstat()
107 return -EINVAL; in xfs_ioc_fsbulkstat()
110 return -EINVAL; in xfs_ioc_fsbulkstat()
129 lastino = breq.startino - 1; in xfs_ioc_fsbulkstat()
137 lastino = breq.startino - 1; in xfs_ioc_fsbulkstat()
145 return -EFAULT; in xfs_ioc_fsbulkstat()
149 return -EFAULT; in xfs_ioc_fsbulkstat()
154 /* Return 0 on success or positive error */
160 if (copy_to_user(breq->ubuffer, bstat, sizeof(struct xfs_bulkstat))) in xfs_bulkstat_fmt()
161 return -EFAULT; in xfs_bulkstat_fmt()
168 * should proceed; -ECANCELED if there's nothing to do; or the usual
178 if (hdr->icount == 0 || in xfs_bulk_ireq_setup()
179 (hdr->flags & ~XFS_BULK_IREQ_FLAGS_ALL) || in xfs_bulk_ireq_setup()
180 memchr_inv(hdr->reserved, 0, sizeof(hdr->reserved))) in xfs_bulk_ireq_setup()
181 return -EINVAL; in xfs_bulk_ireq_setup()
183 breq->startino = hdr->ino; in xfs_bulk_ireq_setup()
184 breq->ubuffer = ubuffer; in xfs_bulk_ireq_setup()
185 breq->icount = hdr->icount; in xfs_bulk_ireq_setup()
186 breq->ocount = 0; in xfs_bulk_ireq_setup()
187 breq->flags = 0; in xfs_bulk_ireq_setup()
194 if (hdr->flags & XFS_BULK_IREQ_SPECIAL) { in xfs_bulk_ireq_setup()
195 if (hdr->flags & XFS_BULK_IREQ_AGNO) in xfs_bulk_ireq_setup()
196 return -EINVAL; in xfs_bulk_ireq_setup()
198 switch (hdr->ino) { in xfs_bulk_ireq_setup()
200 breq->startino = mp->m_sb.sb_rootino; in xfs_bulk_ireq_setup()
203 return -EINVAL; in xfs_bulk_ireq_setup()
205 breq->icount = 1; in xfs_bulk_ireq_setup()
210 * If @hdr->ino is zero, we start iterating in that AG. If @hdr->ino is in xfs_bulk_ireq_setup()
213 if (hdr->flags & XFS_BULK_IREQ_AGNO) { in xfs_bulk_ireq_setup()
214 if (hdr->agno >= mp->m_sb.sb_agcount) in xfs_bulk_ireq_setup()
215 return -EINVAL; in xfs_bulk_ireq_setup()
217 if (breq->startino == 0) in xfs_bulk_ireq_setup()
218 breq->startino = XFS_AGINO_TO_INO(mp, hdr->agno, 0); in xfs_bulk_ireq_setup()
219 else if (XFS_INO_TO_AGNO(mp, breq->startino) < hdr->agno) in xfs_bulk_ireq_setup()
220 return -EINVAL; in xfs_bulk_ireq_setup()
222 breq->iwalk_flags |= XFS_IWALK_SAME_AG; in xfs_bulk_ireq_setup()
225 if (XFS_INO_TO_AGNO(mp, breq->startino) > hdr->agno) in xfs_bulk_ireq_setup()
226 return -ECANCELED; in xfs_bulk_ireq_setup()
227 } else if (hdr->agno) in xfs_bulk_ireq_setup()
228 return -EINVAL; in xfs_bulk_ireq_setup()
231 if (XFS_INO_TO_AGNO(mp, breq->startino) >= mp->m_sb.sb_agcount) in xfs_bulk_ireq_setup()
232 return -ECANCELED; in xfs_bulk_ireq_setup()
234 if (hdr->flags & XFS_BULK_IREQ_NREXT64) in xfs_bulk_ireq_setup()
235 breq->flags |= XFS_IBULK_NREXT64; in xfs_bulk_ireq_setup()
238 if (hdr->flags & XFS_BULK_IREQ_METADIR) in xfs_bulk_ireq_setup()
239 breq->flags |= XFS_IBULK_METADIR; in xfs_bulk_ireq_setup()
253 hdr->ino = breq->startino; in xfs_bulk_ireq_teardown()
254 hdr->ocount = breq->ocount; in xfs_bulk_ireq_teardown()
264 struct xfs_mount *mp = XFS_I(file_inode(file))->i_mount; in xfs_ioc_bulkstat()
273 return -EPERM; in xfs_ioc_bulkstat()
276 return -EIO; in xfs_ioc_bulkstat()
278 if (copy_from_user(&hdr, &arg->hdr, sizeof(hdr))) in xfs_ioc_bulkstat()
279 return -EFAULT; in xfs_ioc_bulkstat()
281 error = xfs_bulk_ireq_setup(mp, &hdr, &breq, arg->bulkstat); in xfs_ioc_bulkstat()
282 if (error == -ECANCELED) in xfs_ioc_bulkstat()
293 if (copy_to_user(&arg->hdr, &hdr, sizeof(hdr))) in xfs_ioc_bulkstat()
294 return -EFAULT; in xfs_ioc_bulkstat()
304 if (copy_to_user(breq->ubuffer, igrp, sizeof(struct xfs_inumbers))) in xfs_inumbers_fmt()
305 return -EFAULT; in xfs_inumbers_fmt()
323 return -EPERM; in xfs_ioc_inumbers()
326 return -EIO; in xfs_ioc_inumbers()
328 if (copy_from_user(&hdr, &arg->hdr, sizeof(hdr))) in xfs_ioc_inumbers()
329 return -EFAULT; in xfs_ioc_inumbers()
332 return -EINVAL; in xfs_ioc_inumbers()
334 error = xfs_bulk_ireq_setup(mp, &hdr, &breq, arg->inumbers); in xfs_ioc_inumbers()
335 if (error == -ECANCELED) in xfs_ioc_inumbers()
346 if (copy_to_user(&arg->hdr, &hdr, sizeof(hdr))) in xfs_ioc_inumbers()
347 return -EFAULT; in xfs_ioc_inumbers()
373 return -EFAULT; in xfs_ioc_fsgeometry()
387 return -EFAULT; in xfs_ioc_ag_geometry()
389 return -EINVAL; in xfs_ioc_ag_geometry()
391 return -EINVAL; in xfs_ioc_ag_geometry()
395 return -EINVAL; in xfs_ioc_ag_geometry()
403 return -EFAULT; in xfs_ioc_ag_geometry()
417 return -EFAULT; in xfs_ioc_rtgroup_geometry()
419 return -EINVAL; in xfs_ioc_rtgroup_geometry()
421 return -EINVAL; in xfs_ioc_rtgroup_geometry()
423 return -EINVAL; in xfs_ioc_rtgroup_geometry()
427 return -EINVAL; in xfs_ioc_rtgroup_geometry()
435 return -EFAULT; in xfs_ioc_rtgroup_geometry()
449 struct xfs_mount *mp = ip->i_mount; in xfs_fill_fsxattr()
454 if (ip->i_diflags & XFS_DIFLAG_EXTSIZE) { in xfs_fill_fsxattr()
455 fa->fsx_extsize = XFS_FSB_TO_B(mp, ip->i_extsize); in xfs_fill_fsxattr()
456 } else if (ip->i_diflags & XFS_DIFLAG_EXTSZINHERIT) { in xfs_fill_fsxattr()
462 if ((ip->i_diflags & XFS_DIFLAG_RTINHERIT) && in xfs_fill_fsxattr()
463 xfs_extlen_to_rtxmod(mp, ip->i_extsize) > 0) { in xfs_fill_fsxattr()
464 fa->fsx_xflags &= ~(FS_XFLAG_EXTSIZE | in xfs_fill_fsxattr()
466 fa->fsx_extsize = 0; in xfs_fill_fsxattr()
468 fa->fsx_extsize = XFS_FSB_TO_B(mp, ip->i_extsize); in xfs_fill_fsxattr()
472 if (ip->i_diflags2 & XFS_DIFLAG2_COWEXTSIZE) { in xfs_fill_fsxattr()
478 if ((ip->i_diflags & XFS_DIFLAG_RTINHERIT) && in xfs_fill_fsxattr()
479 ip->i_cowextsize % mp->m_sb.sb_rextsize > 0) { in xfs_fill_fsxattr()
480 fa->fsx_xflags &= ~FS_XFLAG_COWEXTSIZE; in xfs_fill_fsxattr()
481 fa->fsx_cowextsize = 0; in xfs_fill_fsxattr()
483 fa->fsx_cowextsize = XFS_FSB_TO_B(mp, ip->i_cowextsize); in xfs_fill_fsxattr()
487 fa->fsx_projid = ip->i_projid; in xfs_fill_fsxattr()
489 fa->fsx_nextents = xfs_iext_count(ifp); in xfs_fill_fsxattr()
491 fa->fsx_nextents = xfs_ifork_nextents(ifp); in xfs_fill_fsxattr()
528 struct xfs_mount *mp = ip->i_mount; in xfs_ioctl_setattr_xflags()
529 bool rtflag = (fa->fsx_xflags & FS_XFLAG_REALTIME); in xfs_ioctl_setattr_xflags()
535 return -EINVAL; in xfs_ioctl_setattr_xflags()
543 (mp->m_ddev_targp->bt_daxdev == NULL || in xfs_ioctl_setattr_xflags()
544 (mp->m_rtdev_targp && in xfs_ioctl_setattr_xflags()
545 mp->m_rtdev_targp->bt_daxdev == NULL))) in xfs_ioctl_setattr_xflags()
546 return -EINVAL; in xfs_ioctl_setattr_xflags()
551 if (mp->m_sb.sb_rblocks == 0 || mp->m_sb.sb_rextsize == 0 || in xfs_ioctl_setattr_xflags()
552 xfs_extlen_to_rtxmod(mp, ip->i_extsize)) in xfs_ioctl_setattr_xflags()
553 return -EINVAL; in xfs_ioctl_setattr_xflags()
557 i_flags2 = xfs_flags2diflags2(ip, fa->fsx_xflags); in xfs_ioctl_setattr_xflags()
559 return -EINVAL; in xfs_ioctl_setattr_xflags()
561 ip->i_diflags = xfs_flags2diflags(ip, fa->fsx_xflags); in xfs_ioctl_setattr_xflags()
562 ip->i_diflags2 = i_flags2; in xfs_ioctl_setattr_xflags()
570 if (rtflag != XFS_IS_REALTIME_INODE(ip) && S_ISREG(VFS_I(ip)->i_mode)) in xfs_ioctl_setattr_xflags()
584 struct xfs_mount *mp = ip->i_mount; in xfs_ioctl_setattr_prepare_dax()
587 if (S_ISDIR(inode->i_mode)) in xfs_ioctl_setattr_prepare_dax()
593 if (((fa->fsx_xflags & FS_XFLAG_DAX) && in xfs_ioctl_setattr_prepare_dax()
594 !(ip->i_diflags2 & XFS_DIFLAG2_DAX)) || in xfs_ioctl_setattr_prepare_dax()
595 (!(fa->fsx_xflags & FS_XFLAG_DAX) && in xfs_ioctl_setattr_prepare_dax()
596 (ip->i_diflags2 & XFS_DIFLAG2_DAX))) in xfs_ioctl_setattr_prepare_dax()
611 struct xfs_mount *mp = ip->i_mount; in xfs_ioctl_setattr_get_trans()
613 int error = -EROFS; in xfs_ioctl_setattr_get_trans()
617 error = -EIO; in xfs_ioctl_setattr_get_trans()
644 struct xfs_mount *mp = ip->i_mount; in xfs_ioctl_setattr_check_extsize()
648 if (!fa->fsx_valid) in xfs_ioctl_setattr_check_extsize()
651 if (S_ISREG(VFS_I(ip)->i_mode) && xfs_inode_has_filedata(ip) && in xfs_ioctl_setattr_check_extsize()
652 XFS_FSB_TO_B(mp, ip->i_extsize) != fa->fsx_extsize) in xfs_ioctl_setattr_check_extsize()
653 return -EINVAL; in xfs_ioctl_setattr_check_extsize()
655 if (fa->fsx_extsize & mp->m_blockmask) in xfs_ioctl_setattr_check_extsize()
656 return -EINVAL; in xfs_ioctl_setattr_check_extsize()
658 new_diflags = xfs_flags2diflags(ip, fa->fsx_xflags); in xfs_ioctl_setattr_check_extsize()
670 rtextsize_bytes = XFS_FSB_TO_B(mp, mp->m_sb.sb_rextsize); in xfs_ioctl_setattr_check_extsize()
671 if (fa->fsx_extsize % rtextsize_bytes) in xfs_ioctl_setattr_check_extsize()
672 return -EINVAL; in xfs_ioctl_setattr_check_extsize()
675 failaddr = xfs_inode_validate_extsize(ip->i_mount, in xfs_ioctl_setattr_check_extsize()
676 XFS_B_TO_FSB(mp, fa->fsx_extsize), in xfs_ioctl_setattr_check_extsize()
677 VFS_I(ip)->i_mode, new_diflags); in xfs_ioctl_setattr_check_extsize()
678 return failaddr != NULL ? -EINVAL : 0; in xfs_ioctl_setattr_check_extsize()
686 struct xfs_mount *mp = ip->i_mount; in xfs_ioctl_setattr_check_cowextsize()
691 if (!fa->fsx_valid) in xfs_ioctl_setattr_check_cowextsize()
694 if (fa->fsx_cowextsize & mp->m_blockmask) in xfs_ioctl_setattr_check_cowextsize()
695 return -EINVAL; in xfs_ioctl_setattr_check_cowextsize()
697 new_diflags = xfs_flags2diflags(ip, fa->fsx_xflags); in xfs_ioctl_setattr_check_cowextsize()
698 new_diflags2 = xfs_flags2diflags2(ip, fa->fsx_xflags); in xfs_ioctl_setattr_check_cowextsize()
700 failaddr = xfs_inode_validate_cowextsize(ip->i_mount, in xfs_ioctl_setattr_check_cowextsize()
701 XFS_B_TO_FSB(mp, fa->fsx_cowextsize), in xfs_ioctl_setattr_check_cowextsize()
702 VFS_I(ip)->i_mode, new_diflags, new_diflags2); in xfs_ioctl_setattr_check_cowextsize()
703 return failaddr != NULL ? -EINVAL : 0; in xfs_ioctl_setattr_check_cowextsize()
711 if (!fa->fsx_valid) in xfs_ioctl_setattr_check_projid()
715 if (fa->fsx_projid > (uint16_t)-1 && in xfs_ioctl_setattr_check_projid()
716 !xfs_has_projid32(ip->i_mount)) in xfs_ioctl_setattr_check_projid()
717 return -EINVAL; in xfs_ioctl_setattr_check_projid()
728 struct xfs_mount *mp = ip->i_mount; in xfs_fileattr_set()
736 if (!fa->fsx_valid) { in xfs_fileattr_set()
737 if (fa->flags & ~(FS_IMMUTABLE_FL | FS_APPEND_FL | in xfs_fileattr_set()
740 return -EOPNOTSUPP; in xfs_fileattr_set()
755 if (fa->fsx_valid && XFS_IS_QUOTA_ON(mp)) { in xfs_fileattr_set()
756 error = xfs_qm_vop_dqalloc(ip, VFS_I(ip)->i_uid, in xfs_fileattr_set()
757 VFS_I(ip)->i_gid, fa->fsx_projid, in xfs_fileattr_set()
783 if (!fa->fsx_valid) in xfs_fileattr_set()
789 * The set-user-ID and set-group-ID bits of a file will be cleared upon in xfs_fileattr_set()
793 if ((VFS_I(ip)->i_mode & (S_ISUID|S_ISGID)) && in xfs_fileattr_set()
795 VFS_I(ip)->i_mode &= ~(S_ISUID|S_ISGID); in xfs_fileattr_set()
798 if (ip->i_projid != fa->fsx_projid) { in xfs_fileattr_set()
801 &ip->i_pdquot, pdqp); in xfs_fileattr_set()
803 ip->i_projid = fa->fsx_projid; in xfs_fileattr_set()
811 if (ip->i_diflags & (XFS_DIFLAG_EXTSIZE | XFS_DIFLAG_EXTSZINHERIT)) in xfs_fileattr_set()
812 ip->i_extsize = XFS_B_TO_FSB(mp, fa->fsx_extsize); in xfs_fileattr_set()
814 ip->i_extsize = 0; in xfs_fileattr_set()
817 if (ip->i_diflags2 & XFS_DIFLAG2_COWEXTSIZE) in xfs_fileattr_set()
818 ip->i_cowextsize = XFS_B_TO_FSB(mp, fa->fsx_cowextsize); in xfs_fileattr_set()
820 ip->i_cowextsize = 0; in xfs_fileattr_set()
847 if (put_user(p->bmv_offset, &u->bmv_offset) || in xfs_getbmap_format()
848 put_user(p->bmv_block, &u->bmv_block) || in xfs_getbmap_format()
849 put_user(p->bmv_length, &u->bmv_length) || in xfs_getbmap_format()
850 put_user(0, &u->bmv_count) || in xfs_getbmap_format()
851 put_user(0, &u->bmv_entries)) in xfs_getbmap_format()
855 if (put_user(0, &u->bmv_iflags) || in xfs_getbmap_format()
856 put_user(p->bmv_oflags, &u->bmv_oflags) || in xfs_getbmap_format()
857 put_user(0, &u->bmv_unused1) || in xfs_getbmap_format()
858 put_user(0, &u->bmv_unused2)) in xfs_getbmap_format()
886 return -EINVAL; in xfs_ioc_getbmap()
890 return -EFAULT; in xfs_ioc_getbmap()
893 return -EINVAL; in xfs_ioc_getbmap()
895 return -ENOMEM; in xfs_ioc_getbmap()
899 return -ENOMEM; in xfs_ioc_getbmap()
905 error = -EFAULT; in xfs_ioc_getbmap()
929 CLASS(fd, f)((int)sxp->sx_fdtarget); in xfs_ioc_swapext()
931 return -EINVAL; in xfs_ioc_swapext()
933 if (!(fd_file(f)->f_mode & FMODE_WRITE) || in xfs_ioc_swapext()
934 !(fd_file(f)->f_mode & FMODE_READ) || in xfs_ioc_swapext()
935 (fd_file(f)->f_flags & O_APPEND)) in xfs_ioc_swapext()
936 return -EBADF; in xfs_ioc_swapext()
938 CLASS(fd, tmp)((int)sxp->sx_fdtmp); in xfs_ioc_swapext()
940 return -EINVAL; in xfs_ioc_swapext()
942 if (!(fd_file(tmp)->f_mode & FMODE_WRITE) || in xfs_ioc_swapext()
943 !(fd_file(tmp)->f_mode & FMODE_READ) || in xfs_ioc_swapext()
944 (fd_file(tmp)->f_flags & O_APPEND)) in xfs_ioc_swapext()
945 return -EBADF; in xfs_ioc_swapext()
949 return -EINVAL; in xfs_ioc_swapext()
956 if (fd_file(f)->f_op != &xfs_file_operations || in xfs_ioc_swapext()
957 fd_file(tmp)->f_op != &xfs_file_operations) in xfs_ioc_swapext()
958 return -EINVAL; in xfs_ioc_swapext()
963 if (ip->i_mount != tip->i_mount) in xfs_ioc_swapext()
964 return -EINVAL; in xfs_ioc_swapext()
966 if (ip->i_ino == tip->i_ino) in xfs_ioc_swapext()
967 return -EINVAL; in xfs_ioc_swapext()
969 if (xfs_is_shutdown(ip->i_mount)) in xfs_ioc_swapext()
970 return -EIO; in xfs_ioc_swapext()
980 struct xfs_sb *sbp = &mp->m_sb; in xfs_ioc_getlabel()
984 BUILD_BUG_ON(sizeof(sbp->sb_fname) > FSLABEL_MAX); in xfs_ioc_getlabel()
987 spin_lock(&mp->m_sb_lock); in xfs_ioc_getlabel()
988 memtostr_pad(label, sbp->sb_fname); in xfs_ioc_getlabel()
989 spin_unlock(&mp->m_sb_lock); in xfs_ioc_getlabel()
992 return -EFAULT; in xfs_ioc_getlabel()
1002 struct xfs_sb *sbp = &mp->m_sb; in xfs_ioc_setlabel()
1008 return -EPERM; in xfs_ioc_setlabel()
1016 return -EFAULT; in xfs_ioc_setlabel()
1018 if (len > sizeof(sbp->sb_fname)) in xfs_ioc_setlabel()
1019 return -EINVAL; in xfs_ioc_setlabel()
1025 spin_lock(&mp->m_sb_lock); in xfs_ioc_setlabel()
1026 memset(sbp->sb_fname, 0, sizeof(sbp->sb_fname)); in xfs_ioc_setlabel()
1027 memcpy(sbp->sb_fname, label, len); in xfs_ioc_setlabel()
1028 spin_unlock(&mp->m_sb_lock); in xfs_ioc_setlabel()
1036 * buffered reads from userspace (i.e. from blkid) are invalidated, in xfs_ioc_setlabel()
1037 * and userspace will see the newly-written label. in xfs_ioc_setlabel()
1045 mutex_lock(&mp->m_growlock); in xfs_ioc_setlabel()
1047 mutex_unlock(&mp->m_growlock); in xfs_ioc_setlabel()
1049 invalidate_bdev(mp->m_ddev_targp->bt_bdev); in xfs_ioc_setlabel()
1050 if (xfs_has_rtsb(mp) && mp->m_rtdev_targp) in xfs_ioc_setlabel()
1051 invalidate_bdev(mp->m_rtdev_targp->bt_bdev); in xfs_ioc_setlabel()
1063 if (src->eof_version != XFS_EOFBLOCKS_VERSION) in xfs_fs_eofblocks_from_user()
1064 return -EINVAL; in xfs_fs_eofblocks_from_user()
1066 if (src->eof_flags & ~XFS_EOF_FLAGS_VALID) in xfs_fs_eofblocks_from_user()
1067 return -EINVAL; in xfs_fs_eofblocks_from_user()
1069 if (memchr_inv(&src->pad32, 0, sizeof(src->pad32)) || in xfs_fs_eofblocks_from_user()
1070 memchr_inv(src->pad64, 0, sizeof(src->pad64))) in xfs_fs_eofblocks_from_user()
1071 return -EINVAL; in xfs_fs_eofblocks_from_user()
1073 dst->icw_flags = 0; in xfs_fs_eofblocks_from_user()
1074 if (src->eof_flags & XFS_EOF_FLAGS_SYNC) in xfs_fs_eofblocks_from_user()
1075 dst->icw_flags |= XFS_ICWALK_FLAG_SYNC; in xfs_fs_eofblocks_from_user()
1076 if (src->eof_flags & XFS_EOF_FLAGS_UID) in xfs_fs_eofblocks_from_user()
1077 dst->icw_flags |= XFS_ICWALK_FLAG_UID; in xfs_fs_eofblocks_from_user()
1078 if (src->eof_flags & XFS_EOF_FLAGS_GID) in xfs_fs_eofblocks_from_user()
1079 dst->icw_flags |= XFS_ICWALK_FLAG_GID; in xfs_fs_eofblocks_from_user()
1080 if (src->eof_flags & XFS_EOF_FLAGS_PRID) in xfs_fs_eofblocks_from_user()
1081 dst->icw_flags |= XFS_ICWALK_FLAG_PRID; in xfs_fs_eofblocks_from_user()
1082 if (src->eof_flags & XFS_EOF_FLAGS_MINFILESIZE) in xfs_fs_eofblocks_from_user()
1083 dst->icw_flags |= XFS_ICWALK_FLAG_MINFILESIZE; in xfs_fs_eofblocks_from_user()
1085 dst->icw_prid = src->eof_prid; in xfs_fs_eofblocks_from_user()
1086 dst->icw_min_file_size = src->eof_min_file_size; in xfs_fs_eofblocks_from_user()
1088 dst->icw_uid = INVALID_UID; in xfs_fs_eofblocks_from_user()
1089 if (src->eof_flags & XFS_EOF_FLAGS_UID) { in xfs_fs_eofblocks_from_user()
1090 dst->icw_uid = make_kuid(current_user_ns(), src->eof_uid); in xfs_fs_eofblocks_from_user()
1091 if (!uid_valid(dst->icw_uid)) in xfs_fs_eofblocks_from_user()
1092 return -EINVAL; in xfs_fs_eofblocks_from_user()
1095 dst->icw_gid = INVALID_GID; in xfs_fs_eofblocks_from_user()
1096 if (src->eof_flags & XFS_EOF_FLAGS_GID) { in xfs_fs_eofblocks_from_user()
1097 dst->icw_gid = make_kgid(current_user_ns(), src->eof_gid); in xfs_fs_eofblocks_from_user()
1098 if (!gid_valid(dst->icw_gid)) in xfs_fs_eofblocks_from_user()
1099 return -EINVAL; in xfs_fs_eofblocks_from_user()
1110 struct xfs_mount *mp = XFS_I(file_inode(filp))->i_mount; in xfs_ioctl_getset_resblocks()
1115 return -EPERM; in xfs_ioctl_getset_resblocks()
1119 return -EROFS; in xfs_ioctl_getset_resblocks()
1122 return -EFAULT; in xfs_ioctl_getset_resblocks()
1133 spin_lock(&mp->m_sb_lock); in xfs_ioctl_getset_resblocks()
1134 fsop.resblks = mp->m_free[XC_FREE_BLOCKS].res_total; in xfs_ioctl_getset_resblocks()
1135 fsop.resblks_avail = mp->m_free[XC_FREE_BLOCKS].res_avail; in xfs_ioctl_getset_resblocks()
1136 spin_unlock(&mp->m_sb_lock); in xfs_ioctl_getset_resblocks()
1139 return -EFAULT; in xfs_ioctl_getset_resblocks()
1149 .allocino = percpu_counter_read_positive(&mp->m_icount), in xfs_ioctl_fs_counts()
1150 .freeino = percpu_counter_read_positive(&mp->m_ifree), in xfs_ioctl_fs_counts()
1151 .freedata = xfs_estimate_freecounter(mp, XC_FREE_BLOCKS) - in xfs_ioctl_fs_counts()
1157 return -EFAULT; in xfs_ioctl_fs_counts()
1162 * These long-unused ioctls were removed from the official ioctl API in 5.17,
1171 * Note: some of the ioctl's return positive numbers as a
1184 struct xfs_mount *mp = ip->i_mount; in xfs_file_ioctl()
1203 current->comm); in xfs_file_ioctl()
1204 return -ENOTTY; in xfs_file_ioctl()
1209 error = vfs_getattr(&filp->f_path, &st, STATX_DIOALIGN, 0); in xfs_file_ioctl()
1220 da.d_maxiosz = INT_MAX & ~(da.d_miniosz - 1); in xfs_file_ioctl()
1222 return -EFAULT; in xfs_file_ioctl()
1249 return put_user(inode->i_generation, (int __user *)arg); in xfs_file_ioctl()
1276 return -EFAULT; in xfs_file_ioctl()
1283 return -EFAULT; in xfs_file_ioctl()
1291 return -EFAULT; in xfs_file_ioctl()
1304 return -EFAULT; in xfs_file_ioctl()
1324 return -EFAULT; in xfs_file_ioctl()
1338 return -EFAULT; in xfs_file_ioctl()
1352 return -EFAULT; in xfs_file_ioctl()
1366 return -EPERM; in xfs_file_ioctl()
1369 return -EFAULT; in xfs_file_ioctl()
1378 return -EPERM; in xfs_file_ioctl()
1381 return -EFAULT; in xfs_file_ioctl()
1388 return -EPERM; in xfs_file_ioctl()
1397 return -EPERM; in xfs_file_ioctl()
1400 return -EROFS; in xfs_file_ioctl()
1403 return -EFAULT; in xfs_file_ioctl()
1411 sb_start_write(mp->m_super); in xfs_file_ioctl()
1413 sb_end_write(mp->m_super); in xfs_file_ioctl()
1425 return -ENOTTY; in xfs_file_ioctl()