From nobody Mon Feb 9 23:01:13 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 1515605934431469.9865573761472; Wed, 10 Jan 2018 09:38:54 -0800 (PST) Received: from localhost ([::1]:56007 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZKKy-0000ci-B9 for importer@patchew.org; Wed, 10 Jan 2018 12:38:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50546) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZKJ4-0007uI-AM for qemu-devel@nongnu.org; Wed, 10 Jan 2018 12:36:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZKJ2-0000q6-Ad for qemu-devel@nongnu.org; Wed, 10 Jan 2018 12:36:54 -0500 Received: from mail-ve1eur01on0105.outbound.protection.outlook.com ([104.47.1.105]:55808 helo=EUR01-VE1-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 1eZKJ1-0000ku-T4; Wed, 10 Jan 2018 12:36:52 -0500 Received: from localhost.sw.ru (195.214.232.6) by AM5PR0801MB2066.eurprd08.prod.outlook.com (2603:10a6:203:4c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 17:36:48 +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=PSpWXyyXhtNRAamDZ+dR8+TXUMqPQaF7IqaTU4aax3mTRNLPOALpMpP990yfWYl7c0T4U6qqy5GPbHWG6Ei7gQBoAv079YHKi6MX/kAaHrXwdT7NJVRrOeuUWWW+0SfK7Llz/0GqPs77h3AWwJP+JOgdk6H1UUXmJzcCJjLAWn8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=klim.kireev@virtuozzo.com; From: Klim Kireev To: qemu-devel@nongnu.org Date: Wed, 10 Jan 2018 20:36:33 +0300 Message-Id: <20180110173635.28255-4-klim.kireev@virtuozzo.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180110173635.28255-1-klim.kireev@virtuozzo.com> References: <20180110173635.28255-1-klim.kireev@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB3PR0202CA0004.eurprd02.prod.outlook.com (2603:10a6:8:1::17) To AM5PR0801MB2066.eurprd08.prod.outlook.com (2603:10a6:203:4c::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 95511cfc-4e08-4b2d-ca70-08d55850ba31 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2066; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2066; 3:mudrpkrjW3hszALW5je9Zs2aUvvLt2O03yhkwvelqmWbnfoAffPmAPC3FDP17hk372n/+sTBx8qfAQ4VdUenVzO3J3BG75p/3D7F5z+mGXFqNWHaG8t5AWoIxU8z+FP9Hd3ealGpdbseyiFllQBkIkafZQHLgtCRwZBjcqSvbvaxWNq421wilOPoqnecf1edTZkHYDBtC5C/Gkb/09xg1jMfWCRyv4DwiIXXkwC9s19vBQ1UmbAt7Tl87t+sJskx; 25:bEgFcjTF0mRmdPCrGjurLx/xpk8oQtSx8JbIkoDsSoF4wGFa9PlQEFw9ihamafxqZAeg/vVHWE7cByReOpguf8N4mjOiTbmXKdJ0Tf0EaOXtorIGTg+x6OaonUQOjy6lb9xs26JVXwkqHc/QLbmNcvI4ssZOzFDrcgPUYEPZ9ovLaDUnLkqZMNFq2MFjPyFM6MIvjfgeXY+E5I9oJ/KEDjHa0uvyEu32/bdQhl6N+GwsnaCF6HTwKyEONO9kB3f6Hk7x7hi+P7iKd2Zw22aGfvrVfNmleZPnRRF9GcxCT19WCUjO2HD27D/IR02yvDCTO/hApfqQh8l7kUB0lBc2IQ==; 31:0mPVTqW0lYo3R8gj2suOrYxUG1Nh0csxEE2m2+3T871Nn8LR7pWVrnYciQhN0jM6S5okQMgX6IWHK+4LSnoOb6vMjCOfqMv9S6bMiykcOjeJsISbX4wYLG6VwSOLvOuwjKm4X7dvXUsSW/YLgMbRKbLPnqQVDKv/EnAzu5g/kAR5eWyisLaPjeF9QULSyLRmOd0ikOfVa6Y0ennKB5Ej4N2NrvHHna0+c3fV6u3ocEI= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2066: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2066; 20:HkvRRENplufSWRrDbAaiidQSIab9lywIV2M6xcCY2YuidQN+TMadDlxQK+uoXNdAcMf3GZDwTQxi1CdznCD8sOBkGd+UQEFIfcs3VeJaCnGAwKpbNYQ0vO6f2FssDMpbFNXbM9D0seXXaO3y8RjK5s+8qO8wo+H03APRVmyNORynfeAwo7HZ3yh5m9nZzTYzODBo1TQx+Sqy/kAZZzwiCKMI7OWU2GnWWorEOl/6LCGcnn5v9jZVKRPFr1Y/P3niv9LjHg8mpz8xRdfFeX0a0lOuWh5yVC/ycEL+iZ4CroL3pAou992sOJEXebE5AM2TTgefwi4oaS2iNbzKbWxtollw0Q9En8BLcCeq/WUcOHpkBgtj9CXUwIaAb/scs7QHBhvBqyTEY4fxtb6LWldtVIwuOrC0yMBMRY2RcaeDAIo=; 4:lWgXb+U/n+TyhIevtLuEqN2oMv11NzkJxm/W7yncakpVMSjoK0Wr/h1ABLtEvEJmwravgrJ6Yv5V6LS4Q+HQtoBgYpXAsGD+/YAXVu9ZZN8vKaWbZXRkurLOXmyk3eDT8/x6ZsnPzHw+vm5mQQ3U4UDkHsQx2NqDklFF5p1wLo9rWMG/Jc04f4VWoY1BbeWy19udkXOlK3Z8EStVikozrTdl6GtO2agxP4mMoAHVSrtuB9SE+C62vo6SaVo2S+5h1bCgLuwjrrABxJPg4EFiOLO4oplfLSsQP13zlO9iMzNrG3TsnSWF8OtBU2H7ODbw X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(93006095)(93001095)(10201501046)(6041268)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:AM5PR0801MB2066; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM5PR0801MB2066; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6069001)(366004)(39850400004)(396003)(39380400002)(376002)(346002)(189003)(199004)(6506007)(1076002)(66066001)(6512007)(6666003)(6916009)(6306002)(59450400001)(386003)(50226002)(47776003)(3846002)(2950100002)(51416003)(6116002)(55236004)(52116002)(76176011)(478600001)(53416004)(6486002)(76506005)(16526018)(86362001)(50466002)(5660300001)(81166006)(36756003)(25786009)(48376002)(16586007)(106356001)(305945005)(53936002)(105586002)(81156014)(2361001)(2351001)(69596002)(966005)(316002)(2906002)(8936002)(7736002)(575784001)(97736004)(68736007)(4326008)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2066; H:localhost.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; AM5PR0801MB2066; 23:8ngoWzhkWgcJcM5MvGGBnU8cYUppeyP1OMMu5zg?= =?us-ascii?Q?2qZ+FwtD/ZnloP26LboPRFo2eJrrbjNKQu64sIqTE6BR0CfVxkA8PUs4oBi5?= =?us-ascii?Q?Oo18cDspAf1i/J1VGumSnGaF+bDjtqXfSfjeLVQg+g8vZsjn7tlsW0lrtmqU?= =?us-ascii?Q?1HLerzlFEl04sJpy+BdQiBYqURnsigEMYbnqq6rE1bU7/rZTgLvGge9905Sj?= =?us-ascii?Q?xXEJ90WSIsBXH7PNjM2UZnyL1K3e0Mn312s8oPRIHqbvTXzC33vV9jG+h6su?= =?us-ascii?Q?jncHAneyYHErMqOEzSt5ykeLikgh/WFpXgWezxKXHoJH4Bc9r/F5ySxVSSCr?= =?us-ascii?Q?jvmemQpkOS8H99uuVft9U4/U3Ow6psRFlkHUoX30A5qB4Biw/BnYuOUEhaST?= =?us-ascii?Q?OY88apIDd3ik1Mm+9aHhr6vqfjkCf8UCf0AvPcj9fG7xMFvY0Te17eVpmFEM?= =?us-ascii?Q?DT1WTi5gI9gILyk+sE3/JgE73+vyTFfXWqvySZdutt0l1h/RibGDB6YuipoW?= =?us-ascii?Q?TPH7IjsFKnPgrVRqZFjW43OZkjNX/S39YJWy+jrTBtEoGfoYcGxT7L96LhVH?= =?us-ascii?Q?7rAe9zKWEok46AAwIXnarmInR7w71mwy9LiesexaBTSe046HbHhouCYiL/pi?= =?us-ascii?Q?gNo6Bmea2M5EFr+9nl59upjP7oRvVRZBPPXM5gniM65Gnh1BaMmrsDDcCR18?= =?us-ascii?Q?/qnL1L35Qs4niEtQHs0GOv2d1Xv51/qrirshgJM66KKmEYVkVy2lMbgg2uhN?= =?us-ascii?Q?vsX81sMrAh3r9tJ2uqFkiNRrhMXI2BovKJ+Kbpn+YnTtw9TLuQIlf17ohfWF?= =?us-ascii?Q?zmPrjOQCjaZNclkyefXy9G8gqp4gfGgILtIs1iPaIEtXt3+G7nSTVcH7wJTN?= =?us-ascii?Q?db4JQCz44w9Qg1eVqQAT4CCiiFVBiVfZJrou0Rd5YM2DdD85x2oOLiybp4tE?= =?us-ascii?Q?HKMmwd1UhBKvg+eItFF87l1NKOlcLI2ga29+cIAC72kiA+q7JOqdam3wUcTx?= =?us-ascii?Q?aPO9vsJbZBIp333XmrQrCu0maLByIGI/crqNoqyfDeMSyicgF+ApZwysWhUY?= =?us-ascii?Q?8HIR97isoeTF8sF7GcGM7Qv5QDeq7ONaTgy5dZPmwOexjsGLL7+gUbVUBj/c?= =?us-ascii?Q?FTMm+25awjSYKJtoivyWjaDr61FcYVVZD9OGtDmxyS1gEbIXsE5JTHVsMa9/?= =?us-ascii?Q?AMvepy5OmBOS1c11EMVlTjg9lR6FeCPgGQifi8e2KRXbR+Pm59CwWH/9z9J5?= =?us-ascii?Q?sNC+eaQoPkVGPx3p2pODGyTiM1L5zfrrDhDlP8FgkyAoMK+z+BcqsCoi/HXz?= =?us-ascii?Q?q8HWzUcMPkbbY7jgL8X1z2Vw=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2066; 6:1hYrJ/HAQRdnhVqdmnoQTByFQ1D9NiPZ05yh86IoNJIIQQ+RrseWFNKytUBrviArPsidMLDiQ+z4ZHFIhyaL2CX/bcXU2bjiBPDrrC4yBQwKqt/VYO+3orRPtvququFnDq2pKHDdxPgdLunyHrNWnwpZ6J77CJoXSuv8PCk/ppbfYSm+eKxY2r2tjSNecx7ldcY1WXRTv7Tw8MVFvBHDgMRbRYSY0wwensUW8lx4S2gV+vxx8Fp4BeyWuCb4oAEGE+uBC/6srMzYz4BtCB9d8yZVHrJnCcm4alGkcvP2IMubq8tS/dJkWMDoYEcM1qvzD6paEgwpSbKD1nzBlw6nKGZJ1mXBVr77r0Y0KCCbJb4=; 5:UZpZe02J5Y5HAPduKXOa5utaZi+pR1nAmDW5+jinTRRzbIL0Rpu9U8eRoxCBVto4Zz+Lfn+589cJmy/+yRFP6Uts3HICIWKP0xKj8o9G3/2XrLkpghphRu/gVPpoASDacd84STDhZ6JhJD1IzXK9R0HGD7T7NCusoElBWkKKxTE=; 24:9tYJInNVT9fMxXsqcgWThmt6qdUGIzO/IAbfFjMB4N2TvP+66GYGs+QL5vbp6c7t4oIki9E2AdWP0zdAEIAQ+m1l9O5wespnORTZUmMb81k=; 7:315i3TS7LfLO2JvE57ytEHV0DD+hKbINIu9EQW2i1YAx9/FjwDtFfFQF9ANXUGdcV7tXDsw/WTYDf2XJKZ5EtEVXSuuewR9vVnQBTYKi5s5DMvJ4hKyCObO0QLWKzWV7Qq65J1FQasZ5mYf4rIwDGBySKz0P6QHIfE/A4Nnafboz+0bB0PGvq+5grrh7sK1Q+o2Lujf+3dLxly+xv9d62iuSwCWGGdGNubTtFJuKyaE4PJYssl4pCtb9FxOCeldV SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2066; 20:uY7VdFikf91/MxlIGB78yz/pQrKD4hfurIY3mOh3hq1lnVrcctmFPzz762cZ2KgPfFbd4Ito4Uon6Ozem0PC3aNqZuUBrfIcP6207bahf4WOPfd0Vim5SavC/epsb2ve+woVMiDoQNznuO0cbD3c1nYzpbIWJ96/GKX7vOt98Lk= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 17:36:48.0527 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 95511cfc-4e08-4b2d-ca70-08d55850ba31 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2066 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.1.105 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, qemu-block@nongnu.org, stefanha@redhat.com, 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