xfs_health.c (93687ee2e3748a4a6b541ff0d83d1480815b00a9) xfs_health.c (0b8686f19879d896bbe2d3e893f433a08160452d)
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2019 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <darrick.wong@oracle.com>
5 */
6#include "xfs.h"
7#include "xfs_fs.h"
8#include "xfs_shared.h"

--- 84 unchanged lines hidden (view full) ---

93 struct xfs_mount *mp,
94 unsigned int mask)
95{
96 ASSERT(!(mask & ~XFS_SICK_FS_PRIMARY));
97 trace_xfs_fs_mark_sick(mp, mask);
98
99 spin_lock(&mp->m_sb_lock);
100 mp->m_fs_sick |= mask;
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2019 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <darrick.wong@oracle.com>
5 */
6#include "xfs.h"
7#include "xfs_fs.h"
8#include "xfs_shared.h"

--- 84 unchanged lines hidden (view full) ---

93 struct xfs_mount *mp,
94 unsigned int mask)
95{
96 ASSERT(!(mask & ~XFS_SICK_FS_PRIMARY));
97 trace_xfs_fs_mark_sick(mp, mask);
98
99 spin_lock(&mp->m_sb_lock);
100 mp->m_fs_sick |= mask;
101 spin_unlock(&mp->m_sb_lock);
102}
103
104/* Mark per-fs metadata as having been checked and found unhealthy by fsck. */
105void
106xfs_fs_mark_corrupt(
107 struct xfs_mount *mp,
108 unsigned int mask)
109{
110 ASSERT(!(mask & ~XFS_SICK_FS_PRIMARY));
111 trace_xfs_fs_mark_corrupt(mp, mask);
112
113 spin_lock(&mp->m_sb_lock);
114 mp->m_fs_sick |= mask;
101 mp->m_fs_checked |= mask;
102 spin_unlock(&mp->m_sb_lock);
103}
104
105/* Mark a per-fs metadata healed. */
106void
107xfs_fs_mark_healthy(
108 struct xfs_mount *mp,

--- 27 unchanged lines hidden (view full) ---

136 struct xfs_mount *mp,
137 unsigned int mask)
138{
139 ASSERT(!(mask & ~XFS_SICK_RT_PRIMARY));
140 trace_xfs_rt_mark_sick(mp, mask);
141
142 spin_lock(&mp->m_sb_lock);
143 mp->m_rt_sick |= mask;
115 mp->m_fs_checked |= mask;
116 spin_unlock(&mp->m_sb_lock);
117}
118
119/* Mark a per-fs metadata healed. */
120void
121xfs_fs_mark_healthy(
122 struct xfs_mount *mp,

--- 27 unchanged lines hidden (view full) ---

150 struct xfs_mount *mp,
151 unsigned int mask)
152{
153 ASSERT(!(mask & ~XFS_SICK_RT_PRIMARY));
154 trace_xfs_rt_mark_sick(mp, mask);
155
156 spin_lock(&mp->m_sb_lock);
157 mp->m_rt_sick |= mask;
158 spin_unlock(&mp->m_sb_lock);
159}
160
161/* Mark realtime metadata as having been checked and found unhealthy by fsck. */
162void
163xfs_rt_mark_corrupt(
164 struct xfs_mount *mp,
165 unsigned int mask)
166{
167 ASSERT(!(mask & ~XFS_SICK_RT_PRIMARY));
168 trace_xfs_rt_mark_corrupt(mp, mask);
169
170 spin_lock(&mp->m_sb_lock);
171 mp->m_rt_sick |= mask;
144 mp->m_rt_checked |= mask;
145 spin_unlock(&mp->m_sb_lock);
146}
147
148/* Mark a realtime metadata healed. */
149void
150xfs_rt_mark_healthy(
151 struct xfs_mount *mp,

--- 27 unchanged lines hidden (view full) ---

179 struct xfs_perag *pag,
180 unsigned int mask)
181{
182 ASSERT(!(mask & ~XFS_SICK_AG_PRIMARY));
183 trace_xfs_ag_mark_sick(pag->pag_mount, pag->pag_agno, mask);
184
185 spin_lock(&pag->pag_state_lock);
186 pag->pag_sick |= mask;
172 mp->m_rt_checked |= mask;
173 spin_unlock(&mp->m_sb_lock);
174}
175
176/* Mark a realtime metadata healed. */
177void
178xfs_rt_mark_healthy(
179 struct xfs_mount *mp,

--- 27 unchanged lines hidden (view full) ---

207 struct xfs_perag *pag,
208 unsigned int mask)
209{
210 ASSERT(!(mask & ~XFS_SICK_AG_PRIMARY));
211 trace_xfs_ag_mark_sick(pag->pag_mount, pag->pag_agno, mask);
212
213 spin_lock(&pag->pag_state_lock);
214 pag->pag_sick |= mask;
215 spin_unlock(&pag->pag_state_lock);
216}
217
218/* Mark per-ag metadata as having been checked and found unhealthy by fsck. */
219void
220xfs_ag_mark_corrupt(
221 struct xfs_perag *pag,
222 unsigned int mask)
223{
224 ASSERT(!(mask & ~XFS_SICK_AG_PRIMARY));
225 trace_xfs_ag_mark_corrupt(pag->pag_mount, pag->pag_agno, mask);
226
227 spin_lock(&pag->pag_state_lock);
228 pag->pag_sick |= mask;
187 pag->pag_checked |= mask;
188 spin_unlock(&pag->pag_state_lock);
189}
190
191/* Mark per-ag metadata ok. */
192void
193xfs_ag_mark_healthy(
194 struct xfs_perag *pag,

--- 27 unchanged lines hidden (view full) ---

222 struct xfs_inode *ip,
223 unsigned int mask)
224{
225 ASSERT(!(mask & ~(XFS_SICK_INO_PRIMARY | XFS_SICK_INO_ZAPPED)));
226 trace_xfs_inode_mark_sick(ip, mask);
227
228 spin_lock(&ip->i_flags_lock);
229 ip->i_sick |= mask;
229 pag->pag_checked |= mask;
230 spin_unlock(&pag->pag_state_lock);
231}
232
233/* Mark per-ag metadata ok. */
234void
235xfs_ag_mark_healthy(
236 struct xfs_perag *pag,

--- 27 unchanged lines hidden (view full) ---

264 struct xfs_inode *ip,
265 unsigned int mask)
266{
267 ASSERT(!(mask & ~(XFS_SICK_INO_PRIMARY | XFS_SICK_INO_ZAPPED)));
268 trace_xfs_inode_mark_sick(ip, mask);
269
270 spin_lock(&ip->i_flags_lock);
271 ip->i_sick |= mask;
272 spin_unlock(&ip->i_flags_lock);
273
274 /*
275 * Keep this inode around so we don't lose the sickness report. Scrub
276 * grabs inodes with DONTCACHE assuming that most inode are ok, which
277 * is not the case here.
278 */
279 spin_lock(&VFS_I(ip)->i_lock);
280 VFS_I(ip)->i_state &= ~I_DONTCACHE;
281 spin_unlock(&VFS_I(ip)->i_lock);
282}
283
284/* Mark inode metadata as having been checked and found unhealthy by fsck. */
285void
286xfs_inode_mark_corrupt(
287 struct xfs_inode *ip,
288 unsigned int mask)
289{
290 ASSERT(!(mask & ~(XFS_SICK_INO_PRIMARY | XFS_SICK_INO_ZAPPED)));
291 trace_xfs_inode_mark_corrupt(ip, mask);
292
293 spin_lock(&ip->i_flags_lock);
294 ip->i_sick |= mask;
230 ip->i_checked |= mask;
231 spin_unlock(&ip->i_flags_lock);
232
233 /*
234 * Keep this inode around so we don't lose the sickness report. Scrub
235 * grabs inodes with DONTCACHE assuming that most inode are ok, which
236 * is not the case here.
237 */

--- 164 unchanged lines hidden ---
295 ip->i_checked |= mask;
296 spin_unlock(&ip->i_flags_lock);
297
298 /*
299 * Keep this inode around so we don't lose the sickness report. Scrub
300 * grabs inodes with DONTCACHE assuming that most inode are ok, which
301 * is not the case here.
302 */

--- 164 unchanged lines hidden ---