xfs: clean up the XFS_IOC_FSCOUNTS handler
Split XFS_IOC_FSCOUNTS out of the main xfs_file_ioctl function, and merge the xfs_fs_counts helper into the ioctl handler. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
This commit is contained in:
parent
64f08b152a
commit
c2c2620de7
@ -343,22 +343,6 @@ xfs_growfs_log(
|
||||
return error;
|
||||
}
|
||||
|
||||
/*
|
||||
* exported through ioctl XFS_IOC_FSCOUNTS
|
||||
*/
|
||||
|
||||
void
|
||||
xfs_fs_counts(
|
||||
xfs_mount_t *mp,
|
||||
xfs_fsop_counts_t *cnt)
|
||||
{
|
||||
cnt->allocino = percpu_counter_read_positive(&mp->m_icount);
|
||||
cnt->freeino = percpu_counter_read_positive(&mp->m_ifree);
|
||||
cnt->freedata = percpu_counter_read_positive(&mp->m_fdblocks) -
|
||||
xfs_fdblocks_unavailable(mp);
|
||||
cnt->freertx = percpu_counter_read_positive(&mp->m_frextents);
|
||||
}
|
||||
|
||||
/*
|
||||
* exported through ioctl XFS_IOC_SET_RESBLKS & XFS_IOC_GET_RESBLKS
|
||||
*
|
||||
|
@ -8,7 +8,6 @@
|
||||
|
||||
extern int xfs_growfs_data(struct xfs_mount *mp, struct xfs_growfs_data *in);
|
||||
extern int xfs_growfs_log(struct xfs_mount *mp, struct xfs_growfs_log *in);
|
||||
extern void xfs_fs_counts(xfs_mount_t *mp, xfs_fsop_counts_t *cnt);
|
||||
extern int xfs_reserve_blocks(xfs_mount_t *mp, uint64_t *inval,
|
||||
xfs_fsop_resblks_t *outval);
|
||||
extern int xfs_fs_goingdown(xfs_mount_t *mp, uint32_t inflags);
|
||||
|
@ -1912,6 +1912,24 @@ xfs_ioctl_getset_resblocks(
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
xfs_ioctl_fs_counts(
|
||||
struct xfs_mount *mp,
|
||||
struct xfs_fsop_counts __user *uarg)
|
||||
{
|
||||
struct xfs_fsop_counts out = {
|
||||
.allocino = percpu_counter_read_positive(&mp->m_icount),
|
||||
.freeino = percpu_counter_read_positive(&mp->m_ifree),
|
||||
.freedata = percpu_counter_read_positive(&mp->m_fdblocks) -
|
||||
xfs_fdblocks_unavailable(mp),
|
||||
.freertx = percpu_counter_read_positive(&mp->m_frextents),
|
||||
};
|
||||
|
||||
if (copy_to_user(uarg, &out, sizeof(out)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* These long-unused ioctls were removed from the official ioctl API in 5.17,
|
||||
* but retain these definitions so that we can log warnings about them.
|
||||
@ -2048,15 +2066,8 @@ xfs_file_ioctl(
|
||||
return error;
|
||||
}
|
||||
|
||||
case XFS_IOC_FSCOUNTS: {
|
||||
xfs_fsop_counts_t out;
|
||||
|
||||
xfs_fs_counts(mp, &out);
|
||||
|
||||
if (copy_to_user(arg, &out, sizeof(out)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
case XFS_IOC_FSCOUNTS:
|
||||
return xfs_ioctl_fs_counts(mp, arg);
|
||||
|
||||
case XFS_IOC_SET_RESBLKS:
|
||||
case XFS_IOC_GET_RESBLKS:
|
||||
|
Loading…
Reference in New Issue
Block a user