On Sun, May 06, 2012 at 11:03:19PM +0800, Tao Ma wrote:
> On 05/06/2012 07:37 AM, Dave Chinner wrote:
> > On Sat, May 05, 2012 at 11:07:09PM +0800, Tao Ma wrote:
> >> From: Tao Ma <boyu.mt@xxxxxxxxxx>
> >> In my test with ext4, 275 can't pass because ext4
> >> can create a 8k file in the end not like what xfs
> >> does. So make this test case xfs only for now.
> > It's not an XFS specific test - it's a test that is supposed to test
> > POSIX write behaviour. i.e. if the filesystem is full, and then you
> > free 4k of space, then an 8k write should only be able to write 4k,
> > yes?
> Yes, but it doesn't work as expected for ext4.
It won't work as expected for many XFS configurations, too. e.g.
filesystem block size > 4k on 16/64k page machines, or if the
filesystem is configured with an inheritable extent size hint on the
root directory (XFS has been able to do per-file "bigalloc"
for years ;)
> > So doesn't a failure on ext4 indicate that there's something wrong
> > with ext4 (either it's ENOSPC detection or the short write
> > handling), not the test?
> Actually in my test, ext4 can create the file with 8K file size, not a
> short write. I haven't looked into it yet. But AFAICS, if we have an
> ext4 volume with 8k cluster size, a 4k file can occupy a 8k cluster and
> the final write of 8k will succeed instead of the short write.
IOws, you are testing with bigalloc?
Many tests make the assumption that allocation/extent size is the
same as the filesystem block size, and many more make the assumption
that the filesystem block size is always 4k. These tests generally
fail on differently configured filesystems, and so need massaging to
make work on these sorts of configs.
In this case, just make the write larger than the largest possible
allocation size (say 2MB), and fail the test if the write is
complete rather than short...