On Fri, Aug 17, 2012 at 09:45:20AM +0800, Liu Bo wrote: > On 08/15/2012 06:12 PM, Lluís Batlle i Rossell wrote: > > some time ago we discussed on #btrfs that the nocow attribute for files wasn't > > working (around 3.3 or 3.4 kernels). That was evident by files fragmenting even > > with the attribute set. > > > > Chris mentioned to find a fix quickly for that, and posted some lines of change > > into irc. But recently someone mentioned that 3.6-rc looks like still not > > respecting nocow for files. > > > > Is there really a fix upstream for that? Do nocow attribute on files work for > > anyone already? > > > > Dave had post a patch to fix it but only enabling NOCOW with zero sized file. > > FYI, the patch is http://article.gmane.org/gmane.comp.file-systems.btrfs/17351 > > With the patch, you don't need to mount with nodatacow any more :) > > And why it is only for only zero sized file: > http://permalink.gmane.org/gmane.comp.file-systems.btrfs/18046 the original patch http://permalink.gmane.org/gmane.comp.file-systems.btrfs/18031 did two things, the reasoning why it is not allowed to set nodatasum in general applies only to the second hunk but this @@ -139,7 +139,7 @@ void btrfs_inherit_iflags(struct inode *inode, struct inode *dir) } if (flags & BTRFS_INODE_NODATACOW) - BTRFS_I(inode)->flags |= BTRFS_INODE_NODATACOW; + BTRFS_I(inode)->flags |= BTRFS_INODE_NODATACOW | BTRFS_INODE_NODATASUM; btrfs_update_iflags(inode); } --- is sufficient to create nocow files via a directory with NOCOW attribute set, and all new files will inherit it (they are automatically zero-sized so it's safe). This usecase is similar to setting the COMPRESS attribute on a directory and all new files will inherit the flag. If Andrei wants to resend just this particular hunk, I'm giving it my ACK. david -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
