btrfs: send: add support for fs-verity
authorBoris Burkov <boris@bur.io>
Mon, 15 Aug 2022 20:54:28 +0000 (13:54 -0700)
committerDavid Sterba <dsterba@suse.com>
Mon, 26 Sep 2022 10:27:55 +0000 (12:27 +0200)
commit38622010a6de3a62cc72688348548854ed82dcf5
tree0ea2e8084cf69994d818ec9a0bc9ba50d3ab82b4
parente5677f056010298d3a8d43f710f8b445dd73462d
btrfs: send: add support for fs-verity

Preserve the fs-verity status of a btrfs file across send/recv.

There is no facility for installing the Merkle tree contents directly on
the receiving filesystem, so we package up the parameters used to enable
verity found in the verity descriptor. This gives the receive side
enough information to properly enable verity again. Note that this means
that receive will have to re-compute the whole Merkle tree, similar to
how compression worked before encoded_write.

Since the file becomes read-only after verity is enabled, it is
important that verity is added to the send stream after any file writes.
Therefore, when we process a verity item, merely note that it happened,
then actually create the command in the send stream during
'finish_inode_if_needed'.

This also creates V3 of the send stream format, without any format
changes besides adding the new commands and attributes.

Signed-off-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h
fs/btrfs/send.c
fs/btrfs/send.h
fs/btrfs/verity.c
fs/verity/fsverity_private.h
include/linux/fsverity.h