Alright, tested it on my system and get the same result. So --full-balance
also moves files regardless of the attribute, which are marked as nodatacow +C
and yeah it remains as marked, but does not work.
Very interesting. Also noted in the manual:
start [options] <path>
start the balance operation according to the specified filters, without any filters the data and metadata from the whole filesystem are
moved. The process runs in the foreground.
NOTE:
The balance command without filters will basically move everything in the filesystem to a new physical location on devices (i.e. it
does not affect the logical properties of file extents like offsets within files and extent sharing). The run time is potentially very
long, depending on the filesystem size. To prevent starting a full balance by accident, the user is warned and has a few seconds to
cancel the operation before it starts. The warning and delay can be skipped with --full-balance option.
Please note that the filters must be written together with the -d, -m and -s options, because they're optional and bare -d and -m also
work and mean no filters.
NOTE:
When the target profile for conversion filter is raid5 or raid6, there's a safety timeout of 10 seconds to warn users about the status
of the feature
I use normally: btrfs balance start -dusage=90 /
and that has zero effect on the swapfile.
I conclude: Never use a full-balance on a machine, since it will ignore +C
Attributes.
Note: should be added as a note in the wiki.