Subject: bug#6131: [PATCH]: fiemap support for efficient sparse file copy

From: Joel Becker <[email-masked]>
Date: Thu, 10 Jun 2010 17:28:35 -0700

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-masked]
Phone: (650) 506-8127