On Mon, Sep 19, 2016 at 04:25:55PM -0600, Chris Murphy wrote: > >> Files are modified by creating new extents (using parameters inherited > >> from the inode to fill in the extent attributes) and updating the inode > >> to refer to the new extent instead of the old one at the modified > >> offset. Cloned extents are references to existing extents associated > >> with a different inode or at a different place within the same inode (if > >> the extent is not compatible with the destination inode, clone fails > >> with an error). A snapshot is an efficient way to clone an entire > >> subvol tree at once, including all inodes and attributes. > > > > There is the caveat of chattr +C, which would need hard-disabled for > > extent-level encryption (vs block level). > > What about raid56 partial stripe writes? Aren't these effectively nocow? Those are a straight-up bug that should be fixed. They are mixing committed data with uncommitted data from two different transactions, and the stripe temporarily contains garbage. Combine that with unclean shutdown in degraded mode and the data is gone.