GNU Linux-libre 4.19.286-gnu1
[releases.git] / fs / xfs / xfs_itable.h
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__ */