1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (c) 2019 Oracle, Inc.
10 /* These must correspond to XFS_SCRUB_TYPE_ */
11 const struct xfrog_scrub_descr xfrog_scrubbers
[XFS_SCRUB_TYPE_NR
] = {
12 [XFS_SCRUB_TYPE_PROBE
] = {
15 .type
= XFROG_SCRUB_TYPE_NONE
,
17 [XFS_SCRUB_TYPE_SB
] = {
19 .descr
= "superblock",
20 .type
= XFROG_SCRUB_TYPE_AGHEADER
,
22 [XFS_SCRUB_TYPE_AGF
] = {
24 .descr
= "free space header",
25 .type
= XFROG_SCRUB_TYPE_AGHEADER
,
27 [XFS_SCRUB_TYPE_AGFL
] = {
30 .type
= XFROG_SCRUB_TYPE_AGHEADER
,
32 [XFS_SCRUB_TYPE_AGI
] = {
34 .descr
= "inode header",
35 .type
= XFROG_SCRUB_TYPE_AGHEADER
,
37 [XFS_SCRUB_TYPE_BNOBT
] = {
39 .descr
= "freesp by block btree",
40 .type
= XFROG_SCRUB_TYPE_PERAG
,
42 [XFS_SCRUB_TYPE_CNTBT
] = {
44 .descr
= "freesp by length btree",
45 .type
= XFROG_SCRUB_TYPE_PERAG
,
47 [XFS_SCRUB_TYPE_INOBT
] = {
49 .descr
= "inode btree",
50 .type
= XFROG_SCRUB_TYPE_PERAG
,
52 [XFS_SCRUB_TYPE_FINOBT
] = {
54 .descr
= "free inode btree",
55 .type
= XFROG_SCRUB_TYPE_PERAG
,
57 [XFS_SCRUB_TYPE_RMAPBT
] = {
59 .descr
= "reverse mapping btree",
60 .type
= XFROG_SCRUB_TYPE_PERAG
,
62 [XFS_SCRUB_TYPE_REFCNTBT
] = {
64 .descr
= "reference count btree",
65 .type
= XFROG_SCRUB_TYPE_PERAG
,
67 [XFS_SCRUB_TYPE_INODE
] = {
69 .descr
= "inode record",
70 .type
= XFROG_SCRUB_TYPE_INODE
,
72 [XFS_SCRUB_TYPE_BMBTD
] = {
74 .descr
= "data block map",
75 .type
= XFROG_SCRUB_TYPE_INODE
,
77 [XFS_SCRUB_TYPE_BMBTA
] = {
79 .descr
= "attr block map",
80 .type
= XFROG_SCRUB_TYPE_INODE
,
82 [XFS_SCRUB_TYPE_BMBTC
] = {
84 .descr
= "CoW block map",
85 .type
= XFROG_SCRUB_TYPE_INODE
,
87 [XFS_SCRUB_TYPE_DIR
] = {
89 .descr
= "directory entries",
90 .type
= XFROG_SCRUB_TYPE_INODE
,
92 [XFS_SCRUB_TYPE_XATTR
] = {
94 .descr
= "extended attributes",
95 .type
= XFROG_SCRUB_TYPE_INODE
,
97 [XFS_SCRUB_TYPE_SYMLINK
] = {
99 .descr
= "symbolic link",
100 .type
= XFROG_SCRUB_TYPE_INODE
,
102 [XFS_SCRUB_TYPE_PARENT
] = {
104 .descr
= "parent pointer",
105 .type
= XFROG_SCRUB_TYPE_INODE
,
107 [XFS_SCRUB_TYPE_RTBITMAP
] = {
109 .descr
= "realtime bitmap",
110 .type
= XFROG_SCRUB_TYPE_FS
,
112 [XFS_SCRUB_TYPE_RTSUM
] = {
114 .descr
= "realtime summary",
115 .type
= XFROG_SCRUB_TYPE_FS
,
117 [XFS_SCRUB_TYPE_UQUOTA
] = {
119 .descr
= "user quotas",
120 .type
= XFROG_SCRUB_TYPE_FS
,
122 [XFS_SCRUB_TYPE_GQUOTA
] = {
124 .descr
= "group quotas",
125 .type
= XFROG_SCRUB_TYPE_FS
,
127 [XFS_SCRUB_TYPE_PQUOTA
] = {
129 .descr
= "project quotas",
130 .type
= XFROG_SCRUB_TYPE_FS
,
132 [XFS_SCRUB_TYPE_FSCOUNTERS
] = {
133 .name
= "fscounters",
134 .descr
= "filesystem summary counters",
135 .type
= XFROG_SCRUB_TYPE_FS
,
136 .flags
= XFROG_SCRUB_DESCR_SUMMARY
,
140 /* Invoke the scrub ioctl. Returns zero or negative error code. */
142 xfrog_scrub_metadata(
144 struct xfs_scrub_metadata
*meta
)
148 ret
= ioctl(xfd
->fd
, XFS_IOC_SCRUB_METADATA
, meta
);