/* * Inconsistency errors: The on disk data is inconsistent. If these occur during * initial recovery, they don't indicate a bug in the running code - we walk all * the metadata before modifying anything. If they occur at runtime, they * indicate either a bug in the running code or (less likely) data is being * silently corrupted under us. * * XXX: audit all inconsistent errors and make sure they're all recoverable, in * BCH_ON_ERROR_CONTINUE mode
*/
/* * for now, bkey fsck errors are always handled by deleting the entire key - * this will change at some point
*/ #define bkey_fsck_err(c, _err_type, _err_msg, ...) \ do { \ int _ret = __bch2_bkey_fsck_err(c, k, from, \
BCH_FSCK_ERR_##_err_type, \
_err_msg, ##__VA_ARGS__); \ if (!bch2_err_matches(_ret, BCH_ERR_fsck_fix) && \
!bch2_err_matches(_ret, BCH_ERR_fsck_ignore)) \
ret = _ret; \
ret = bch_err_throw(c, fsck_delete_bkey); \ goto fsck_err; \
} while (0)
#define bkey_fsck_err_on(cond, ...) \ do { \ if (unlikely(cond)) \
bkey_fsck_err(__VA_ARGS__); \
} while (0)
/* * Fatal errors: these don't indicate a bug, but we can't continue running in RW * mode - pretty much just due to metadata IO errors:
*/
/* * IO errors: either recoverable metadata IO (because we have replicas), or data * IO - we need to log it and print out a message, but we don't (necessarily) * want to shut down the fs:
*/
void bch2_io_error_work(struct work_struct *);
/* Does the error handling without logging a message */ void bch2_io_error(struct bch_dev *, enum bch_member_error_type);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.