On Mon, Apr 17, 2017 at 12:07 PM, Liu Bo <[email protected]> wrote:
> On Mon, Apr 17, 2017 at 11:36:17AM -0600, Chris Murphy wrote:
>> HI,
>>
>>
>> /dev/nvme0n1p8 on / type btrfs
>> (rw,relatime,seclabel,ssd,space_cache,subvolid=258,subvol=/root)
>>
>> I've got a test folder with +C set and then copied a test file into it.
>>
>> $ lsattr
>> ----------------C--
>> ./system@2547b430ecdc441c9cf82569eeb22065-0000000000000001-00054c3c31bec567.journal
>>
>> So now it's inherited +C. Next check fragments and compression.
>>
>> $ sudo ~/Applications/btrfs-debugfs -f
>> system@2547b430ecdc441c9cf82569eeb22065-0000000000000001-00054c3c31bec567.journal
>> (290662 0): ram 100663296 disk 17200840704 disk_size 100663296
>> file: 
>> system@2547b430ecdc441c9cf82569eeb22065-0000000000000001-00054c3c31bec567.journal
>> extents 1 disk size 100663296 logical size 100663296 ratio 1.00
>>
>>
>> Try to compress it.
>>
>> $ sudo btrfs fi defrag -c
>> system@2547b430ecdc441c9cf82569eeb22065-0000000000000001-00054c3c31bec567.journal
>>
>> Check again.
>>
>> [snip faux fragments]
>> file: 
>> system@2547b430ecdc441c9cf82569eeb22065-0000000000000001-00054c3c31bec567.journal
>> extents 768 disk size 21504000 logical size 100663296 ratio 4.68
>>
>> It's compressed! OK??
>>
>> OK delete that file, and add +c to the temp folder.
>>
>> $ lsattr
>> --------c-------C-- ./temp
>>
>> Copy another test file into temp.
>>
>> $ lsattr
>> --------c-------C--
>> ./system@2547b430ecdc441c9cf82569eeb22065-000000000002eb9f-00054d4ebb44b135.journal
>>
>> $ sudo ~/Applications/btrfs-debugfs -f
>> system@2547b430ecdc441c9cf82569eeb22065-000000000002eb9f-00054d4ebb44b135.journal
>> (290739 0): ram 83886080 disk 21764243456 disk_size 83886080
>> file: 
>> system@2547b430ecdc441c9cf82569eeb22065-000000000002eb9f-00054d4ebb44b135.journal
>> extents 1 disk size 83886080 logical size 83886080 ratio 1.00
>>
>> Not compressed. Hmmm. So somehow btrfs fi defrag -c will force
>> compression even on nocow files? I've also done this without -c
>> option, with a Btrfs mounted using compress option; and the file does
>> compress also. I thought nocow files were always no compress, but it
>> seems there's exceptions.
>>
>
> Good catch.
>
> Btrfs defragment depends on COW to do the job, thus nocow inode are forced to
> COW when processing defraged range, and the compress also depends on COW, so
> btrfs filesystem defrag -c becomes an exception.
>
> Speaking of which, this exception seems to be not harmful other than confusing
> users.

No in fact it might be a benefit. Recent versions of systemd-journald
defragment, but are highly compressible files with a lot of slack
space in them. So defragment on SSD is just increasing write
amplification. If the defragment ioctl supports passing compression
request, maybe that's an optimization systemd-journald can leverage
for much smaller files.

-- 
Chris Murphy
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to