Add support for renameat2(RENAME_EXCHANGE) on bpffs. This is useful for atomic upgrades of our sk_lookup control plane. * Create a temporary directory on bpffs * Migrate maps and pin them into temporary directory * Load new sk_lookup BPF, attach it and pin the link into temp dir * renameat2(temp dir, state dir, RENAME_EXCHANGE) * rmdir temp dir Due to the sk_lookup semantics this means we can never end up in a situation where an upgrade breaks the existing control plane. v2: - Test exchanging a map and a directory (Alexei) - Use ASSERT macros (Andrii) Lorenz Bauer (3): libfs: support RENAME_EXCHANGE in simple_rename() selftests: bpf: convert test_bpffs to ASSERT macros selftests: bpf: test RENAME_EXCHANGE and RENAME_NOREPLACE on bpffs fs/libfs.c | 6 +- .../selftests/bpf/prog_tests/test_bpffs.c | 85 ++++++++++++++++--- 2 files changed, 79 insertions(+), 12 deletions(-) -- 2.32.0