get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/807726/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 807726,
    "url": "http://patchwork.ozlabs.org/api/patches/807726/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/aba8a2b58f34b56281e63e5e9404eb0aab016836.1504111803.git.jcody@redhat.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<aba8a2b58f34b56281e63e5e9404eb0aab016836.1504111803.git.jcody@redhat.com>",
    "list_archive_url": null,
    "date": "2017-08-30T16:52:46",
    "name": "[v3,4/5] qemu-iotests: make python tests attempt to leave intermediate files",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "b343f73b069ae7f04b9a536945baa71af2df6efc",
    "submitter": {
        "id": 12159,
        "url": "http://patchwork.ozlabs.org/api/people/12159/?format=api",
        "name": "Jeff Cody",
        "email": "jcody@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/aba8a2b58f34b56281e63e5e9404eb0aab016836.1504111803.git.jcody@redhat.com/mbox/",
    "series": [
        {
            "id": 657,
            "url": "http://patchwork.ozlabs.org/api/series/657/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=657",
            "date": "2017-08-30T16:52:47",
            "name": "qemu-iotests: place output in unique dir",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/657/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/807726/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/807726/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
            "ext-mx03.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com",
            "ext-mx03.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=jcody@redhat.com"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjBVZ3mgsz9sNn\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 02:56:38 +1000 (AEST)",
            "from localhost ([::1]:51629 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dn6I8-000476-9W\n\tfor incoming@patchwork.ozlabs.org; Wed, 30 Aug 2017 12:56:36 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:56387)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <jcody@redhat.com>) id 1dn6Ew-0001RU-UI\n\tfor qemu-devel@nongnu.org; Wed, 30 Aug 2017 12:53:22 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <jcody@redhat.com>) id 1dn6Et-0004xw-1N\n\tfor qemu-devel@nongnu.org; Wed, 30 Aug 2017 12:53:19 -0400",
            "from mx1.redhat.com ([209.132.183.28]:47180)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <jcody@redhat.com>)\n\tid 1dn6Ek-0004vK-Kq; Wed, 30 Aug 2017 12:53:07 -0400",
            "from smtp.corp.redhat.com\n\t(int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 879827E439;\n\tWed, 30 Aug 2017 16:53:05 +0000 (UTC)",
            "from localhost (ovpn-116-70.phx2.redhat.com [10.3.116.70])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id DCAB470930;\n\tWed, 30 Aug 2017 16:53:00 +0000 (UTC)"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com 879827E439",
        "From": "Jeff Cody <jcody@redhat.com>",
        "To": "qemu-devel@nongnu.org",
        "Date": "Wed, 30 Aug 2017 12:52:46 -0400",
        "Message-Id": "<aba8a2b58f34b56281e63e5e9404eb0aab016836.1504111803.git.jcody@redhat.com>",
        "In-Reply-To": [
            "<cover.1504111803.git.jcody@redhat.com>",
            "<cover.1504111803.git.jcody@redhat.com>"
        ],
        "References": [
            "<cover.1504111803.git.jcody@redhat.com>",
            "<cover.1504111803.git.jcody@redhat.com>"
        ],
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.13",
        "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.27]);\n\tWed, 30 Aug 2017 16:53:05 +0000 (UTC)",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]",
        "X-Received-From": "209.132.183.28",
        "Subject": "[Qemu-devel] [PATCH v3 4/5] qemu-iotests: make python tests attempt\n\tto leave intermediate files",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "kwolf@redhat.com, qemu-block@nongnu.org, armbru@redhat.com,\n\tstefanha@redhat.com, jsnow@redhat.com",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "Now that 'check' will clean up after tests, try and make python\ntests leave intermediate files so that they might be inspectable\non failure.\n\nThis isn't perfect; the python unittest framework runs multiple\ntests, even if previous tests failed.  So we need to make sure that\neach test still begins with a \"clean\" slate, to prevent false\npositives or tainted test runs.\n\nRather than delete images in the unittest tearDown, invert this\nand delete images to be used in that test at the beginning of the\nsetUp.  This is to make sure that the test run is not inadvertently\nusing file droppings from previous runs.  We must use 'blind_remove'\nthen for these, as the files might not exist yet, but we don't want\nto throw an error for that.\n\nSigned-off-by: Jeff Cody <jcody@redhat.com>\n---\n tests/qemu-iotests/030 |  8 +++---\n tests/qemu-iotests/040 | 35 ++++++++++---------------\n tests/qemu-iotests/041 | 70 +++++++++++++++++++++-----------------------------\n tests/qemu-iotests/044 |  8 ++----\n tests/qemu-iotests/045 | 14 +++++-----\n tests/qemu-iotests/055 | 36 +++++++++-----------------\n tests/qemu-iotests/056 | 13 ++++------\n tests/qemu-iotests/057 |  6 ++---\n tests/qemu-iotests/065 |  6 ++---\n tests/qemu-iotests/096 |  5 ++--\n tests/qemu-iotests/118 | 31 ++++++++++------------\n tests/qemu-iotests/124 | 21 +++++----------\n tests/qemu-iotests/132 |  9 +++----\n tests/qemu-iotests/136 |  3 ++-\n tests/qemu-iotests/139 |  6 ++---\n tests/qemu-iotests/147 | 16 ++++--------\n tests/qemu-iotests/148 |  7 ++---\n tests/qemu-iotests/152 |  9 +++----\n tests/qemu-iotests/155 | 15 +++++------\n tests/qemu-iotests/165 |  6 ++---\n 20 files changed, 130 insertions(+), 194 deletions(-)",
    "diff": "diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030\nindex d745cb4..051fb0c 100755\n--- a/tests/qemu-iotests/030\n+++ b/tests/qemu-iotests/030\n@@ -21,7 +21,7 @@\n import time\n import os\n import iotests\n-from iotests import qemu_img, qemu_io\n+from iotests import qemu_img, qemu_io, blind_remove\n \n backing_img = os.path.join(iotests.test_dir, 'backing.img')\n mid_img = os.path.join(iotests.test_dir, 'mid.img')\n@@ -31,6 +31,9 @@ class TestSingleDrive(iotests.QMPTestCase):\n     image_len = 1 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(mid_img)\n+        blind_remove(backing_img)\n         iotests.create_image(backing_img, TestSingleDrive.image_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)\n@@ -41,9 +44,6 @@ class TestSingleDrive(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(mid_img)\n-        os.remove(backing_img)\n \n     def test_stream(self):\n         self.assert_no_active_block_jobs()\ndiff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040\nindex 95b7510..736afa7 100755\n--- a/tests/qemu-iotests/040\n+++ b/tests/qemu-iotests/040\n@@ -24,7 +24,7 @@\n import time\n import os\n import iotests\n-from iotests import qemu_img, qemu_io\n+from iotests import qemu_img, qemu_io, blind_remove\n import struct\n import errno\n \n@@ -76,6 +76,9 @@ class TestSingleDrive(ImageCommitTestCase):\n     test_len = 1 * 1024 * 256\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(mid_img)\n+        blind_remove(backing_img)\n         iotests.create_image(backing_img, self.image_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)\n@@ -88,9 +91,6 @@ class TestSingleDrive(ImageCommitTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(mid_img)\n-        os.remove(backing_img)\n \n     def test_commit(self):\n         self.run_commit_test(mid_img, backing_img)\n@@ -214,6 +214,9 @@ class TestRelativePaths(ImageCommitTestCase):\n         except OSError as exception:\n             if exception.errno != errno.EEXIST:\n                 raise\n+        blind_remove(self.test_img)\n+        blind_remove(self.mid_img_abs)\n+        blind_remove(self.backing_img_abs)\n         iotests.create_image(self.backing_img_abs, TestRelativePaths.image_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.backing_img_abs, self.mid_img_abs)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.mid_img_abs, self.test_img)\n@@ -226,16 +229,6 @@ class TestRelativePaths(ImageCommitTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(self.test_img)\n-        os.remove(self.mid_img_abs)\n-        os.remove(self.backing_img_abs)\n-        try:\n-            os.rmdir(os.path.join(iotests.test_dir, self.dir1))\n-            os.rmdir(os.path.join(iotests.test_dir, self.dir3))\n-            os.rmdir(os.path.join(iotests.test_dir, self.dir2))\n-        except OSError as exception:\n-            if exception.errno != errno.EEXIST and exception.errno != errno.ENOTEMPTY:\n-                raise\n \n     def test_commit(self):\n         self.run_commit_test(self.mid_img, self.backing_img)\n@@ -280,6 +273,9 @@ class TestSetSpeed(ImageCommitTestCase):\n     image_len = 80 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(mid_img)\n+        blind_remove(backing_img)\n         qemu_img('create', backing_img, str(TestSetSpeed.image_len))\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)\n@@ -290,9 +286,6 @@ class TestSetSpeed(ImageCommitTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(mid_img)\n-        os.remove(backing_img)\n \n     def test_set_speed(self):\n         self.assert_no_active_block_jobs()\n@@ -319,6 +312,10 @@ class TestReopenOverlay(ImageCommitTestCase):\n     img3 = os.path.join(iotests.test_dir, '3.img')\n \n     def setUp(self):\n+        blind_remove(self.img0)\n+        blind_remove(self.img1)\n+        blind_remove(self.img2)\n+        blind_remove(self.img3)\n         iotests.create_image(self.img0, self.image_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img0, self.img1)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img1, self.img2)\n@@ -329,10 +326,6 @@ class TestReopenOverlay(ImageCommitTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(self.img0)\n-        os.remove(self.img1)\n-        os.remove(self.img2)\n-        os.remove(self.img3)\n \n     # This tests what happens when the overlay image of the 'top' node\n     # needs to be reopened in read-write mode in order to update the\ndiff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041\nindex a860a31..2654256 100755\n--- a/tests/qemu-iotests/041\n+++ b/tests/qemu-iotests/041\n@@ -21,7 +21,7 @@\n import time\n import os\n import iotests\n-from iotests import qemu_img, qemu_io\n+from iotests import qemu_img, qemu_io, blind_remove\n \n backing_img = os.path.join(iotests.test_dir, 'backing.img')\n target_backing_img = os.path.join(iotests.test_dir, 'target-backing.img')\n@@ -40,6 +40,9 @@ class TestSingleDrive(iotests.QMPTestCase):\n     qmp_target = target_img\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(backing_img)\n+        blind_remove(target_img)\n         iotests.create_image(backing_img, self.image_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)\n         self.vm = iotests.VM().add_drive(test_img, \"node-name=top,backing.node-name=base\")\n@@ -49,12 +52,6 @@ class TestSingleDrive(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(backing_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def test_complete(self):\n         self.assert_no_active_block_jobs()\n@@ -258,6 +255,10 @@ class TestMirrorNoBacking(iotests.QMPTestCase):\n     image_len = 2 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(backing_img)\n+        blind_remove(target_backing_img)\n+        blind_remove(target_img)\n         iotests.create_image(backing_img, TestMirrorNoBacking.image_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)\n         self.vm = iotests.VM().add_drive(test_img)\n@@ -265,13 +266,6 @@ class TestMirrorNoBacking(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(backing_img)\n-        try:\n-            os.remove(target_backing_img)\n-        except:\n-            pass\n-        os.remove(target_img)\n \n     def test_complete(self):\n         self.assert_no_active_block_jobs()\n@@ -328,6 +322,9 @@ class TestMirrorResized(iotests.QMPTestCase):\n     image_len = 2 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(backing_img)\n+        blind_remove(target_img)\n         iotests.create_image(backing_img, TestMirrorResized.backing_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)\n         qemu_img('resize', test_img, '2M')\n@@ -336,12 +333,6 @@ class TestMirrorResized(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(backing_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def test_complete_top(self):\n         self.assert_no_active_block_jobs()\n@@ -403,6 +394,10 @@ new_state = \"1\"\n \n     def setUp(self):\n         self.blkdebug_file = backing_img + \".blkdebug\"\n+        blind_remove(test_img)\n+        blind_remove(target_img)\n+        blind_remove(backing_img)\n+        blind_remove(self.blkdebug_file)\n         iotests.create_image(backing_img, TestReadErrors.image_len)\n         self.create_blkdebug_file(self.blkdebug_file, \"read_aio\", 5)\n         qemu_img('create', '-f', iotests.imgfmt,\n@@ -417,10 +412,6 @@ new_state = \"1\"\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(target_img)\n-        os.remove(backing_img)\n-        os.remove(self.blkdebug_file)\n \n     def test_report_read(self):\n         self.assert_no_active_block_jobs()\n@@ -558,6 +549,10 @@ new_state = \"1\"\n \n     def setUp(self):\n         self.blkdebug_file = target_img + \".blkdebug\"\n+        blind_remove(test_img)\n+        blind_remove(target_img)\n+        blind_remove(backing_img)\n+        blind_remove(self.blkdebug_file)\n         iotests.create_image(backing_img, TestWriteErrors.image_len)\n         self.create_blkdebug_file(self.blkdebug_file, \"write_aio\", 5)\n         qemu_img('create', '-f', iotests.imgfmt, '-obacking_file=%s' %(backing_img), test_img)\n@@ -568,10 +563,6 @@ new_state = \"1\"\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(target_img)\n-        os.remove(backing_img)\n-        os.remove(self.blkdebug_file)\n \n     def test_report_write(self):\n         self.assert_no_active_block_jobs()\n@@ -657,6 +648,9 @@ class TestSetSpeed(iotests.QMPTestCase):\n     image_len = 80 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(backing_img)\n+        blind_remove(target_img)\n         qemu_img('create', backing_img, str(TestSetSpeed.image_len))\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)\n         self.vm = iotests.VM().add_drive(test_img)\n@@ -664,9 +658,6 @@ class TestSetSpeed(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(backing_img)\n-        os.remove(target_img)\n \n     def test_set_speed(self):\n         self.assert_no_active_block_jobs()\n@@ -723,6 +714,8 @@ class TestUnbackedSource(iotests.QMPTestCase):\n     image_len = 2 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(target_img)\n         qemu_img('create', '-f', iotests.imgfmt, test_img,\n                  str(TestUnbackedSource.image_len))\n         self.vm = iotests.VM().add_drive(test_img)\n@@ -730,8 +723,6 @@ class TestUnbackedSource(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(target_img)\n \n     def test_absolute_paths_full(self):\n         self.assert_no_active_block_jobs()\n@@ -764,6 +755,8 @@ class TestGranularity(iotests.QMPTestCase):\n     image_len = 10 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(target_img)\n         qemu_img('create', '-f', iotests.imgfmt, test_img,\n                  str(TestGranularity.image_len))\n         qemu_io('-c', 'write 0 %d' % (self.image_len),\n@@ -775,8 +768,6 @@ class TestGranularity(iotests.QMPTestCase):\n         self.vm.shutdown()\n         self.assertTrue(iotests.compare_images(test_img, target_img),\n                         'target image does not match source after mirroring')\n-        os.remove(test_img)\n-        os.remove(target_img)\n \n     def test_granularity(self):\n         self.assert_no_active_block_jobs()\n@@ -797,6 +788,9 @@ class TestRepairQuorum(iotests.QMPTestCase):\n     IMAGES = [ quorum_img1, quorum_img2, quorum_img3 ]\n \n     def setUp(self):\n+        for i in self.IMAGES + [ quorum_repair_img, quorum_snapshot_file ]:\n+            blind_remove(i)\n+\n         self.vm = iotests.VM()\n \n         if iotests.qemu_default_machine == 'pc':\n@@ -823,12 +817,6 @@ class TestRepairQuorum(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        for i in self.IMAGES + [ quorum_repair_img, quorum_snapshot_file ]:\n-            # Do a try/except because the test may have deleted some images\n-            try:\n-                os.remove(i)\n-            except OSError:\n-                pass\n \n     def test_complete(self):\n         if not iotests.supports_quorum():\ndiff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044\nindex 11ea0f4..6b1a897 100755\n--- a/tests/qemu-iotests/044\n+++ b/tests/qemu-iotests/044\n@@ -23,7 +23,7 @@ import os\n import qcow2\n from qcow2 import QcowHeader\n import iotests\n-from iotests import qemu_img, qemu_img_verbose, qemu_io\n+from iotests import qemu_img, qemu_img_verbose, qemu_io, blind_remove\n import struct\n import subprocess\n \n@@ -99,15 +99,11 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):\n \n \n     def setUp(self):\n+        blind_remove(test_img)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=512', test_img, '16G')\n         self.preallocate(test_img)\n         pass\n \n-\n-    def tearDown(self):\n-        os.remove(test_img)\n-        pass\n-\n     def test_grow_refcount_table(self):\n         qemu_io('-c', 'write 3800M 1M', test_img)\n         qemu_img_verbose('check' , test_img)\ndiff --git a/tests/qemu-iotests/045 b/tests/qemu-iotests/045\nindex 6be8fc4..2edb84a 100755\n--- a/tests/qemu-iotests/045\n+++ b/tests/qemu-iotests/045\n@@ -20,7 +20,7 @@\n \n import os\n import iotests\n-from iotests import qemu_img\n+from iotests import qemu_img, blind_remove\n \n image0 = os.path.join(iotests.test_dir, 'image0')\n image1 = os.path.join(iotests.test_dir, 'image1')\n@@ -31,6 +31,11 @@ image4 = os.path.join(iotests.test_dir, 'image4')\n class TestFdSets(iotests.QMPTestCase):\n \n     def setUp(self):\n+        blind_remove(image0)\n+        blind_remove(image1)\n+        blind_remove(image2)\n+        blind_remove(image3)\n+        blind_remove(image4)\n         self.vm = iotests.VM()\n         qemu_img('create', '-f', iotests.imgfmt, image0, '128K')\n         qemu_img('create', '-f', iotests.imgfmt, image1, '128K')\n@@ -57,11 +62,6 @@ class TestFdSets(iotests.QMPTestCase):\n         self.file2.close()\n         self.file3.close()\n         self.file4.close()\n-        os.remove(image0)\n-        os.remove(image1)\n-        os.remove(image2)\n-        os.remove(image3)\n-        os.remove(image4)\n \n     def test_query_fdset(self):\n         result = self.vm.qmp('query-fdsets')\n@@ -128,6 +128,7 @@ class TestFdSets(iotests.QMPTestCase):\n # Add fd at runtime, there are two ways: monitor related or fdset related\n class TestSCMFd(iotests.QMPTestCase):\n     def setUp(self):\n+        blind_remove(image0)\n         self.vm = iotests.VM()\n         qemu_img('create', '-f', iotests.imgfmt, image0, '128K')\n         # Add an unused monitor, to verify it works fine when two monitor\n@@ -137,7 +138,6 @@ class TestSCMFd(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(image0)\n \n     def _send_fd_by_SCM(self):\n         ret = self.vm.send_fd_scm(image0)\ndiff --git a/tests/qemu-iotests/055 b/tests/qemu-iotests/055\nindex e1206ca..50588f8 100755\n--- a/tests/qemu-iotests/055\n+++ b/tests/qemu-iotests/055\n@@ -23,7 +23,7 @@\n import time\n import os\n import iotests\n-from iotests import qemu_img, qemu_io\n+from iotests import qemu_img, qemu_io, blind_remove\n \n test_img = os.path.join(iotests.test_dir, 'test.img')\n target_img = os.path.join(iotests.test_dir, 'target.img')\n@@ -32,6 +32,7 @@ blockdev_target_img = os.path.join(iotests.test_dir, 'blockdev-target.img')\n image_len = 64 * 1024 * 1024 # MB\n \n def setUpModule():\n+    blind_remove(test_img)\n     qemu_img('create', '-f', iotests.imgfmt, test_img, str(image_len))\n     qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x11 0 64k', test_img)\n     qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x00 64k 128k', test_img)\n@@ -40,12 +41,11 @@ def setUpModule():\n     qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xdc 32M 124k', test_img)\n     qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x33 67043328 64k', test_img)\n \n-def tearDownModule():\n-    os.remove(test_img)\n-\n \n class TestSingleDrive(iotests.QMPTestCase):\n     def setUp(self):\n+        blind_remove(blockdev_target_img)\n+        blind_remove(target_img)\n         qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(image_len))\n \n         self.vm = iotests.VM().add_drive(test_img)\n@@ -56,11 +56,6 @@ class TestSingleDrive(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(blockdev_target_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def do_test_cancel(self, cmd, target):\n         self.assert_no_active_block_jobs()\n@@ -164,6 +159,8 @@ class TestSingleDrive(iotests.QMPTestCase):\n \n class TestSetSpeed(iotests.QMPTestCase):\n     def setUp(self):\n+        blind_remove(blockdev_target_img)\n+        blind_remove(target_img)\n         qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(image_len))\n \n         self.vm = iotests.VM().add_drive(test_img)\n@@ -172,11 +169,6 @@ class TestSetSpeed(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(blockdev_target_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def do_test_set_speed(self, cmd, target):\n         self.assert_no_active_block_jobs()\n@@ -248,6 +240,8 @@ class TestSetSpeed(iotests.QMPTestCase):\n \n class TestSingleTransaction(iotests.QMPTestCase):\n     def setUp(self):\n+        blind_remove(blockdev_target_img)\n+        blind_remove(target_img)\n         qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(image_len))\n \n         self.vm = iotests.VM().add_drive(test_img)\n@@ -258,11 +252,6 @@ class TestSingleTransaction(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(blockdev_target_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def do_test_cancel(self, cmd, target):\n         self.assert_no_active_block_jobs()\n@@ -452,13 +441,12 @@ class TestDriveCompression(iotests.QMPTestCase):\n     fmt_supports_compression = [{'type': 'qcow2', 'args': ()},\n                                 {'type': 'vmdk', 'args': ('-o', 'subformat=streamOptimized')}]\n \n+    def setUp(self):\n+        blind_remove(blockdev_target_img)\n+        blind_remove(target_img)\n+\n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(blockdev_target_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def do_prepare_drives(self, fmt, args, attach_target):\n         self.vm = iotests.VM().add_drive(test_img)\ndiff --git a/tests/qemu-iotests/056 b/tests/qemu-iotests/056\nindex 04f2c3c..3aefb93 100755\n--- a/tests/qemu-iotests/056\n+++ b/tests/qemu-iotests/056\n@@ -23,7 +23,7 @@\n import time\n import os\n import iotests\n-from iotests import qemu_img, qemu_io, create_image\n+from iotests import qemu_img, qemu_io, create_image, blind_remove\n \n backing_img = os.path.join(iotests.test_dir, 'backing.img')\n test_img = os.path.join(iotests.test_dir, 'test.img')\n@@ -33,6 +33,9 @@ class TestSyncModesNoneAndTop(iotests.QMPTestCase):\n     image_len = 64 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(backing_img)\n+        blind_remove(target_img)\n         create_image(backing_img, TestSyncModesNoneAndTop.image_len)\n         qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)\n         qemu_io('-c', 'write -P0x41 0 512', test_img)\n@@ -44,12 +47,6 @@ class TestSyncModesNoneAndTop(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        os.remove(backing_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def test_complete_top(self):\n         self.assert_no_active_block_jobs()\n@@ -84,12 +81,12 @@ class TestSyncModesNoneAndTop(iotests.QMPTestCase):\n \n class TestBeforeWriteNotifier(iotests.QMPTestCase):\n     def setUp(self):\n+        blind_remove(target_img)\n         self.vm = iotests.VM().add_drive_raw(\"file=blkdebug::null-co://,id=drive0,align=65536,driver=blkdebug\")\n         self.vm.launch()\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(target_img)\n \n     def test_before_write_notifier(self):\n         self.vm.pause_drive(\"drive0\")\ndiff --git a/tests/qemu-iotests/057 b/tests/qemu-iotests/057\nindex 9f0a5a3..0d99959 100755\n--- a/tests/qemu-iotests/057\n+++ b/tests/qemu-iotests/057\n@@ -23,7 +23,7 @@\n import time\n import os\n import iotests\n-from iotests import qemu_img, qemu_io\n+from iotests import qemu_img, qemu_io, blind_remove\n \n test_drv_base_name = 'drive'\n \n@@ -36,6 +36,8 @@ class ImageSnapshotTestCase(iotests.QMPTestCase):\n \n     def _setUp(self, test_img_base_name, image_num):\n         self.vm = iotests.VM()\n+        for dev_expect in self.expect:\n+            blind_remove(dev_expect['image'])\n         for i in range(0, image_num):\n             filename = '%s%d' % (test_img_base_name, i)\n             img = os.path.join(iotests.test_dir, filename)\n@@ -49,8 +51,6 @@ class ImageSnapshotTestCase(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        for dev_expect in self.expect:\n-            os.remove(dev_expect['image'])\n \n     def createSnapshotInTransaction(self, snapshot_num, abort = False):\n         actions = []\ndiff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065\nindex 72aa970..b63ee13 100755\n--- a/tests/qemu-iotests/065\n+++ b/tests/qemu-iotests/065\n@@ -23,7 +23,7 @@ import os\n import re\n import json\n import iotests\n-from iotests import qemu_img, qemu_img_pipe\n+from iotests import qemu_img, qemu_img_pipe, blind_remove\n import unittest\n \n test_img = os.path.join(iotests.test_dir, 'test.img')\n@@ -32,14 +32,12 @@ class TestImageInfoSpecific(iotests.QMPTestCase):\n     '''Abstract base class for ImageInfoSpecific tests'''\n \n     def setUp(self):\n+        blind_remove(test_img)\n         if self.img_options is None:\n             self.skipTest('Skipping abstract test class')\n         qemu_img('create', '-f', iotests.imgfmt, '-o', self.img_options,\n                  test_img, '128K')\n \n-    def tearDown(self):\n-        os.remove(test_img)\n-\n class TestQemuImgInfo(TestImageInfoSpecific):\n     '''Abstract base class for qemu-img info tests'''\n \ndiff --git a/tests/qemu-iotests/096 b/tests/qemu-iotests/096\nindex aeeb375..d1c4902 100644\n--- a/tests/qemu-iotests/096\n+++ b/tests/qemu-iotests/096\n@@ -21,6 +21,7 @@\n \n import iotests\n import os\n+from iotests import blind_remove\n \n class TestLiveSnapshot(iotests.QMPTestCase):\n     base_img = os.path.join(iotests.test_dir, 'base.img')\n@@ -30,6 +31,8 @@ class TestLiveSnapshot(iotests.QMPTestCase):\n     iops_size = 1024\n \n     def setUp(self):\n+        blind_remove(self.base_img)\n+        blind_remove(self.target_img)\n         opts = []\n         opts.append('node-name=base')\n         opts.append('throttling.group=%s' % self.group)\n@@ -41,8 +44,6 @@ class TestLiveSnapshot(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(self.base_img)\n-        os.remove(self.target_img)\n \n     def checkConfig(self, active_layer):\n         result = self.vm.qmp('query-block')\ndiff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118\nindex 8a9e838..d90ea98 100755\n--- a/tests/qemu-iotests/118\n+++ b/tests/qemu-iotests/118\n@@ -23,7 +23,7 @@ import os\n import stat\n import time\n import iotests\n-from iotests import qemu_img\n+from iotests import qemu_img, blind_remove\n \n old_img = os.path.join(iotests.test_dir, 'test0.img')\n new_img = os.path.join(iotests.test_dir, 'test1.img')\n@@ -323,6 +323,8 @@ class TestInitiallyFilled(GeneralChangeTestsBaseClass):\n     was_empty = False\n \n     def setUp(self, media, interface):\n+        blind_remove(old_img)\n+        blind_remove(new_img)\n         qemu_img('create', '-f', iotests.imgfmt, old_img, '1440k')\n         qemu_img('create', '-f', iotests.imgfmt, new_img, '1440k')\n         self.vm = iotests.VM()\n@@ -336,8 +338,6 @@ class TestInitiallyFilled(GeneralChangeTestsBaseClass):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(old_img)\n-        os.remove(new_img)\n \n     def test_insert_on_filled(self):\n         result = self.vm.qmp('blockdev-add',\n@@ -360,13 +360,13 @@ class TestInitiallyEmpty(GeneralChangeTestsBaseClass):\n     was_empty = True\n \n     def setUp(self, media, interface):\n+        blind_remove(new_img)\n         qemu_img('create', '-f', iotests.imgfmt, new_img, '1440k')\n         self.vm = iotests.VM().add_drive(None, 'media=%s' % media, interface)\n         self.vm.launch()\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(new_img)\n \n     def test_remove_on_empty(self):\n         result = self.vm.qmp('blockdev-open-tray', device='drive0')\n@@ -411,16 +411,16 @@ class TestFloppyInitiallyEmpty(TestInitiallyEmpty):\n \n class TestChangeReadOnly(ChangeBaseClass):\n     def setUp(self):\n-        qemu_img('create', '-f', iotests.imgfmt, old_img, '1440k')\n-        qemu_img('create', '-f', iotests.imgfmt, new_img, '1440k')\n-        self.vm = iotests.VM()\n-\n-    def tearDown(self):\n-        self.vm.shutdown()\n         os.chmod(old_img, 0666)\n         os.chmod(new_img, 0666)\n-        os.remove(old_img)\n-        os.remove(new_img)\n+        blind_remove(old_img)\n+        blind_remove(new_img)\n+        qemu_img('create', '-f', iotests.imgfmt, old_img, '1440k')\n+        qemu_img('create', '-f', iotests.imgfmt, new_img, '1440k')\n+        self.vm = iotests.VM()\n+\n+    def tearDown(self):\n+        self.vm.shutdown()\n \n     def test_ro_ro_retain(self):\n         os.chmod(old_img, 0444)\n@@ -645,6 +645,8 @@ TestInitiallyEmpty = None\n \n class TestBlockJobsAfterCycle(ChangeBaseClass):\n     def setUp(self):\n+        blind_remove(old_img)\n+        blind_remove(new_img)\n         qemu_img('create', '-f', iotests.imgfmt, old_img, '1M')\n \n         self.vm = iotests.VM()\n@@ -678,11 +680,6 @@ class TestBlockJobsAfterCycle(ChangeBaseClass):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(old_img)\n-        try:\n-            os.remove(new_img)\n-        except OSError:\n-            pass\n \n     def test_snapshot_and_commit(self):\n         # We need backing file support\ndiff --git a/tests/qemu-iotests/124 b/tests/qemu-iotests/124\nindex 8e76e62..1aabe64 100644\n--- a/tests/qemu-iotests/124\n+++ b/tests/qemu-iotests/124\n@@ -22,20 +22,13 @@\n \n import os\n import iotests\n+from iotests import blind_remove\n \n \n def io_write_patterns(img, patterns):\n     for pattern in patterns:\n         iotests.qemu_io('-c', 'write -P%s %s %s' % pattern, img)\n \n-\n-def try_remove(img):\n-    try:\n-        os.remove(img)\n-    except OSError:\n-        pass\n-\n-\n def transaction_action(action, **kwargs):\n     return {\n         'type': action,\n@@ -82,13 +75,13 @@ class Bitmap:\n \n     def del_target(self):\n         for image in self.backups.pop():\n-            try_remove(image)\n+            blind_remove(image)\n         self.num -= 1\n \n     def cleanup(self):\n         for backup in self.backups:\n             for image in backup:\n-                try_remove(image)\n+                blind_remove(image)\n \n \n class TestIncrementalBackupBase(iotests.QMPTestCase):\n@@ -102,6 +95,10 @@ class TestIncrementalBackupBase(iotests.QMPTestCase):\n \n \n     def setUp(self):\n+        for filename in self.files:\n+            blind_remove(filename)\n+        for bitmap in self.bitmaps:\n+            bitmap.cleanup()\n         # Create a base image with a distinctive patterning\n         drive0 = self.add_node('drive0')\n         self.img_create(drive0['file'], drive0['fmt'])\n@@ -273,10 +270,6 @@ class TestIncrementalBackupBase(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        for bitmap in self.bitmaps:\n-            bitmap.cleanup()\n-        for filename in self.files:\n-            try_remove(filename)\n \n \n \ndiff --git a/tests/qemu-iotests/132 b/tests/qemu-iotests/132\nindex f53ef6e..375d9ed 100644\n--- a/tests/qemu-iotests/132\n+++ b/tests/qemu-iotests/132\n@@ -21,7 +21,7 @@\n import time\n import os\n import iotests\n-from iotests import qemu_img, qemu_io\n+from iotests import qemu_img, qemu_io, blind_remove\n \n test_img = os.path.join(iotests.test_dir, 'test.img')\n target_img = os.path.join(iotests.test_dir, 'target.img')\n@@ -30,6 +30,8 @@ class TestSingleDrive(iotests.QMPTestCase):\n     image_len = 2 * 1024 * 1024 # MB\n \n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(target_img)\n         # Write data to the image so we can compare later\n         qemu_img('create', '-f', iotests.imgfmt, test_img, str(TestSingleDrive.image_len))\n         qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x5d 0 2M', test_img)\n@@ -39,11 +41,6 @@ class TestSingleDrive(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def test_mirror_discard(self):\n         result = self.vm.qmp('drive-mirror', device='drive0', sync='full',\ndiff --git a/tests/qemu-iotests/136 b/tests/qemu-iotests/136\nindex 4b99489..7209cfc 100644\n--- a/tests/qemu-iotests/136\n+++ b/tests/qemu-iotests/136\n@@ -21,6 +21,7 @@\n \n import iotests\n import os\n+from iotests import blind_remove\n \n interval_length = 10\n nsec_per_sec = 1000000000\n@@ -68,6 +69,7 @@ sector = \"%d\"\n         file.close()\n \n     def setUp(self):\n+        blind_remove(blkdebug_file)\n         drive_args = []\n         drive_args.append(\"stats-intervals.0=%d\" % interval_length)\n         drive_args.append(\"stats-account-invalid=%s\" %\n@@ -84,7 +86,6 @@ sector = \"%d\"\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(blkdebug_file)\n \n     def accounted_ops(self, read = False, write = False, flush = False):\n         ops = 0\ndiff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139\nindex 50cf40f..7d05bfb 100644\n--- a/tests/qemu-iotests/139\n+++ b/tests/qemu-iotests/139\n@@ -22,6 +22,7 @@\n import os\n import iotests\n import time\n+from iotests import blind_remove\n \n base_img = os.path.join(iotests.test_dir, 'base.img')\n new_img = os.path.join(iotests.test_dir, 'new.img')\n@@ -29,6 +30,8 @@ new_img = os.path.join(iotests.test_dir, 'new.img')\n class TestBlockdevDel(iotests.QMPTestCase):\n \n     def setUp(self):\n+        blind_remove(base_img)\n+        blind_remove(new_img)\n         iotests.qemu_img('create', '-f', iotests.imgfmt, base_img, '1M')\n         self.vm = iotests.VM()\n         self.vm.add_device(\"virtio-scsi-pci,id=virtio-scsi\")\n@@ -36,9 +39,6 @@ class TestBlockdevDel(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(base_img)\n-        if os.path.isfile(new_img):\n-            os.remove(new_img)\n \n     # Check whether a BlockDriverState exists\n     def checkBlockDriverState(self, node, must_exist = True):\ndiff --git a/tests/qemu-iotests/147 b/tests/qemu-iotests/147\nindex db34838..baf72d0 100755\n--- a/tests/qemu-iotests/147\n+++ b/tests/qemu-iotests/147\n@@ -23,7 +23,7 @@ import socket\n import stat\n import time\n import iotests\n-from iotests import cachemode, imgfmt, qemu_img, qemu_nbd\n+from iotests import cachemode, imgfmt, qemu_img, qemu_nbd, blind_remove\n \n NBD_PORT = 10811\n \n@@ -70,17 +70,14 @@ class NBDBlockdevAddBase(iotests.QMPTestCase):\n \n class QemuNBD(NBDBlockdevAddBase):\n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(unix_socket)\n         qemu_img('create', '-f', iotests.imgfmt, test_img, '64k')\n         self.vm = iotests.VM()\n         self.vm.launch()\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        try:\n-            os.remove(unix_socket)\n-        except OSError:\n-            pass\n \n     def _server_up(self, *args):\n         self.assertEqual(qemu_nbd('-f', imgfmt, test_img, *args), 0)\n@@ -105,6 +102,8 @@ class QemuNBD(NBDBlockdevAddBase):\n \n class BuiltinNBD(NBDBlockdevAddBase):\n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(unix_socket)\n         qemu_img('create', '-f', iotests.imgfmt, test_img, '64k')\n         self.vm = iotests.VM()\n         self.vm.launch()\n@@ -118,11 +117,6 @@ class BuiltinNBD(NBDBlockdevAddBase):\n     def tearDown(self):\n         self.vm.shutdown()\n         self.server.shutdown()\n-        os.remove(test_img)\n-        try:\n-            os.remove(unix_socket)\n-        except OSError:\n-            pass\n \n     def _server_up(self, address):\n         result = self.server.qmp('nbd-server-start', addr=address)\ndiff --git a/tests/qemu-iotests/148 b/tests/qemu-iotests/148\nindex e01b061..562df85 100644\n--- a/tests/qemu-iotests/148\n+++ b/tests/qemu-iotests/148\n@@ -21,6 +21,7 @@\n \n import os\n import iotests\n+from iotests import blind_remove\n \n imgs = (os.path.join(iotests.test_dir, 'quorum0.img'),\n         os.path.join(iotests.test_dir, 'quorum1.img'),\n@@ -48,6 +49,9 @@ sector = \"%d\"\n         file.close()\n \n     def setUp(self):\n+        for i in range(len(imgs)):\n+            blind_remove(imgs[i])\n+            blind_remove(img_conf[i])\n         driveopts = ['driver=quorum', 'vote-threshold=2']\n         driveopts.append('read-pattern=%s' % self.read_pattern)\n         for i in range(len(imgs)):\n@@ -64,9 +68,6 @@ sector = \"%d\"\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        for i in range(len(imgs)):\n-            os.remove(imgs[i])\n-            os.remove(img_conf[i])\n \n     def do_check_event(self, node, sector = 0):\n         if node == None:\ndiff --git a/tests/qemu-iotests/152 b/tests/qemu-iotests/152\nindex fec546d..b2a92db 100644\n--- a/tests/qemu-iotests/152\n+++ b/tests/qemu-iotests/152\n@@ -20,24 +20,21 @@\n \n import os\n import iotests\n-from iotests import qemu_img\n+from iotests import qemu_img, blind_remove\n \n test_img = os.path.join(iotests.test_dir, 'test.img')\n target_img = os.path.join(iotests.test_dir, 'target.img')\n \n class TestUnaligned(iotests.QMPTestCase):\n     def setUp(self):\n+        blind_remove(test_img)\n+        blind_remove(target_img)\n         qemu_img('create', '-f', iotests.imgfmt, test_img, '512')\n         self.vm = iotests.VM().add_drive(test_img)\n         self.vm.launch()\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(test_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def test_unaligned(self):\n         result = self.vm.qmp('drive-mirror', device='drive0', sync='full',\ndiff --git a/tests/qemu-iotests/155 b/tests/qemu-iotests/155\nindex 0b86ea4..4c0aa2e 100755\n--- a/tests/qemu-iotests/155\n+++ b/tests/qemu-iotests/155\n@@ -23,7 +23,7 @@\n \n import os\n import iotests\n-from iotests import qemu_img\n+from iotests import qemu_img, blind_remove\n \n back0_img = os.path.join(iotests.test_dir, 'back0.' + iotests.imgfmt)\n back1_img = os.path.join(iotests.test_dir, 'back1.' + iotests.imgfmt)\n@@ -51,6 +51,11 @@ class BaseClass(iotests.QMPTestCase):\n     target_real_backing = None\n \n     def setUp(self):\n+        blind_remove(source_img)\n+        blind_remove(back2_img)\n+        blind_remove(back1_img)\n+        blind_remove(back0_img)\n+        blind_remove(target_img)\n         qemu_img('create', '-f', iotests.imgfmt, back0_img, '1M')\n         qemu_img('create', '-f', iotests.imgfmt, '-b', back0_img, back1_img)\n         qemu_img('create', '-f', iotests.imgfmt, '-b', back1_img, back2_img)\n@@ -95,14 +100,6 @@ class BaseClass(iotests.QMPTestCase):\n \n     def tearDown(self):\n         self.vm.shutdown()\n-        os.remove(source_img)\n-        os.remove(back2_img)\n-        os.remove(back1_img)\n-        os.remove(back0_img)\n-        try:\n-            os.remove(target_img)\n-        except OSError:\n-            pass\n \n     def findBlockNode(self, node_name, id=None):\n         if id:\ndiff --git a/tests/qemu-iotests/165 b/tests/qemu-iotests/165\nindex 74d7b79..cd6fff7 100755\n--- a/tests/qemu-iotests/165\n+++ b/tests/qemu-iotests/165\n@@ -21,7 +21,7 @@\n import os\n import re\n import iotests\n-from iotests import qemu_img\n+from iotests import qemu_img, blind_remove\n \n disk = os.path.join(iotests.test_dir, 'disk')\n disk_size = 0x40000000 # 1G\n@@ -36,11 +36,9 @@ regions2 = ((0x10000000, 0x20000),\n class TestPersistentDirtyBitmap(iotests.QMPTestCase):\n \n     def setUp(self):\n+        blind_remove(disk)\n         qemu_img('create', '-f', iotests.imgfmt, disk, str(disk_size))\n \n-    def tearDown(self):\n-        os.remove(disk)\n-\n     def mkVm(self):\n         return iotests.VM().add_drive(disk)\n \n",
    "prefixes": [
        "v3",
        "4/5"
    ]
}