From nobody Mon Feb 9 08:55:27 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515747832011554.0877752688588; Fri, 12 Jan 2018 01:03:52 -0800 (PST) Received: from localhost ([::1]:55058 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZvFf-0004TM-5P for importer@patchew.org; Fri, 12 Jan 2018 04:03:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZvDd-0003Dn-Eq for qemu-devel@nongnu.org; Fri, 12 Jan 2018 04:01:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZvDZ-0000Ij-OM for qemu-devel@nongnu.org; Fri, 12 Jan 2018 04:01:45 -0500 Received: from mail-eopbgr60112.outbound.protection.outlook.com ([40.107.6.112]:3712 helo=EUR01-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZvDZ-0000F6-JI; Fri, 12 Jan 2018 04:01:41 -0500 Received: from localhost.sw.ru (195.214.232.6) by DB6PR0801MB2070.eurprd08.prod.outlook.com (2603:10a6:4:77::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Fri, 12 Jan 2018 09:01:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=f3bKau20/dYih5h1BuYN9JG4OF2gPO75PXaRd/Y/W98=; b=K1ZdyBz/SkRPbyigGcYGRhOsSQrwwfQs0kSgZdNTMt2PanHBb1uWNAOa35usLqjGxA3mH40dTXQrV7KjlBBmx908h7XgROz3sxHwiUgZevyJOVYjF9I7KTE3l8benikh6azbjN/ZPPYl4p77sJ9LIZSpB8+qvPzZJMO1IGMJR/c= From: Klim Kireev To: qemu-devel@nongnu.org Date: Fri, 12 Jan 2018 12:01:20 +0300 Message-Id: <20180112090122.1702-4-klim.kireev@virtuozzo.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180112090122.1702-1-klim.kireev@virtuozzo.com> References: <20180112090122.1702-1-klim.kireev@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR05CA0269.eurprd05.prod.outlook.com (2603:10a6:3:fc::21) To DB6PR0801MB2070.eurprd08.prod.outlook.com (2603:10a6:4:77::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dab19077-2bdd-4640-8ede-08d5599b1793 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020079)(4652020)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DB6PR0801MB2070; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2070; 3:JIkczkvKRkJRIBg2Z50Bwam5hLvxFq2Z/DQQrwNYQe2oPB8z7dwfg/t1LU2h35Tjb8fsqAhKEQEwR9+uwOsJeaWIidoLL3tGFOlwSuTgyRlMhwwUU4ahA5nuBhTOU8CIG1gDIibjqdeIlwIygQM3ofHRURj9swiUnyPZHMqn3l5XzpklD4zNTJ0ahxDD4qqJF+iTy9IHH6C8aL/CvLgtrcPBfd0K3Rx9bnh+X/GnLEvJeTHOajf96S4mVJ0B+Xge; 25:vvO1SSIh+mD11c1aNjjgIbBRzLMMqcYvaXao2dtIc9numsQjbDdvjU91pOCYrWRRvLiYmRRwCt/H+x6FwHJTM6HHXNZt6D3K5kgKeAdX43f/kg4GiDHu2pMhxaZJL0DC4KR5dLweXq0R0yjx1qwZx8JLsKNkp/ZwKI8yEpA1hoE5b7AtPlvoeHGgDVbDQWL44K3nG2bNo3xB6N0KxcE3zQg3JyNhU4pJDbXBZXNL3KoDrIASVuh5w+la0to5BuWUk4D3yBPXsMybC5uk3NtMDLPGe8qBoenSSPs8zsZsjPoGblzlUEvaF3pK5INPZcK5v1VFlsIRZkJe43lOn1KIxA==; 31:71DUBGWZdbcL0JJCKowTyLtFANlc1/+7fcc+joguNEFI3N1x4gU0QKuXnin7gmGnqxPtvRyBs5A4V7xOMnO0+TQ9g2L48bZvn4lkZnegxe12chV0+7EJ1jgl0bz5F4YMNOkoXRCfAFm5UjRPJ5mS0OsoXZvbgESK3K8g6MtygrimrgVtja0xZJ3eRjzJopMrsW6QXxEaGgMgfOZyO7vjQNHSDWsbu6fq746DJr+DViU= X-MS-TrafficTypeDiagnostic: DB6PR0801MB2070: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=klim.kireev@virtuozzo.com; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2070; 20:oKanG7sEP40HlsvMPUBQ+ZH7EAZPk1qrEClAPtu/LFod+DjtuB60xdJ0NJBxv3uaskfk2u+kbyNkoTvScG5wwcTucoPviF9TCygpfJaAITbZtRne97ltJTMTQU35TWzvGNyOu5bMgKXIE2lAE0CpW4qAR0vY9/jJMBKKf7ph4EGOFQvFh0uOMJSTAEFK2DMBt70zA0A7WkfACx5TPVaXb4bS1HNmfO3YfJP5L0Pxl2HFnxi7K2gQ+/DwX2lEo4RsCFDXdSiXdGvY73DfURnqyzPrw8LQ4b4tW6iRJmB5P+T0MJeNU2Hu49usYMCLDSozsJ6E+QwwpHdjvTC65kld5/LMe71TXMiSNunqZnXf9etKb5ckjV7w3T3JDQeUPFojoES2eSwGn5l68RuOyoP6cVOh+4B2mE6+R7M33zAV60A=; 4:TBBGBH+Zj8PYg6sIEKv7hZpmx7F9TbK8On5c6mW1tl761Y0DQu+RXKqbNbHZoUB3o9jhVHiX+I3gkNIo60Jj3noyfK48eMIh9PT5Llachf6YSI2wM/sozT7n1Eco2fF99UL8prAlWIGbnORf7JSyxy7CK5bOTn6mW83Su4P4TvlpDbaLtcMEE89bexsUsUW4aoHX+2PqdeRxyqnMT3IkLx+wY8Z08/Crtb6LYGoOP2Shgn1FRXp/YlFxnftGKQ4GXniHvtLPsJfKCnaiAxRGUo9yna6ErwFcJcNy4ykNV4QMruFj/d8Xd7SIu3P77s48 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(3231023)(944501141)(10201501046)(6041268)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:DB6PR0801MB2070; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:DB6PR0801MB2070; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6069001)(366004)(376002)(396003)(39850400004)(39380400002)(346002)(199004)(189003)(1076002)(386003)(69596002)(2351001)(66066001)(7736002)(6486002)(305945005)(2361001)(76176011)(51416003)(25786009)(36756003)(59450400001)(2906002)(52116002)(6506007)(47776003)(4326008)(6666003)(2950100002)(97736004)(5660300001)(6916009)(966005)(16586007)(50466002)(8936002)(81166006)(16526018)(81156014)(8676002)(48376002)(50226002)(316002)(76506005)(106356001)(6512007)(6306002)(575784001)(86362001)(53416004)(6116002)(53936002)(3846002)(68736007)(478600001)(105586002); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0801MB2070; H:localhost.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0801MB2070; 23:p4iuETbK9n0rqf1NYqPp6spNS1hrCsxbYwCyA6z?= =?us-ascii?Q?FByEDPvAUQ3NOu03y80Wl/eC+UEpiYMJgNmqccuiL3SIWvflMMpMp8Cwdc5Z?= =?us-ascii?Q?4/5n4IaknRL85zb/XUETEP+k0acYMMh24LeCqNiaVHxfxbJdc+XTeUrZpLq/?= =?us-ascii?Q?Qoc7D9S/ENTALxQcPJzNQeJvpE6reaKFFviHmjDBw+O6rQ69M5g8BEz87j38?= =?us-ascii?Q?ups12Lv15v6632ZtPLcbkdiBYSoAjAIESBfuHs8QTbkof6g/mFv+k1ACRwQ9?= =?us-ascii?Q?PecO8SfgIIwBP6EGqSCLkrQ1Qv6aPxz/5wyhRpiBwBXE3dzOrq67jhcnFhkb?= =?us-ascii?Q?JsWKsS+NaMRgKvZtRF0jry1l18n87rY7A/hquUMWvGuU6nLMUxDDNo2EaYIm?= =?us-ascii?Q?qlCUlC4biOGIuGbN0Hd5EUt3n4QmmFlD8SDB+4WlKVfdhHxO9rxc2m+9Rpf4?= =?us-ascii?Q?sYUkJMyB5fY2BKqhnUp9r+4Mt/EbSalFyN9bXv858gAlelay1CLP4QQveE0s?= =?us-ascii?Q?B7JE4MbQ7yrglv2dVXSNNAJSqrn9XYdRw5pLxSIuxLj4TqIpsuXwrGBExI7C?= =?us-ascii?Q?AnrUg2f9BM7/vfY1FY2VwNfSxa20fUnZUaw8zsyt/jfcwanNMamyQBUCIWgb?= =?us-ascii?Q?RMMbGkYZ3O8SxrWFFuE54jcERAbHJWvMI7r5b96WClISfos4LXp/mxcUi2jc?= =?us-ascii?Q?mEDatNuQVhA/OEi3PkdlfRmqkgclmVKSvu+pWLHQJ2YjF+LdPqwozEI8YZUb?= =?us-ascii?Q?sUwVjTCt2D+zMkv1hgjJFmYVDDRUUc9hdO1jsxxQEZQVyu35/99pI65meUi+?= =?us-ascii?Q?TYTsMEqzYYF45xTwOCD28ZTkKlP6B2R0wihVVOOfv2Xc+Mv8TxYQpfDDDvLE?= =?us-ascii?Q?UcRw/WUZRabpiaX+G1xQKvNgc8MFOypDbvpW08CUf8tVD69+tzEdAqwjf6yM?= =?us-ascii?Q?incB90h1zUFywZ4+cU3oiC35qRbJG+hnQJkkfP+R0A8jqyKYl6N3QskWbruH?= =?us-ascii?Q?+EjiQ04ZQRA8oUsKnkfgYOrzwmaJh2+FqWFj0utUx0dHSSOuaVHOJSRu/sYw?= =?us-ascii?Q?F1DxSPVCRU4AZfHFYxF5Q9S/GzD7RHPFTE8sjxkuJMCi4e3Y7HgZctmCVH+w?= =?us-ascii?Q?UvLH3P4e2zGz1KjUbZgt6ylx9lOWM0b3D53Nff3eX0CDL0O+/+ognFGirCgU?= =?us-ascii?Q?SVJIRJdxtkyM3Ns4KHAfItJSKFmVHFvebcqsa8I6TJT2vo3BUx7iKLF6R+g/?= =?us-ascii?Q?WbaY0CCC+iUaN8HiD5nnQNqX7mcVZJ6pg3D3AtRSkuN/sWuPyEur5ty1pHnw?= =?us-ascii?Q?uVg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2070; 6:VthaBl3hU7T6+r4HTOL0MSbxnoTgN8343JuszlkHEEOH0T5c4LIOjMXaIyM8ZA1szd4y3tkTkAwD2Rb3igeci0RkILuC2420xgfvySBvPeapMeRo/agT2PeRRYEUlCt5PgBGYe+yWnRdkClA01WFxHrjsD4Sjt+n7XfIiCeSmTN8nOGj2mAxY53EIBe9m/uzuJFvf0BSqfHdM8Kc7U/ayKM48fpD/JlhUoCaJrxOVQhx8wh9SIZxTtyVoZyMftAJX8ORt1lbRl7cMVuQyn1jzFDlHto8+hrRrMA3FCHIoF7musfp21ITJyN6MJtcDeF1bkij4Cz23piyHJ9cQ2TBJSmJYFNsbazgJy48BvG+yoM=; 5:H83x5aU2qpPGXlHyLGn8UzSLBwT/vASnEuByhKXV/zBxCCVk12ofFMpM7cIglTxd1DeT/q77QaA55HENxL7xltcVg94WXzIxvd6N8IGQqDsChkHYcFDezlr+bhEEG0il+5qsAjoLnhhBT3pHQu39X6Z7oS9lRL9jYGR31MD10QM=; 24:gBPMi10g6jS5Bx+QFRTjlcI8KZTIyzAK6zrRos9sezlJFVs8NTlqY2b16VWpKvEhS4Tt4abSNP/sBfCn2V3+e2JLDpTfNA+895MLTAYivwA=; 7:7STOF7Llfxp1hFwxZZ2r+ctFzz3NNS3VCHCn0H8NCZ+2kPm0fbITzI6p4V2Lb1AAIuBPBrC5L6JOS1ICYeQPgOzD7LazEcu07rlmgiJVtVns8HPcd8btW8XQV6W0TwwrzjQw5FrOzEWVDEqghCjlnGtSoaJl0DfXlQF9kSC+HufXEUO3vTHjaUePqTiVrTNKy6dhoaYDL9smiAv0gcexqPxKjfpCW9m50M4oZPE1nwTV4fEhgqDpsfzMNd0deaiF SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB2070; 20:6IHKLfzUlg6gvWJu+EP2KhR0ECd185l9d+YucFXuhn/sZNSDMCiFFWj+XnqirFDfkFuqnKFFhRvAzcig/UsxxYOZFlbLXxT5Fg3Aui9Et6fBX/wbimCNbBytLiDylGOuAwQLhxrhQIagEW9gOiaFSLZQQiJVT0a9rTRAyRb5Z9Q= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 09:01:38.7048 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dab19077-2bdd-4640-8ede-08d5599b1793 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB2070 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.6.112 Subject: [Qemu-devel] [PATCH 3/5] block/parallels: move some structures into header X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, den@openvz.org, stefanha@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To implement xml format, some defines and structures from parallels.c are required. Signed-off-by: Klim Kireev Reviewed-by: Vladimir Sementsov-Ogievskiy Signed-off-by: Denis V. Lunev CC: Stefan Hajnoczi --- block/parallels.c | 53 +--------------------------------- block/parallels.h | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 87 insertions(+), 52 deletions(-) create mode 100644 block/parallels.h diff --git a/block/parallels.c b/block/parallels.c index 9545761f49..f9a3b999ea 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -36,6 +36,7 @@ #include "qemu/bswap.h" #include "qemu/bitmap.h" #include "migration/blocker.h" +#include "parallels.h" =20 /**************************************************************/ =20 @@ -45,30 +46,6 @@ #define HEADER_INUSE_MAGIC (0x746F6E59) #define MAX_PARALLELS_IMAGE_FACTOR (1ull << 32) =20 -#define DEFAULT_CLUSTER_SIZE 1048576 /* 1 MiB */ - - -// always little-endian -typedef struct ParallelsHeader { - char magic[16]; // "WithoutFreeSpace" - uint32_t version; - uint32_t heads; - uint32_t cylinders; - uint32_t tracks; - uint32_t bat_entries; - uint64_t nb_sectors; - uint32_t inuse; - uint32_t data_off; - char padding[12]; -} QEMU_PACKED ParallelsHeader; - - -typedef enum ParallelsPreallocMode { - PRL_PREALLOC_MODE_FALLOCATE =3D 0, - PRL_PREALLOC_MODE_TRUNCATE =3D 1, - PRL_PREALLOC_MODE__MAX =3D 2, -} ParallelsPreallocMode; - static QEnumLookup prealloc_mode_lookup =3D { .array =3D (const char *const[]) { "falloc", @@ -77,34 +54,6 @@ static QEnumLookup prealloc_mode_lookup =3D { .size =3D PRL_PREALLOC_MODE__MAX }; =20 -typedef struct BDRVParallelsState { - /** Locking is conservative, the lock protects - * - image file extending (truncate, fallocate) - * - any access to block allocation table - */ - CoMutex lock; - - ParallelsHeader *header; - uint32_t header_size; - bool header_unclean; - - unsigned long *bat_dirty_bmap; - unsigned int bat_dirty_block; - - uint32_t *bat_bitmap; - unsigned int bat_size; - - int64_t data_end; - uint64_t prealloc_size; - ParallelsPreallocMode prealloc_mode; - - unsigned int tracks; - - unsigned int off_multiplier; - Error *migration_blocker; -} BDRVParallelsState; - - #define PARALLELS_OPT_PREALLOC_MODE "prealloc-mode" #define PARALLELS_OPT_PREALLOC_SIZE "prealloc-size" =20 diff --git a/block/parallels.h b/block/parallels.h new file mode 100644 index 0000000000..71183c0c8e --- /dev/null +++ b/block/parallels.h @@ -0,0 +1,86 @@ +/* +* Block driver for Parallels disk image format +* +* Copyright (c) 2015-2017 Virtuozzo, Inc. +* Authors: +* 2016-2017 Klim S. Kireev +* 2015 Denis V. Lunev +* +* This code was originally based on comparing different disk images created +* by Parallels. Currently it is based on opened OpenVZ sources +* available at +* https://github.com/OpenVZ/ploop +* +* Permission is hereby granted, free of charge, to any person obtaining a = copy +* of this software and associated documentation files (the "Software"), to= deal +* in the Software without restriction, including without limitation the ri= ghts +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included = in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS = OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTH= ER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING = FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ +#ifndef BLOCK_PARALLELS_H +#define BLOCK_PARALLELS_H +#include "qemu/coroutine.h" +#include "qemu/typedefs.h" + +#define DEFAULT_CLUSTER_SIZE 1048576 /* 1 MiB */ + +/* always little-endian */ +typedef struct ParallelsHeader { + char magic[16]; /* "WithoutFreeSpace" */ + uint32_t version; + uint32_t heads; + uint32_t cylinders; + uint32_t tracks; + uint32_t bat_entries; + uint64_t nb_sectors; + uint32_t inuse; + uint32_t data_off; + char padding[12]; +} QEMU_PACKED ParallelsHeader; + +typedef enum ParallelsPreallocMode { + PRL_PREALLOC_MODE_FALLOCATE =3D 0, + PRL_PREALLOC_MODE_TRUNCATE =3D 1, + PRL_PREALLOC_MODE__MAX =3D 2, +} ParallelsPreallocMode; + +typedef struct BDRVParallelsState { + /** Locking is conservative, the lock protects + * - image file extending (truncate, fallocate) + * - any access to block allocation table + */ + CoMutex lock; + + ParallelsHeader *header; + uint32_t header_size; + bool header_unclean; + + unsigned long *bat_dirty_bmap; + unsigned int bat_dirty_block; + + uint32_t *bat_bitmap; + unsigned int bat_size; + + int64_t data_end; + uint64_t prealloc_size; + ParallelsPreallocMode prealloc_mode; + + unsigned int tracks; + + unsigned int off_multiplier; + Error *migration_blocker; +} BDRVParallelsState; + +#endif --=20 2.14.3