On Tue, Jan 18, 2011 at 03:40:09PM -0500, Christoph Hellwig wrote: > On Tue, Jan 18, 2011 at 08:30:00AM -0600, Geoffrey Wehrman wrote: > > Glad you were able to understand what I meant. Something I didn't think > > of earlier though: What happens when I try to use an 8 GB on a system > > with only 4 GB of memory? I'm not really worried about this pathological > > case, but I do wonder what the effects will be of allocating what could > > be significant quantities of memory in .aio_write. > > I think for large regions we'd be much better off to only zero the > blocks on disk, not in-memory - for example like the code in > xfs_zero_remaining_bytes does. That doesn't help us, because the .writepage allocation code will still allocate extsize aligned extents and expose the problem that we have blocks on disk with no data in the page cache covering them. The point of zeroing at .aio_write is that it avoids the problem of .writepage allocating blocks we don't have dirty pages for. My preferred optimisation for this problem is that once we get above a certain extsize threshold we simply preallocate extsized and aligned chunks that cover the entire range for the write instead of writing zeros. That preserves the extsize allocation alignment, and unaligned writes and future IO see the space as unwritten and hence get zeroed correctly... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs