[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Files full of zeros with coreutils-8.11 and xfs (FIEMAP related?)
From: |
Yongqiang Yang |
Subject: |
Re: Files full of zeros with coreutils-8.11 and xfs (FIEMAP related?) |
Date: |
Thu, 5 May 2011 19:47:29 +0800 |
2011/5/5 Pádraig Brady <address@hidden>:
> 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