On Wed, Apr 09, 2014 at 01:15:24PM +0200, Swâmi Petaramesh wrote: > Hi, > > In the quest for BTRFS and performance, and having received the advice to > "chattr +C" my akonadi DB directory to make it noCow, I would like to be sure > about what will happen when I take a snapshot of the concerned BTRFS > subvolume. > > 1/ Being noCow, will the database be modified in the snapshot as well, > efectively defeating the snapshot ? No (see below) > 2/ Being snapshotted, will the database be COWed even though it's > supposed to be noCow ? Yes -- once. When you make a snapshot of a nodatacow file, the data is shared between the snapshot and the original as normal. The extents are reference counted, so the original data now has two references to it. When one of these copies is written to, the writes are placed somewhere else on the disk, still marked as nodatacow, and the reference count is reduced to 1 for each copy again. (Note that this is done on a per-block basis, although the 30-second transaction commit will tend to coalesce adjacent blocks to reduce fragmentation; autodefrag helps here, too). Basically, a snapshot of a nodatacow file will increase the reference count for its blocks. A write to a block with a reference count of more than one will *always* write a new block elsewhere. A write to a block with a reference count of exactly one will not do so if the file is marked nodatacow. I hope that's clear. > 3/ Are both options mutually incompatible in some more osbcure ways ? Only as noted above. Hugo. -- === Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk === PGP key: 65E74AC0 from wwwkeys.eu.pgp.net or http://www.carfax.org.uk --- There are three mistaikes in this sentance. ---
Attachment:
signature.asc
Description: Digital signature