btrfs: add test for send/receive with file capabilities set
authorFilipe Manana <fdmanana@suse.com>
Fri, 26 Mar 2021 12:15:32 +0000 (12:15 +0000)
committerEryu Guan <guaneryu@gmail.com>
Sun, 28 Mar 2021 16:50:41 +0000 (00:50 +0800)
commit175bb55960ba9d7e70138fb24b27024011c9c3c1
tree52e6a3e78e0dd74b41d322c2135a7cc76764c55f
parent210089cfa003154cb620e61fc52062efa9a39d20
btrfs: add test for send/receive with file capabilities set

Test that if we set a capability on a file but not on the next files we
create, send/receive operations only apply the capability to the first
file, the one for which we have set a capability.

This is motivated by a regression that started to happen with kernel 5.8,
caused by an incompatibility between kernel commit 89efda52e6b693
("btrfs: send: emit file capabilities after chown") and a workaround for
send/receive added to btrfs-progs several years ago by btrfs-progs
commit 123a2a085027e ("btrfs-progs: receive: restore capabilities after
chown"). That workaround in btrfs-progs was added in btrfs-progs 4.1.

That kernel commit ended up fixing the bugs the btrfs-progs commit
targeted, as well as other bugs around btrfs send and capabilities.
However it did not play nice with the btrfs-progs workaround.
The kernel fix was backported to all stable kernels and the btrfs-progs
workaround was later removed from btrfs-progs by commit 81d8ea9346c6ee
("btrfs-progs: receive: remove workaround for setting capabilities"),
introduced in btrfs-progs 5.11.

The test currently fails on any environment using kernel 5.8+ and a
btrfs-progs version between 4.1 and 5.10. Updating btrfs-progs to
version 5.11 makes the test pass.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
tests/btrfs/235 [new file with mode: 0755]
tests/btrfs/235.out [new file with mode: 0644]
tests/btrfs/group