mwilck/btrfs-clone

ERROR: cannot flip ro->rw with received_uuid set, use force if you really want that

Closed this issue · 2 comments

I keep running into the same error message whenever I try using btrfs-clone to do a complete filesystem clone from my / to the device mounted at /mnt/target.

I tried running btrfs-clone from a live usb of the same linux distro with both drives mounted on /mnt/source and /mnt/target respectively and still got the same result.

Output on my running / system attempt is as follows, even with --force and --ignore-errors flags in use.

[root@victor-x202e btrfs-clone-master]# ./btrfs-clone -vv --force --ignore-errors --strategy generation / /mnt/target
/home/victor/Downloads/btrfs-clone-master/./btrfs-clone:144: SyntaxWarning: "is" with a literal. Did you mean "=="?
if len(line) is 0 or not line[0].isdigit():
unsharing mount namespace
/home/victor/Downloads/btrfs-clone-master/./btrfs-clone:144: SyntaxWarning: "is" with a literal. Did you mean "=="?
if len(line) is 0 or not line[0].isdigit():
OLD btrfs 3390cb42-c61b-491d-a8c2-6c11871b1b2b mounted on /tmp/tmp4fez5_nd
NEW btrfs 08305142-a4ca-4070-b6f2-2159c15ecc55 mounted on /tmp/tmpkolt3x7j
Create a readonly snapshot of '/tmp/tmp4fez5_nd' in '/tmp/tmp4fez5_nd/24c99d7a5c83'
btrfs send -v -v /tmp/tmp4fez5_nd/24c99d7a5c83 |
btrfs receive -v -v /tmp/tmpkolt3x7j
btrfs property set /tmp/tmpkolt3x7j/24c99d7a5c83 ro false
ERROR: cannot flip ro->rw with received_uuid set, use force if you really want that
Traceback (most recent call last):
File "/home/victor/Downloads/btrfs-clone-master/./btrfs-clone", line 844, in
main()
File "/home/victor/Downloads/btrfs-clone-master/./btrfs-clone", line 839, in main
new_mnt = send_root(old_mnt, new_mnt)
File "/home/victor/Downloads/btrfs-clone-master/./btrfs-clone", line 251, in send_root
maybe_call([opts.btrfs, "property", "set", new_snap, "ro", "false"])
File "/home/victor/Downloads/btrfs-clone-master/./btrfs-clone", line 45, in maybe_call
check_call(*args, **kwargs)
File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['btrfs', 'property', 'set', '/tmp/tmpkolt3x7j/24c99d7a5c83', 'ro', 'false']' returned non-zero exit status 1.
Delete subvolume (no-commit): '/tmp/tmp4fez5_nd/24c99d7a5c83'

More output:

[root@victor-x202e btrfs-clone-master]# btrfs fi show
Label: none uuid: 3390cb42-c61b-491d-a8c2-6c11871b1b2b
Total devices 1 FS bytes used 68.38GiB
devid 1 size 457.57GiB used 75.07GiB path /dev/mapper/luks-1c4cfab0-90ee-4fd9-bc21-3366c2d84f59

Label: none uuid: 08305142-a4ca-4070-b6f2-2159c15ecc55
Total devices 1 FS bytes used 192.00KiB
devid 1 size 215.38GiB used 2.02GiB path /dev/mapper/luks-c8730e20-1205-44a0-815e-b2ba12e5228d

[root@victor-x202e btrfs-clone-master]# btrfs su li /
ID 256 gen 20547 top level 5 path @
ID 257 gen 20547 top level 5 path @home
ID 258 gen 20509 top level 5 path @root
ID 259 gen 19652 top level 5 path @srv
ID 260 gen 20501 top level 5 path @cache
ID 261 gen 20545 top level 5 path @log
ID 262 gen 20507 top level 5 path @tmp
ID 275 gen 20363 top level 5 path timeshift-btrfs/snapshots/2021-12-27_15-25-15/@
ID 276 gen 19625 top level 5 path timeshift-btrfs/snapshots/2021-12-27_15-25-15/@home
ID 311 gen 20363 top level 5 path timeshift-btrfs/snapshots/2022-01-01_10-44-27/@
ID 315 gen 20526 top level 256 path .snapshots
ID 316 gen 4192 top level 315 path .snapshots/1/snapshot
ID 317 gen 4193 top level 315 path .snapshots/2/snapshot
ID 318 gen 4196 top level 315 path .snapshots/3/snapshot
ID 465 gen 12341 top level 315 path .snapshots/116/snapshot
ID 484 gen 13176 top level 315 path .snapshots/131/snapshot
ID 517 gen 14227 top level 315 path .snapshots/155/snapshot
ID 554 gen 16454 top level 315 path .snapshots/186/snapshot
ID 581 gen 17526 top level 315 path .snapshots/208/snapshot
ID 587 gen 20363 top level 5 path timeshift-btrfs/snapshots/2022-02-27_12-28-28/@
ID 588 gen 19626 top level 5 path timeshift-btrfs/snapshots/2022-02-27_12-28-28/@home
ID 603 gen 18392 top level 315 path .snapshots/220/snapshot
ID 608 gen 18573 top level 315 path .snapshots/223/snapshot
ID 610 gen 18777 top level 315 path .snapshots/225/snapshot
ID 613 gen 18825 top level 315 path .snapshots/226/snapshot
ID 616 gen 18856 top level 315 path .snapshots/227/snapshot
ID 617 gen 18936 top level 315 path .snapshots/228/snapshot
ID 620 gen 18949 top level 315 path .snapshots/229/snapshot
ID 623 gen 19011 top level 315 path .snapshots/230/snapshot
ID 624 gen 19070 top level 315 path .snapshots/231/snapshot
ID 627 gen 19147 top level 315 path .snapshots/232/snapshot
ID 628 gen 19245 top level 315 path .snapshots/233/snapshot
ID 629 gen 19340 top level 315 path .snapshots/234/snapshot
ID 630 gen 19439 top level 315 path .snapshots/235/snapshot
ID 631 gen 19487 top level 315 path .snapshots/236/snapshot
ID 634 gen 19514 top level 315 path .snapshots/237/snapshot
ID 635 gen 19574 top level 315 path .snapshots/238/snapshot
ID 636 gen 19671 top level 315 path .snapshots/239/snapshot
ID 637 gen 19765 top level 315 path .snapshots/240/snapshot
ID 640 gen 19856 top level 315 path .snapshots/241/snapshot
ID 641 gen 19883 top level 315 path .snapshots/242/snapshot
ID 642 gen 19979 top level 315 path .snapshots/243/snapshot
ID 645 gen 20048 top level 315 path .snapshots/244/snapshot
ID 646 gen 20136 top level 315 path .snapshots/245/snapshot
ID 647 gen 20363 top level 5 path timeshift-btrfs/snapshots/2022-03-06_08-05-01/@
ID 648 gen 20139 top level 5 path timeshift-btrfs/snapshots/2022-03-06_08-05-01/@home
ID 649 gen 20363 top level 5 path timeshift-btrfs/snapshots/2022-03-06_08-35-35/@
ID 650 gen 20188 top level 5 path timeshift-btrfs/snapshots/2022-03-06_08-35-35/@home
ID 651 gen 20232 top level 315 path .snapshots/246/snapshot
ID 653 gen 20308 top level 315 path .snapshots/247/snapshot
ID 657 gen 20337 top level 5 path 6426f668ba81
ID 658 gen 20363 top level 5 path timeshift-btrfs/snapshots/2022-03-06_11-18-42/@
ID 659 gen 20365 top level 5 path timeshift-btrfs/snapshots/2022-03-06_11-18-42/@home
ID 662 gen 20420 top level 315 path .snapshots/248/snapshot
ID 663 gen 20495 top level 5 path timeshift-btrfs/snapshots/2022-03-06_12-39-51/@
ID 664 gen 20497 top level 5 path timeshift-btrfs/snapshots/2022-03-06_12-39-51/@home
ID 666 gen 20525 top level 315 path .snapshots/249/snapshot

It looks like the btrfs developers decided to change how btrfs property set works back in October 2021

See:
https://github.com/kdave/btrfs-progs/blob/660d10d3fb2e87909d379b0ea3c52934543455c7/cmds/property.c#L114

I could not find their pull request in the btrfs-progs repo, so I don't know their reasoning, but I think it is probably safe to edit btrfs-clone to add the -f (force) flag into that command invocation

Sepero commented

A simple work around for this problem is just make a new snapshot of the subvolume. You can then delete the original.