1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2000-2001 Silicon Graphics, Inc.  All Rights Reserved.
4  */
5 #ifndef __XFS_ITABLE_H__
6 #define	__XFS_ITABLE_H__
7 
8 /*
9  * xfs_bulkstat() is used to fill in xfs_bstat structures as well as dm_stat
10  * structures (by the dmi library). This is a pointer to a formatter function
11  * that will iget the inode and fill in the appropriate structure.
12  * see xfs_bulkstat_one() and xfs_dm_bulkstat_one() in dmapi_xfs.c
13  */
14 typedef int (*bulkstat_one_pf)(struct xfs_mount	*mp,
15 			       xfs_ino_t	ino,
16 			       void		__user *buffer,
17 			       int		ubsize,
18 			       int		*ubused,
19 			       int		*stat);
20 
21 /*
22  * Values for stat return value.
23  */
24 #define BULKSTAT_RV_NOTHING	0
25 #define BULKSTAT_RV_DIDONE	1
26 #define BULKSTAT_RV_GIVEUP	2
27 
28 /*
29  * Return stat information in bulk (by-inode) for the filesystem.
30  */
31 int					/* error status */
32 xfs_bulkstat(
33 	xfs_mount_t	*mp,		/* mount point for filesystem */
34 	xfs_ino_t	*lastino,	/* last inode returned */
35 	int		*count,		/* size of buffer/count returned */
36 	bulkstat_one_pf formatter,	/* func that'd fill a single buf */
37 	size_t		statstruct_size,/* sizeof struct that we're filling */
38 	char		__user *ubuffer,/* buffer with inode stats */
39 	int		*done);		/* 1 if there are more stats to get */
40 
41 typedef int (*bulkstat_one_fmt_pf)(  /* used size in bytes or negative error */
42 	void			__user *ubuffer, /* buffer to write to */
43 	int			ubsize,		 /* remaining user buffer sz */
44 	int			*ubused,	 /* bytes used by formatter */
45 	const xfs_bstat_t	*buffer);        /* buffer to read from */
46 
47 int
48 xfs_bulkstat_one_int(
49 	xfs_mount_t		*mp,
50 	xfs_ino_t		ino,
51 	void			__user *buffer,
52 	int			ubsize,
53 	bulkstat_one_fmt_pf	formatter,
54 	int			*ubused,
55 	int			*stat);
56 
57 int
58 xfs_bulkstat_one(
59 	xfs_mount_t		*mp,
60 	xfs_ino_t		ino,
61 	void			__user *buffer,
62 	int			ubsize,
63 	int			*ubused,
64 	int			*stat);
65 
66 typedef int (*inumbers_fmt_pf)(
67 	void			__user *ubuffer, /* buffer to write to */
68 	const xfs_inogrp_t	*buffer,	/* buffer to read from */
69 	long			count,		/* # of elements to read */
70 	long			*written);	/* # of bytes written */
71 
72 int
73 xfs_inumbers_fmt(
74 	void			__user *ubuffer, /* buffer to write to */
75 	const xfs_inogrp_t	*buffer,	/* buffer to read from */
76 	long			count,		/* # of elements to read */
77 	long			*written);	/* # of bytes written */
78 
79 int					/* error status */
80 xfs_inumbers(
81 	xfs_mount_t		*mp,	/* mount point for filesystem */
82 	xfs_ino_t		*last,	/* last inode returned */
83 	int			*count,	/* size of buffer/count returned */
84 	void			__user *buffer, /* buffer with inode info */
85 	inumbers_fmt_pf		formatter);
86 
87 #endif	/* __XFS_ITABLE_H__ */
88