On Mon, May 24, 2021 at 9:04 PM Andrii Nakryiko <andrii@xxxxxxxxxx> wrote: > > Implement error reporting changes discussed in "Libbpf: the road to v1.0" > ([0]) document. > > Libbpf gets a new API, libbpf_set_strict_mode() which accepts a set of flags > that turn on a set of libbpf 1.0 changes, that might be potentially breaking. > It's possible to opt-in into all current and future 1.0 features by specifying > LIBBPF_STRICT_ALL flag. > > When some of the 1.0 "features" are requested, libbpf APIs might behave > differently. In this patch set a first set of changes are implemented, all > related to the way libbpf returns errors. See individual patches for details. > > Patch #1 adds a no-op libbpf_set_strict_mode() functionality to enable > updating selftests. > > Patch #2 gets rid of all the bad code patterns that will break in libbpf 1.0 > (exact -1 comparison for low-level APIs, direct IS_ERR() macro usage to check > pointer-returning APIs for error, etc). These changes make selftest work in > both legacy and 1.0 libbpf modes. Selftests also opt-in into 100% libbpf 1.0 > mode to automatically gain all the subsequent changes, which will come in > follow up patches. > > Patch #3 streamlines error reporting for low-level APIs wrapping bpf() syscall. > > Patch #4 streamlines errors for all the rest APIs. > > Patch #5 ensures that BPF skeletons propagate errors properly as well, as > currently on error some APIs will return NULL with no way of checking exact > error code. > > [0] https://docs.google.com/document/d/1UyjTZuPFWiPFyKk1tV5an11_iaRuec6U-ZESZ54nNTY > > v1->v2: > - move libbpf_set_strict_mode() implementation to patch #1, where it belongs > (Alexei); > - add acks, slight rewording of commit messages. Applied. Thanks