There surely is need for better tooling on the BTRFS File System side.
While migrating my setup from one machine to another, this is one issue I came to be aware of, only today, when my backup tool (btrbk
) complained about it. Following the pointers, I see the below snippet in btrfs-subvolume
manual page.
A snapshot that was created by send/receive will be read-only, with different last change generation, read-only and with set received_uuid which identifies the subvolume on the
filesystem that produced the stream. The usecase relies on matching data on both sides. Changing the subvolume to read-write after it has been received requires to reset the
received_uuid. As this is a notable change and could potentially break the incremental send use case, performing it by btrfs property set requires force if that is really desired by
user.
Note
The safety checks have been implemented in 5.14.2, any subvolumes previously received (with a valid received_uuid) and read-write status may exist and could still lead to
problems with send/receive. You can use btrfs subvolume show to identify them. Flipping the flags to read-only and back to read-write will reset the received_uuid manually. There
may exist a convenience tool in the future.
Fixing the Received UUID:
flag meant running the below:
rrs@priyasi:.../spool$ sudo btrfs sub show /
WARNING: the subvolume is read-write and has received_uuid set,
don't use it for incremental send. Please see section
'SUBVOLUME FLAGS' in manual page btrfs-subvolume for
further information.
ROOTVOL
Name: ROOTVOL
UUID: 122b0de1-e6f2-6845-aba0-6bf766c16526
Parent UUID: -
Received UUID: 34772967-c709-5146-bf20-898f7dbc2c1f
Creation time: 2021-12-02 19:59:29 +0530
Subvolume ID: 256
Generation: 138473
Gen at creation: 7
Parent ID: 5
Top level ID: 5
Flags: -
Send transid: 35245
Send time: 2021-12-02 19:59:29 +0530
Receive transid: 34
Receive time: 2021-12-02 20:13:11 +0530
Snapshot(s):
ROOTVOL/.snapshots/1/snapshot
ROOTVOL/.snapshots/2/snapshot
22:40 ♒ ॐ ♅ ♄ ⛢ ☺ 😄
rrs@priyasi:.../spool$ sudo btrfs property set / ro true
WARNING: read-write subvolume with received_uuid, this is bad
22:40 ♒ ॐ ♅ ♄ ⛢ ☺ 😄
rrs@priyasi:.../spool$ sudo btrfs property set -f / ro false
22:40 ♒ ॐ ♅ ♄ ⛢ ☺ 😄
rrs@priyasi:.../spool$ sudo btrfs sub show /
ROOTVOL
Name: ROOTVOL
UUID: 122b0de1-e6f2-6845-aba0-6bf766c16526
Parent UUID: -
Received UUID: -
Creation time: 2021-12-02 19:59:29 +0530
Subvolume ID: 256
Generation: 138473
Gen at creation: 7
Parent ID: 5
Top level ID: 5
Flags: -
Send transid: 0
Send time: 2021-12-02 19:59:29 +0530
Receive transid: 138480
Receive time: 2022-04-20 22:40:43 +0530
Snapshot(s):
ROOTVOL/.snapshots/1/snapshot
ROOTVOL/.snapshots/2/snapshot
22:40 ♒ ॐ ♅ ♄ ⛢ ☺ 😄
Hoping there won’t be surprises in the coming months. 🤞