Re: Files full of zeros with coreutils-8.11 and xfs (FIEMAP related?)

Yongqiang Yang
2011-05-05T11:43:52Z

2011/5/5 Pádraig Brady <P@draigbrady.com>:
> On 14/04/11 17:10, Yongqiang Yang wrote:
>> Hi,
>>
>> I am off my working computer.  Maybe below fix could fix the problem.
>>
>> fs/ext4/extent.c
>> static int ext4_ext_walk_space(struct inode *inode, ext4_lblk_t block,
>> 1877                 } else if (block >= le32_to_cpu(ex->ee_block)) {
>> 1878                         /*
>> 1879                          * some part of requested space is covered
>> 1880                          * by found extent
>> 1881                          */
>> 1882                         start = block;
>> 1883                         end = le32_to_cpu(ex->ee_block)
>> 1884                                 + ext4_ext_get_actual_len(ex);
>> 1885                         if (block + num < end)
>> 1886                                 end = block + num;
>>        +                        if (!ext4_ext_is_uninitialized(ex))
>> 1887                         exists = 1;
>> 1888                 } else {
>> 1889                         BUG();
>> 1890                 }
>
> Hi,
>
> To follow up on the above.  I'm under the impression
> that ext4 is expected to return extents for what
> is written, irrespective of whether it's reached the
> disk or not. I.E. the preallocation case where this fails
No. It just returns extent info now - allocated extents and delayed
extents. In the preallocation case, it returns unwritten extents.
And the code above does not work.

> was an oversite, for which the above might fix.
>
> So is the above summary correct, and has there
> been any more thoughts on a fix?
>
> cheers,
> Pádraig.
>

--
Best Wishes
Yongqiang Yang