Re: [PATCH] ext4: When reading from fallocated blocks make sure we return zero.

Mingming Cao
2008-02-15T19:43:26Z

On Fri, 2008-02-15 at 23:46 +0530, Aneesh Kumar K.V wrote:
> fallocate blocks are considered as sparse area and read from them should
> return zero. ext4_ext_get_blocks should return zero for read request.
>

The patch itself looks harmless, but I still don't see how this could
fix the problem you described at irc: a write hit a BUG_ON() in
fs/buffer.c saying the buffer is not mapped. Could you add more details
here?

Thanks
Mingming

> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> ---
> fs/ext4/extents.c | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
> index 3efbfd1..5b22f71 100644
> --- a/fs/ext4/extents.c
> +++ b/fs/ext4/extents.c
> @@ -2379,8 +2379,14 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
> }
> if (create == EXT4_CREATE_UNINITIALIZED_EXT)
> goto out;
> - if (!create)
> + if (!create) {
> + /*
> + * read request should return zero blocks
> + * allocated
> + */
> + allocated = 0;
> goto out2;
> + }
>
> ret = ext4_ext_convert_to_initialized(handle, inode,
> path, iblock,