On Sat, Aug 10, 2013 at 10:30 PM, Mitch Harder
<mitch.har...@sabayonlinux.org> wrote:
> On Fri, Aug 9, 2013 at 9:46 AM, David Sterba <dste...@suse.cz> wrote:
>> On Fri, Aug 09, 2013 at 01:47:24PM +0800, Miao Xie wrote:
>>> On thu, 8 Aug 2013 22:45:48 +0100, Filipe David Borba Manana wrote:
>>> > 8MiB is way too large and likely set by mistake. This is not
>>> > a significant issue as in practice the max amount of data
>>> > added to an inline extent is also limited by the page cache
>>> > and btree leaf sizes.
>>>
>>> I don't think 8KB is a reasonable value of the default max inline size
>>> because it makes no sense on the machine whose page size is 4KB.
>>
>> Page size limit is artificial implied by the implementation and on a 4k
>> page machine max_inline does not take place. Even if it's 4k, it does
>> not apply because the leaf space is smaller.
>>
>>> I think 4KB is a reasonable value, because we may mount the fs on
>>> the machines with the different page size in the future, in order to
>>> avoid the compatible problem, we should use the min page size as
>>> the max inline size.
>>
>> If there's support for mounting a fs with sectorsize != pagesize, this
>> will work automatically. Currently such filesystem fails to mount, as we
>> know.
>>
>> Whether it's 4k or 8k could be decided by the performance impact, but I
>> have no numbers to vote for either.
>>
>> david
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>> the body of a message to majord...@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> I did some research on max_inline when I was playing with an
> experimental patch to allow inline extents to be greater than
> sectorsize (but still < leafsize and inodesize).
>
> I concluded that that max_inline doesn't matter as long as it is >
> PAGE_CACHE_SIZE.
>
> My guess is that at some point early in BTRFS history, they wanted to
> allow for inlining of really large extents (essentially inlining
> almost the entire filesystem except for really large files).
>
> When Chris incorporated compression (Btrfs: Add zlib compression
> support, 2008-10-29, commit c8b978188c9a0fd3d535c13debd19d522b726f1f,
> and a follow-up patch: Btrfs: Compression corner fixes, 2008-10-31,
> 70b99e6959a4c28ae1b314985eca731f3db72f1d), the new
> cow_file_range_inline() function limited inline extent size to
> PAGE_CACHE_SIZE.
>
> if (start > 0 ||
>    actual_end >= PAGE_CACHE_SIZE ||
>    data_len >= BTRFS_MAX_INLINE_DATA_SIZE(root) ||
>    (!compressed_size &&
>    (actual_end & (root->sectorsize - 1)) == 0) ||
>    end + 1 < isize ||
>    data_len > root->fs_info->max_inline) {
> return 1;
> }
>
> So, this is why we could have a really large max_inline setting for
> all these years that didn't make anything go BOOM.
>
> As Miao Xie suggested, if you use fs_info->max_inline =
> PAGE_CACHE_SIZE, the code will be ready if the issue with 64k page
> size is ever addressed.

If  a default  value of PAGE_CACHE_SIZE is the most preferred, I'm
fine with it too.
Thanks for the feedback and information.

>
> You could probably also refactor fs_info->max_inline out completely
> with some additional work.



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to