]>
Commit | Line | Data |
---|---|---|
5ef3b66a DW |
1 | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | /* | |
3 | * Copyright (c) 2019 Oracle, Inc. | |
4 | * All Rights Reserved. | |
5 | */ | |
6 | #include "xfs.h" | |
7 | #include "fsgeom.h" | |
8 | #include "scrub.h" | |
9 | ||
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] = { | |
13 | .name = "probe", | |
14 | .descr = "metadata", | |
15 | .type = XFROG_SCRUB_TYPE_NONE, | |
16 | }, | |
17 | [XFS_SCRUB_TYPE_SB] = { | |
18 | .name = "sb", | |
19 | .descr = "superblock", | |
20 | .type = XFROG_SCRUB_TYPE_AGHEADER, | |
21 | }, | |
22 | [XFS_SCRUB_TYPE_AGF] = { | |
23 | .name = "agf", | |
24 | .descr = "free space header", | |
25 | .type = XFROG_SCRUB_TYPE_AGHEADER, | |
26 | }, | |
27 | [XFS_SCRUB_TYPE_AGFL] = { | |
28 | .name = "agfl", | |
29 | .descr = "free list", | |
30 | .type = XFROG_SCRUB_TYPE_AGHEADER, | |
31 | }, | |
32 | [XFS_SCRUB_TYPE_AGI] = { | |
33 | .name = "agi", | |
34 | .descr = "inode header", | |
35 | .type = XFROG_SCRUB_TYPE_AGHEADER, | |
36 | }, | |
37 | [XFS_SCRUB_TYPE_BNOBT] = { | |
38 | .name = "bnobt", | |
39 | .descr = "freesp by block btree", | |
40 | .type = XFROG_SCRUB_TYPE_PERAG, | |
41 | }, | |
42 | [XFS_SCRUB_TYPE_CNTBT] = { | |
43 | .name = "cntbt", | |
44 | .descr = "freesp by length btree", | |
45 | .type = XFROG_SCRUB_TYPE_PERAG, | |
46 | }, | |
47 | [XFS_SCRUB_TYPE_INOBT] = { | |
48 | .name = "inobt", | |
49 | .descr = "inode btree", | |
50 | .type = XFROG_SCRUB_TYPE_PERAG, | |
51 | }, | |
52 | [XFS_SCRUB_TYPE_FINOBT] = { | |
53 | .name = "finobt", | |
54 | .descr = "free inode btree", | |
55 | .type = XFROG_SCRUB_TYPE_PERAG, | |
56 | }, | |
57 | [XFS_SCRUB_TYPE_RMAPBT] = { | |
58 | .name = "rmapbt", | |
59 | .descr = "reverse mapping btree", | |
60 | .type = XFROG_SCRUB_TYPE_PERAG, | |
61 | }, | |
62 | [XFS_SCRUB_TYPE_REFCNTBT] = { | |
63 | .name = "refcountbt", | |
64 | .descr = "reference count btree", | |
65 | .type = XFROG_SCRUB_TYPE_PERAG, | |
66 | }, | |
67 | [XFS_SCRUB_TYPE_INODE] = { | |
68 | .name = "inode", | |
69 | .descr = "inode record", | |
70 | .type = XFROG_SCRUB_TYPE_INODE, | |
71 | }, | |
72 | [XFS_SCRUB_TYPE_BMBTD] = { | |
73 | .name = "bmapbtd", | |
74 | .descr = "data block map", | |
75 | .type = XFROG_SCRUB_TYPE_INODE, | |
76 | }, | |
77 | [XFS_SCRUB_TYPE_BMBTA] = { | |
78 | .name = "bmapbta", | |
79 | .descr = "attr block map", | |
80 | .type = XFROG_SCRUB_TYPE_INODE, | |
81 | }, | |
82 | [XFS_SCRUB_TYPE_BMBTC] = { | |
83 | .name = "bmapbtc", | |
84 | .descr = "CoW block map", | |
85 | .type = XFROG_SCRUB_TYPE_INODE, | |
86 | }, | |
87 | [XFS_SCRUB_TYPE_DIR] = { | |
88 | .name = "directory", | |
89 | .descr = "directory entries", | |
90 | .type = XFROG_SCRUB_TYPE_INODE, | |
91 | }, | |
92 | [XFS_SCRUB_TYPE_XATTR] = { | |
93 | .name = "xattr", | |
94 | .descr = "extended attributes", | |
95 | .type = XFROG_SCRUB_TYPE_INODE, | |
96 | }, | |
97 | [XFS_SCRUB_TYPE_SYMLINK] = { | |
98 | .name = "symlink", | |
99 | .descr = "symbolic link", | |
100 | .type = XFROG_SCRUB_TYPE_INODE, | |
101 | }, | |
102 | [XFS_SCRUB_TYPE_PARENT] = { | |
103 | .name = "parent", | |
104 | .descr = "parent pointer", | |
105 | .type = XFROG_SCRUB_TYPE_INODE, | |
106 | }, | |
107 | [XFS_SCRUB_TYPE_RTBITMAP] = { | |
108 | .name = "rtbitmap", | |
109 | .descr = "realtime bitmap", | |
110 | .type = XFROG_SCRUB_TYPE_FS, | |
111 | }, | |
112 | [XFS_SCRUB_TYPE_RTSUM] = { | |
113 | .name = "rtsummary", | |
114 | .descr = "realtime summary", | |
115 | .type = XFROG_SCRUB_TYPE_FS, | |
116 | }, | |
117 | [XFS_SCRUB_TYPE_UQUOTA] = { | |
118 | .name = "usrquota", | |
119 | .descr = "user quotas", | |
120 | .type = XFROG_SCRUB_TYPE_FS, | |
121 | }, | |
122 | [XFS_SCRUB_TYPE_GQUOTA] = { | |
123 | .name = "grpquota", | |
124 | .descr = "group quotas", | |
125 | .type = XFROG_SCRUB_TYPE_FS, | |
126 | }, | |
127 | [XFS_SCRUB_TYPE_PQUOTA] = { | |
128 | .name = "prjquota", | |
129 | .descr = "project quotas", | |
130 | .type = XFROG_SCRUB_TYPE_FS, | |
131 | }, | |
8dd3922c DW |
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, | |
137 | }, | |
5ef3b66a DW |
138 | }; |
139 | ||
140 | int | |
141 | xfrog_scrub_metadata( | |
142 | struct xfs_fd *xfd, | |
143 | struct xfs_scrub_metadata *meta) | |
144 | { | |
145 | return ioctl(xfd->fd, XFS_IOC_SCRUB_METADATA, meta); | |
146 | } |