diff options
Diffstat (limited to 'fs/xfs/xfs_trans_buf.c')
| -rw-r--r-- | fs/xfs/xfs_trans_buf.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index 647b6f1d8923..b8eef0549f3f 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c | |||
| @@ -275,6 +275,10 @@ xfs_trans_read_buf_map( | |||
| 275 | XFS_BUF_UNDONE(bp); | 275 | XFS_BUF_UNDONE(bp); |
| 276 | xfs_buf_stale(bp); | 276 | xfs_buf_stale(bp); |
| 277 | xfs_buf_relse(bp); | 277 | xfs_buf_relse(bp); |
| 278 | |||
| 279 | /* bad CRC means corrupted metadata */ | ||
| 280 | if (error == EFSBADCRC) | ||
| 281 | error = EFSCORRUPTED; | ||
| 278 | return error; | 282 | return error; |
| 279 | } | 283 | } |
| 280 | #ifdef DEBUG | 284 | #ifdef DEBUG |
| @@ -338,6 +342,9 @@ xfs_trans_read_buf_map( | |||
| 338 | if (tp->t_flags & XFS_TRANS_DIRTY) | 342 | if (tp->t_flags & XFS_TRANS_DIRTY) |
| 339 | xfs_force_shutdown(tp->t_mountp, | 343 | xfs_force_shutdown(tp->t_mountp, |
| 340 | SHUTDOWN_META_IO_ERROR); | 344 | SHUTDOWN_META_IO_ERROR); |
| 345 | /* bad CRC means corrupted metadata */ | ||
| 346 | if (error == EFSBADCRC) | ||
| 347 | error = EFSCORRUPTED; | ||
| 341 | return error; | 348 | return error; |
| 342 | } | 349 | } |
| 343 | } | 350 | } |
| @@ -375,6 +382,10 @@ xfs_trans_read_buf_map( | |||
| 375 | if (tp->t_flags & XFS_TRANS_DIRTY) | 382 | if (tp->t_flags & XFS_TRANS_DIRTY) |
| 376 | xfs_force_shutdown(tp->t_mountp, SHUTDOWN_META_IO_ERROR); | 383 | xfs_force_shutdown(tp->t_mountp, SHUTDOWN_META_IO_ERROR); |
| 377 | xfs_buf_relse(bp); | 384 | xfs_buf_relse(bp); |
| 385 | |||
| 386 | /* bad CRC means corrupted metadata */ | ||
| 387 | if (error == EFSBADCRC) | ||
| 388 | error = EFSCORRUPTED; | ||
| 378 | return error; | 389 | return error; |
| 379 | } | 390 | } |
| 380 | #ifdef DEBUG | 391 | #ifdef DEBUG |
