Odd BTRFS COW behaviour

James Hogarth james.hogarth at gmail.com
Fri Jan 17 13:06:13 UTC 2014

Hi all,

I've encountered something that seems a little weird and wondering if
anyone has any ideas...

My home server has an ext4 root with a btrfs pool mounted at /data (with a
number of subvolumes in there).

Within /data I am able to do cp --reflink=always <source> <dest> between
subvolumes and COW works as expected.

On my laptop (built with default BTRFS option in F19 and updated to F20) if
I try and do a cp --reflink=always <source-in-root> <dest-in-home> (or vice
versa direction) it complains that:

cp: failed to clone ‘/tmptest/filename.tar.gz’ from ‘filename.tar.gz’:
Invalid cross-device link

There is one key difference I can think of ... although there are separate
subvolumes in /data (home, music, downloads, etc) only /data is directly
mounted and I'm not explictly mounting the subvolid=music on /data/music or
anything like that ...

With the laptop (from the default BTRFS install choice) / and /home are
explicitly mounted separately even though they are in the same BTRFS pool.

So far as I understand it when in the same pool cross-subvolume COW should
be valid (as shown in /data on the server) - even if technically under
separate mounts.

Can anyone else verify the behaviour and is anyone sure of what the correct
behaviour should be - if there is a bug is it to file with cp or with
btrfs-progs/kernel for example ....


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.fedoraproject.org/pipermail/devel/attachments/20140117/d806ec1c/attachment.html>

More information about the devel mailing list