I have disabled CoW for the share I have manually defragmented. Perhaps to avoid disk usage becoming a problem, the NoDataCoW option at share-creation should be introduced at the same time, then when you select the defrag option in Scheduled Tasks, the list of shares is filtered to those that have the NoDataCoW attribute.
It doesn’t bother me that NoDataCoW disables checksumming and compression, since compression affects performance, and my hypervisor does integrity-checking already. Apparently BTRFS’s doing likewise causes conflicts.:
the best thing btrfs can do is simply get out of the way and let the application handle its own integrity management, and the way to tell btrfs to do that, as well as to do in-place rewrites instead of COW-based rewrites is with the NOCOW attrib and that must be done before the file gets so fragmented (and multi-snapshotted in its fragmented state) in the first place.