Re: THP-enabled filesystem vs. FALLOC_FL_PUNCH_HOLE

From: Dave Hansen
Date: Fri Mar 04 2016 - 12:40:30 EST


On 03/04/2016 03:26 AM, Kirill A. Shutemov wrote:
> On Thu, Mar 03, 2016 at 07:51:50PM +0300, Kirill A. Shutemov wrote:
>> Truncate and punch hole that only cover part of THP range is implemented
>> by zero out this part of THP.
>>
>> This have visible effect on fallocate(FALLOC_FL_PUNCH_HOLE) behaviour.
>> As we don't really create hole in this case, lseek(SEEK_HOLE) may have
>> inconsistent results depending what pages happened to be allocated.
>> Not sure if it should be considered ABI break or not.
>
> Looks like this shouldn't be a problem. man 2 fallocate:
>
> Within the specified range, partial filesystem blocks are zeroed,
> and whole filesystem blocks are removed from the file. After a
> successful call, subsequent reads from this range will return
> zeroes.
>
> It means we effectively have 2M filesystem block size.

The question is still whether this will case problems for apps.

Isn't 2MB a quote unusual block size? Wouldn't some files on a tmpfs
filesystem act like they have a 2M blocksize and others like they have
4k? Would that confuse apps?