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. Lorenz Bauer (2): libfs: support RENAME_EXCHANGE in simple_rename() selftests: bpf: test RENAME_EXCHANGE and RENAME_NOREPLACE on bpffs fs/libfs.c | 6 ++- .../selftests/bpf/prog_tests/test_bpffs.c | 39 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) -- 2.30.2