mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
xfs: move eofblocks conversion function to xfs_ioctl.c
Move xfs_fs_eofblocks_from_user into the only file that actually uses it, so that we don't have this function cluttering up the header file. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
parent
df42ce64dc
commit
3737bb2c67
@ -81,41 +81,6 @@ int xfs_inode_ag_iterator_tag(struct xfs_mount *mp,
|
||||
int (*execute)(struct xfs_inode *ip, int flags, void *args),
|
||||
int flags, void *args, int tag);
|
||||
|
||||
static inline int
|
||||
xfs_fs_eofblocks_from_user(
|
||||
struct xfs_fs_eofblocks *src,
|
||||
struct xfs_eofblocks *dst)
|
||||
{
|
||||
if (src->eof_version != XFS_EOFBLOCKS_VERSION)
|
||||
return -EINVAL;
|
||||
|
||||
if (src->eof_flags & ~XFS_EOF_FLAGS_VALID)
|
||||
return -EINVAL;
|
||||
|
||||
if (memchr_inv(&src->pad32, 0, sizeof(src->pad32)) ||
|
||||
memchr_inv(src->pad64, 0, sizeof(src->pad64)))
|
||||
return -EINVAL;
|
||||
|
||||
dst->eof_flags = src->eof_flags;
|
||||
dst->eof_prid = src->eof_prid;
|
||||
dst->eof_min_file_size = src->eof_min_file_size;
|
||||
|
||||
dst->eof_uid = INVALID_UID;
|
||||
if (src->eof_flags & XFS_EOF_FLAGS_UID) {
|
||||
dst->eof_uid = make_kuid(current_user_ns(), src->eof_uid);
|
||||
if (!uid_valid(dst->eof_uid))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dst->eof_gid = INVALID_GID;
|
||||
if (src->eof_flags & XFS_EOF_FLAGS_GID) {
|
||||
dst->eof_gid = make_kgid(current_user_ns(), src->eof_gid);
|
||||
if (!gid_valid(dst->eof_gid))
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int xfs_icache_inode_is_allocated(struct xfs_mount *mp, struct xfs_trans *tp,
|
||||
xfs_ino_t ino, bool *inuse);
|
||||
|
||||
|
@ -2039,6 +2039,41 @@ out:
|
||||
return error;
|
||||
}
|
||||
|
||||
static inline int
|
||||
xfs_fs_eofblocks_from_user(
|
||||
struct xfs_fs_eofblocks *src,
|
||||
struct xfs_eofblocks *dst)
|
||||
{
|
||||
if (src->eof_version != XFS_EOFBLOCKS_VERSION)
|
||||
return -EINVAL;
|
||||
|
||||
if (src->eof_flags & ~XFS_EOF_FLAGS_VALID)
|
||||
return -EINVAL;
|
||||
|
||||
if (memchr_inv(&src->pad32, 0, sizeof(src->pad32)) ||
|
||||
memchr_inv(src->pad64, 0, sizeof(src->pad64)))
|
||||
return -EINVAL;
|
||||
|
||||
dst->eof_flags = src->eof_flags;
|
||||
dst->eof_prid = src->eof_prid;
|
||||
dst->eof_min_file_size = src->eof_min_file_size;
|
||||
|
||||
dst->eof_uid = INVALID_UID;
|
||||
if (src->eof_flags & XFS_EOF_FLAGS_UID) {
|
||||
dst->eof_uid = make_kuid(current_user_ns(), src->eof_uid);
|
||||
if (!uid_valid(dst->eof_uid))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dst->eof_gid = INVALID_GID;
|
||||
if (src->eof_flags & XFS_EOF_FLAGS_GID) {
|
||||
dst->eof_gid = make_kgid(current_user_ns(), src->eof_gid);
|
||||
if (!gid_valid(dst->eof_gid))
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note: some of the ioctl's return positive numbers as a
|
||||
* byte count indicating success, such as readlink_by_handle.
|
||||
|
Loading…
Reference in New Issue
Block a user