On Thu, Jun 10, 2010 at 04:47:23PM -0700, Paul Eggert wrote:
> On 06/09/2010 11:56 PM, jeff.liu wrote:
>
> > Yeah, I just realized that the behaviour I observed is caused by the delay
> > allocation mechanism of
> > the particular FS.
>
> If the file system is using delayed allocation, then can
> the fiemap ioctl tell us that a file contains a hole (because nothing has been
> allocated there), but read() would tell us that the file contains nonzero
> data at the same location
> (because it's sitting in a buffer somewhere)? If so, we'd need to do
> something like invoke
> fdatasync() on the file before issuing the fiemap ioctl, to force allocation;
> or perhaps
> there's another ioctl that will do the allocation without having to actually
> do a sync.
I can think of a couple things, like returning an extent record
with a zero block number: "I have an extent here, but I don't have
physical storage." Or having a filesystem's fiemap call force the
allocation before returning.
What say we copy linux-ext4 here?
Joel
--
"If you took all of the grains of sand in the world, and lined
them up end to end in a row, you'd be working for the government!"
- Mr. Interesting
Joel Becker
Principal Software Developer
Oracle
E-mail: [email protected]
Phone: (650) 506-8127