2. bcachefs 私有错误码¶
在 bcachefs 中,作为一项严格的规定,我们不抛出或直接使用标准错误码(-EINVAL, -EBUSY 等)。相反,我们根据需要在 fs/bcachefs/errcode.h 中定义私有错误码。
这使我们能够获得更好的错误消息,并使调试变得更加容易。您在源代码中看到的任何直接使用标准错误码的地方都只是尚未转换的旧代码——请随意清理它们!
私有错误码可以派生自另一个错误码,这允许对应该以类似方式处理的相关错误进行分组(例如事务重启错误),以及指定在 bcachefs 模块边界处应该返回哪个标准错误码。
在模块边界处,我们使用 bch2_err_class() 转换为标准错误码;这也会发出一个跟踪事件,以便即使没有记录原始错误码也能恢复它。
不要重用错误码!一般来说,一个私有错误码应该只在一个地方抛出。这意味着当我们在日志消息中看到它时,我们可以毫无歧义地确切知道它是从哪个文件和行号返回的。
尽量给错误码起一个尽可能描述错误的名字。通常,错误会在远离错误生成的地方记录;良好的错误码名称意味着更具描述性和更有用的错误消息。