31 lines
1.4 KiB
ReStructuredText
31 lines
1.4 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
bcachefs private error codes
|
|
----------------------------
|
|
|
|
In bcachefs, as a hard rule we do not throw or directly use standard error
|
|
codes (-EINVAL, -EBUSY, etc.). Instead, we define private error codes as needed
|
|
in fs/bcachefs/errcode.h.
|
|
|
|
This gives us much better error messages and makes debugging much easier. Any
|
|
direct uses of standard error codes you see in the source code are simply old
|
|
code that has yet to be converted - feel free to clean it up!
|
|
|
|
Private error codes may subtype another error code, this allows for grouping of
|
|
related errors that should be handled similarly (e.g. transaction restart
|
|
errors), as well as specifying which standard error code should be returned at
|
|
the bcachefs module boundary.
|
|
|
|
At the module boundary, we use bch2_err_class() to convert to a standard error
|
|
code; this also emits a trace event so that the original error code be
|
|
recovered even if it wasn't logged.
|
|
|
|
Do not reuse error codes! Generally speaking, a private error code should only
|
|
be thrown in one place. That means that when we see it in a log message we can
|
|
see, unambiguously, exactly which file and line number it was returned from.
|
|
|
|
Try to give error codes names that are as reasonably descriptive of the error
|
|
as possible. Frequently, the error will be logged at a place far removed from
|
|
where the error was generated; good names for error codes mean much more
|
|
descriptive and useful error messages.
|