2010-12-28 16:06:52

by Marco Stornelli

[permalink] [raw]
Subject: Bug in ext4/btrfs fallocate?

Hi,

it seems that ext4/btrfs code for fallocate doesn't check for
immutable/append inode flag. I think it's possible to do an fallocate
operation even if the immutable flag is turned on. You can think about
this case: an application opens a file for read/write, meanwhile a user
set the immutable flag and then the application calls fallocate. Other
cases shouldn't happen because if the immutable flag is turned on before
the application opens the file, then the application can't open the file
in read/write mode and therefore it can't do an fallocate operation.
Sincerely I haven't tried but I saw this kind of error in my own fs that
have a similar code.

Regards,

Marco


2010-12-29 06:46:43

by Andreas Dilger

[permalink] [raw]
Subject: Re: Bug in ext4/btrfs fallocate?

On 2010-12-28, at 09:06, Marco Stornelli wrote:
> it seems that ext4/btrfs code for fallocate doesn't check for
> immutable/append inode flag.

fallocate() probably shouldn't be allowed for immutable files, but it makes a lot of sense to call fallocate() on append-only files to avoid fragmentation, though it should only be called with the KEEP_SIZE flag.

Cheers, Andreas






2010-12-29 09:02:27

by Marco Stornelli

[permalink] [raw]
Subject: Re: Bug in ext4/btrfs fallocate?

Il 29/12/2010 07:46, Andreas Dilger ha scritto:
> On 2010-12-28, at 09:06, Marco Stornelli wrote:
>> it seems that ext4/btrfs code for fallocate doesn't check for
>> immutable/append inode flag.
>
> fallocate() probably shouldn't be allowed for immutable files, but it makes a lot of sense to call fallocate() on append-only files to avoid fragmentation, though it should only be called with the KEEP_SIZE flag.
>
> Cheers, Andreas
>

It seems that only ocfs2 does that check, however I think not checking
for immutable flag is an error, for the append case maybe you're right,
doing this operation on append-only files has got sense.

Marco