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 --- |