On Tue, Apr 19, 2011 at 10:09:09AM -0400, Ted Ts'o wrote: > On Tue, Apr 19, 2011 at 05:45:38PM +1000, Dave Chinner wrote: > > You are *not listening*. There is no #2. FIEMAP returns the extent > > state _on disk_ at the time of the call. > > Dave, you're being rather strident about your insistence about what > FIEMAP's semantics are. The bit about the page cache state being relevant? That's what I was refering to here. > Part of the problem here is that it's *not* > clear or settled. > > If it really is the state _on_ _disk_, does XFS really have a DELALLOC > bit _on_ _disk_? Sigh. No. This whole thing blew up because of unwritten extent behaviour when there is dirty page cache covering and unwritten extent. Delalloc was not the issue - what I said is absolutely true for unwritten extents. Somewhere in the middle someone started talking about delalloc extents and conflating their behaviour with unwritten extents, but I continued to talk about unwritten extents and cached pages. Even so, for delalloc extents the dirty page state in the page cache is irrelevant. I've said earlier that XFS delalloc extents can span regions that have no page cache state - they don't get reported as holes by FIEMAP because they are tracked as delalloc. IOWs, like unwritten extents, you can't rely on delalloc extents to tell you where the data is in the file. So, it logically follws that you need to use the SYNC flag for both unwritten extents and delalloc extents to find out where there data realy lies by converting them to real, written extents. i.e. the only extents you can trust contain data from FIEMAP are the real extents on disk.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs