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: joel.bec...@oracle.com Phone: (650) 506-8127