On Fri, Feb 22, 2013 at 09:11:28AM -0800, Mike Power wrote:
> I think I have a misconception of what copy on write in btrfs means
> for individual files.
> 
> I had originally thought that I could create a large file:
> time dd if=/dev/zero of=10G bs=1G count=10
> 10+0 records in
> 10+0 records out
> 10737418240 bytes (11 GB) copied, 100.071 s, 107 MB/s
> 
> real    1m41.082s
> user    0m0.000s
> sys    0m7.792s
> 
> Then if I copied this file no blocks would be copied until they are
> written.  Hence the two files would use the same blocks underneath.
> But specifically that copy would be fast.  Since it would only need
> to write some metadata.  But when I copy the file:
> time cp 10G 10G2
> 
> real    3m38.790s
> user    0m0.124s
> sys    0m10.709s
> 
> Oddly enough it actually takes longer then the initial file
> creation.  So I am guessing that the long duration copy of the file
> is expected and that is not one of the virtues of btrfs copy on
> write.  Does that sound right?

   You probably want cp --reflink=always, which makes a CoW copy of
the file's metadata only. The resulting files have the semantics of
two different files, but share their blocks until a part of one of
them is modified (at which point, the modified blocks are no longer
shared).

   Hugo.

-- 
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
  PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
     --- "I don't like the look of it,  I tell you." "Well, stop ---     
                          looking at it, then."                          

Attachment: signature.asc
Description: Digital signature

Reply via email to