qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] hd-geo-test creates 4GB files on FSes that


From: Markus Armbruster
Subject: Re: [Qemu-block] [Qemu-devel] hd-geo-test creates 4GB files on FSes that don't support sparse images, doesn't delete them on error
Date: Tue, 01 Sep 2015 08:02:20 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

John Snow <address@hidden> writes:

> On 08/28/2015 09:06 AM, Markus Armbruster wrote:
>> John Snow <address@hidden> writes:
>> 
>>> On 08/27/2015 11:29 AM, Eric Blake wrote:
>>>> On 08/27/2015 09:17 AM, Peter Maydell wrote:
>>>>> I've noticed recently that tests/hd-geo-test.c creates test disk
>>>>> images which are 4GB in size, which is a problem if the filesystem
>>>>> on the host doesn't support sparse files. In particular, OSX's HFS+
>>>>> doesn't have sparse file support, and Windows probably doesn't either.
>>>>
>>>> Windows NTFS supports sparse files (minimum hole size of 64k), but it
>>>> can be a pain to set up, and while it saves disk space, it may actually
>>>> slow your program down.
>>>>
>>>> [At one point cygwin created sparse files on windows by default, but
>>>> because it was demonstrated to hurt performance in dealing with sparse
>>>> files, because Windows doesn't handle sparse files efficiently, the
>>>> cygwin defaults were switched so that it now requires an explicit opt-in
>>>> mount option before even attempting sparse files]
>>>>
>>>>> Worse, if the test fails an assertion somewhere the test doesn't
>>>>> clean up after itself and leaves a 4GB file lying around in /tmp/.
>>>>>
>>>>> It would be nice if we could skip these tests on filesystems that
>>>>> don't have sparse file support...
>>>>
>>>> Or even where sparse files are supported but not default.
>>>>
>>>
>>> Does this test *require* the raw format?
>> 
>> If memory serves, the test doesn't require a specific format, only the
>> size and the contents of the MBR matters.
>> 
>>> Use tests/libqos/libqos.c mkqcow2 instead. I'll send a patch.
>> 
>> Go right ahead.
>> 
>
> Oh, taking a look at it, it needs to writethat MBR data to the file
> before it opens it. We don't have an existing qemu-io dependency here to
> use.
>
> I could add it, but the line between iotest and qtest starts to get
> pretty fuzzy.
>
> Thoughts?

Let's go back to the original problem for a bit:

(1) The test needs a big image, contents beyond the MBR doesn't matter.
Image format doesn't matter, either.

(2) On losing filesystem, this image takes up significant space, because
we use "raw".

(3) We fail to clean it up on failure.  This is a general problem with
tests creating files.

Independently of what else we do, (3) is worth fixing.  Make each test
run in its own directory, create files only there, and have the test
harness remove the directory.

John suggested to attack (2) by using "qcow2", but that turns out to be
a bit harder than anticipated: the infrastructure for creating such
images isn't there.  Options:

(a) Create the infrastructure in qtests.

(b) Move the test to iotests.

(c) Create the image once and commit it to git.

(d) Ignore the problem.  Needing 8GiB for tests if your filesystem sucks
isn't exactly horrible.   But (3) really needs fixing then.

We could try to attack (1) to mitigate.  I don't remember why I picked
8GiB.  Perhaps we can make the image somewhat smaller without
compromising the test.  Need to examine the geometry guessing code to
figure that out.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]