On Wed, Jun 12, 2013 at 12:10:00PM -0400, Brian Foster wrote: > On 06/12/2013 06:22 AM, Dave Chinner wrote: > > From: Dave Chinner <dchinner@xxxxxxxxxx> > > > ... > > --- > > fs/xfs/xfs_iomap.c | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c > > index 8f8aaee..14be676 100644 > > --- a/fs/xfs/xfs_iomap.c > > +++ b/fs/xfs/xfs_iomap.c > > @@ -284,6 +284,15 @@ xfs_iomap_eof_want_preallocate( > > return 0; > > > > /* > > + * If the file is smaller than the minimum prealloc and we are using > > + * dynamic preallocation, don't do any preallocation at all as it is > > + * likely this is the only write to the file that is going to be done. > > + */ > > + if (!(mp->m_flags & XFS_MOUNT_DFLT_IOSIZE) && > > + XFS_ISIZE(ip) < mp->m_writeio_blocks) > > + return 0; > > + > > I stuck this on a box, got a 64k prealloc on an 8k file and then noticed > this was comparing inode size against a block count. This should > probably be: > > XFS_ISIZE(ip) < XFS_FSB_TO_B(mp, mp->m_writeio_blocks) > > Given that, we avoid preallocs entirely until the file size reaches the > minimum write size (assuming dynamic prealloc mode). Doh! Will fix. Cheers Dave. -- Dave Chinner david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs