From patchwork Fri Jan 19 12:50:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Nefedov X-Patchwork-Id: 10175201 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5902F60392 for ; Fri, 19 Jan 2018 12:54:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 48DFA28685 for ; Fri, 19 Jan 2018 12:54:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3CADD28696; Fri, 19 Jan 2018 12:54:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7011828685 for ; Fri, 19 Jan 2018 12:54:31 +0000 (UTC) Received: from localhost ([::1]:47455 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ecWBi-0001tG-CG for patchwork-qemu-devel@patchwork.kernel.org; Fri, 19 Jan 2018 07:54:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57925) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ecW7r-0006nY-0c for qemu-devel@nongnu.org; Fri, 19 Jan 2018 07:50:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ecW7n-00037E-Q1 for qemu-devel@nongnu.org; Fri, 19 Jan 2018 07:50:31 -0500 Received: from mail-db5eur01on0137.outbound.protection.outlook.com ([104.47.2.137]:55324 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 1ecW7n-000370-Fz; Fri, 19 Jan 2018 07:50:27 -0500 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=ihoc+Xc5NytL6Zu9dnxUzmXSk6tkQ+wO0fK3JdSQy0w=; b=ZE4YqGIX6aQjsgDhqApFvuFOaRA+JxCFIzMY/EwAutszVGVCX/LjEMteAWos50sqJT0dlLH1OZKEPfEBcP0jNPPwXDXfCa0Hi/JMi5HhP5xRveT0toOwzHducH8Vy3U1ugZGSMbntLZflIPeKhj3zWD+f69H2Ma2fwcErq7owHQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=anton.nefedov@virtuozzo.com; Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.428.17; Fri, 19 Jan 2018 12:50:24 +0000 From: Anton Nefedov To: qemu-devel@nongnu.org Date: Fri, 19 Jan 2018 15:50:01 +0300 Message-Id: <1516366207-109842-3-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516366207-109842-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1516366207-109842-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR0202CA0008.eurprd02.prod.outlook.com (2603:10a6:4:29::18) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e0a1a239-4c95-4ca1-0c66-08d55f3b360d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:jssg3ujdOKWIFyBJAbF7mk7cq1oEGBlNl6anzK5M3TBUCaIocn5Zyxb0JBpxEe8e7E1xxkoTZZUgu+So/C0wkWfrBav9136k21CJv5B7xo0JbqwQlZ2Dh8poQ/Pk+5xV9npTzCucmkovsUFKxVyM+K6nYbQCSxge4CEPtfKdQlxlKuExz8CHF05vNnV/mMLRjRQkHuVtlrfZ1cm8ymPXDk9C9qszIyw5numGx74UhaNWHbT1TwudL7pUh6DwcTYA; 25:L9t2ZbGw3+9ce0TkFoXaCHedpuV3za5rsnNrjOgNHFfIdfhoD/kv3x8hVkbb2KrPiotR1CH4Axeb4AszTmqtgTeW6nwYKorZY573krhcFXMk7zIsgHmHPnIspVvqQllIP5OmK+Kk+AqG3bHiVqdsM4gBIhtWt7XOuD/SVX8u0VzyHu6o4QsMaer4pfRuQfG4QxEzqtlhO5CfaxVHDLtTu6E1gfTSAFNXHWiAmZ6Kck9wTIrJ81+CIVMYppGR+4OhIaCnUhZigJ9Of4jEYRYsoXOWFeH9NnlU9tKy655uCGvlYD6nCvbi9n/VKsYmAiNdo5Jdy6f4QdeKsDIJ+GN5+w==; 31:xoHSGAoIhTM0aVEXn5CzZ3Q/PcnKoRboekKZYoao1b4sMmOF+biD2zyv/lfkOMbYWXrkkFFe4DI+x2I/8nK/Kpiasx72nAnvBUDM8glY+MgI6tvkgIoF62htvDsVFoXNCscZBSWvSyhnPTUQahKe9OIG7rdDCmW8knxJkCi23332naxO8MZLVyzWb1wnPs6CE/0lMn8JNXIDR35jkVzVKZAXwS5u+KxV5Hu890Ovhz8= X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 20:hnMMQ3+TAsCKFF4eWNcfapHZjjyu1rqVLXlGm3FKZLFWXbEobSIViOXDEVrjryg3OGuKUHg+O3jsMFfA9KMrdOXx97jab6qGNb4q9NVhzIKKoR06yqQsOG22Y6eVT+4OCx+z8u+arQ4TvxSdwnqYqGQpDjPwZ6ZwKFvEKewp5/eSkqaHdNE7suDKS75NL/tgHNW0MkCxPvAtFEQa1CSZbVYWrNe6xsBVsQSaTyokjp4CzPsMPmwfe8GAI29YeQfUEGF3XtY2MN6f6htYjnG/C4GofOko/lavEg8eNRPtN4++2u+H5OB+EpB8sDJ/5JrYgk3tTBMadme7Jj+W357DEJVDmMsibRwgWNXc9ej72bCuGdU1UN7ChgLy5JT0LAzQQ/6Qc3GN8CqbtgdT21PSEwrNhE0k3XZtw2ABFjRZ7IA=; 4:ldpcbNNdwXLR7QAgLhHMOrDEOk7+HZ/ta5yDmZFtVBt02zwtxYAuTLosqVPnDtlszc6ZPwZ964+R0p+csao48gl6irRlEaYsWTZx33s+OFu8HyalHwUGIib9CkN6+ep95bdNDkOlQvcYASOvZEg04d2yTaS8W+RTV25Gxlb5ftah4ZLEPwpShgH961aCD1YRYMza8XG7iHy30zzMoHTWYcYlgaFAs4UEmv+Xo0xXk6hi6YpsRUb5O28zgWw6q63A/DY/X38dRWRrX5OZyT8t0g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231023)(2400077)(944501161)(10201501046)(6041268)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR0801MB1999; X-Forefront-PRVS: 0557CBAD84 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(979002)(366004)(346002)(39850400004)(376002)(396003)(39380400002)(189003)(199004)(16586007)(5660300001)(53936002)(6666003)(6916009)(6512007)(36756003)(2950100002)(53416004)(6116002)(69596002)(105586002)(6486002)(50466002)(48376002)(2361001)(3846002)(52116002)(81166006)(106356001)(2351001)(66066001)(305945005)(47776003)(107886003)(59450400001)(7736002)(81156014)(86362001)(6506007)(478600001)(8676002)(386003)(575784001)(316002)(2906002)(16526018)(76176011)(4326008)(25786009)(50226002)(68736007)(51416003)(26005)(97736004)(8936002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:yY0qFRnsSqWOeiiyC6qdjgK9pKvukL0Aq8c5LSd?= =?us-ascii?Q?NOkBPyVfhBf93TF8CBq4hMIXTIz8EvydGb1jpOL4Ay2Xx3jdwWc4YtSlfa5H?= =?us-ascii?Q?/WrNNtmLjjAIauAbWEboHIy6ejeMwxTacR++SlW9hoCPhZHWr4j6eJPIPG5u?= =?us-ascii?Q?RWklPWMU3CY0bbUEf01qqSgy991NME4uYXK91vvyeUPYbcDw9whtrOqvSxVt?= =?us-ascii?Q?hvXvYvlwHcE58l8p22Biqc6d5WY55gZ84zAZotBXtzWQVQFBMnYIevnEFrOr?= =?us-ascii?Q?2aLqYjYCkt0pHW2DlSlwQacqqXXpZnwm70Qr7VjuZHkGE3hDSi5qKZAcCBOR?= =?us-ascii?Q?wtD+cODPXkng/Mdlz3qh0nXMSkQ777JqWXtNwgMkm0zL1X3fPCmDpEl1fiRN?= =?us-ascii?Q?uNOo5s9/dfOyVIHuU4f6XliYL9isXNvYM2Pjwikmr2U/YA2xAYsh/o6qnQQe?= =?us-ascii?Q?eqrdTIl34obuRxhuGcDUSdMiedf3sjHqTX/9cLhWxiSa9tWoJrd6L4CwtLss?= =?us-ascii?Q?GcH66y1ZdOEZs8ck0IiHZQxG/m5GMwHfzkVRSnIx66cnIvDU1m6ey/fs3nKV?= =?us-ascii?Q?sj/25YVmsIaXpFAsmubQ8qru3cHhgmgMaTTokSZShDrd/e0Keff42zB672Dp?= =?us-ascii?Q?ysoxx/pQhH3B332AUw2kdQQ5EbZti1/etokMB/cqY6B1BjdDdCxs5d9q/GuP?= =?us-ascii?Q?M4I/L9Ac7pVHYB6c9v+REjTNSkoloViMRLy8ILTCEYbEJEdQqIJpERnhAclT?= =?us-ascii?Q?Fg0ZrGXAO5Tjv9DDguimazxOoQsA0SBXkZ2I5SFxAJ6Wi/nurVGn/u/AT3H4?= =?us-ascii?Q?qcN4lun0aMIZE7kh680zTMEq6LRPaKugvarTFuYmUnSqpbXgj6t0MJ+Rapn2?= =?us-ascii?Q?etNQyAKcN03Z8+n77lzb442lmozln333JOcsqgd1GZkcCqIdpJJ2V/cvM7NB?= =?us-ascii?Q?x/n8BH2vVLPTs45mt1rSyujFVtzT+DdCBCOI74ZDLdoCmbI+HsNw5qSufMht?= =?us-ascii?Q?DsZymeK+d5eDxgMWRlykpvRcuT1qAuXVq7178x5ooGj+3R4nG3dgAzGBzFGY?= =?us-ascii?Q?oEySgbEGNGx1noMsI/FhaGXNsdf7VBOmYqkBfhpHA/BxCmy0Pe+vLc325QUc?= =?us-ascii?Q?1no7zVr6uZQAkDHTv6mXo8svgRVQ3VEy3UbaCBOt5H4Th6ThGvHGDojdMgYt?= =?us-ascii?Q?FrafgABlBejEnSYnzjaOn6nAgzCWSxcz1EzJ3YN3WeflaT6HYujiltexmvUS?= =?us-ascii?Q?3PTOi9HZYP3S+MuAOvPe4Xk8xnPHSpf9EVJkgrgXYFw0wKR9BrlnPp57Hz5u?= =?us-ascii?Q?hRN5cwMREtRWRAseeJzPZO6uXXv7SzVzNF7P9RFcNs1pS?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:jWH1yC7bMF5dZ2vc/+MrpdOAkZQRuC2cfsDaIrSKuvhxNK/aGsgkDorhaKT3p5I0d/cIyR/qvXLu4HSzd3CwmJfYVlR86ZQ1tMoBvhvzqgxW3DPEU7blA7qMYn8B0/ZNU3gC/OS5fJ77z1jVS9C5CnPYtSQ24mwlVJbQqSLdzY/Sv5VtC2VnCEBRFnzeS5M8/0GnJqrSG2uhhQQdNZha1awCdhGXEI1H1UwaDbznwg6C/rc38ygtznW62htmuQFd+/JyrToJuIHRgp4J37q76oTGHMfr46584IlMKY//Cbrxtg2/lRy2rOQVbvOPV7hchDhuglCYXWaH1re+gvK8YcN4EMzfxO4qdmIZ4/k/S8Q=; 5:E2Ww+qquYMzNBSmKDbwYVUnz/PnqOyVZFf+ZUdYBM3ZxcXPETtRs2de1Q6rMySmJHO2Ms77hCpOS3s/aRzL/4G/laxDB/JteoJuNRtynVAR48MwhTEbmUhXz8UM3+R6t+89fTbGoZILVd7YThfkNQhoQBBfADYVxwuxHoMM9iQU=; 24:ZqIUkimyzcQiUC9MdKfMRWFN+edHqpUpGYWbDUYknbQxBq3s1wa1GsY/uJIZnJ56DGSr49j5rDpFaIfINoFpeQnYTV5E21qcI9JarltivBs=; 7:ipFOBhvLDJ9fgwfZtkddyIq/9/pgZDvUv8HGht6bEoH4lRL1xLUP7E1nYTOxUbEQKH4uEBYYe9B+BanjETN8E7q1u24XPCn8wcM4ZAgm8CiD5XCk2jCLZUyyUj1QJoRZazfy1Qv+nZs8QmITjvjrKIRFsSjGOzGOLKZt3p2m27BfwGhi26LeZsX0CJKzSsj/CpTba1q4Bu/luz0t9KZhx5FSe5vQhqc6jaoYIaxnrjrdOD0weTUsio7tTVxN7Op3 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 20:bBANiGHtqaPmXJkYDDLJMWEy8llNHkyGPIcoo6dpcIixYvl3qhvCMSnMW6DWrp1RU8+W9RPW3BMdZmPnxkcbaMmdq5R/b85TQkSZtFg7QFqzCeL/9iolwKxnN/wSUb56r3a5nvSMkMHI1B4OoE/XnqU8NMLSjg1Nyk/+vuJGNgc= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2018 12:50:24.5764 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e0a1a239-4c95-4ca1-0c66-08d55f3b360d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.137 Subject: [Qemu-devel] [PATCH v2 2/8] qapi: add unmap to BlockDeviceStats 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, Anton Nefedov , den@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, mreitz@redhat.com, pbonzini@redhat.com, jsnow@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Reviewed-by: Eric Blake --- qapi/block-core.json | 29 +++++++++++++++++++++++------ include/block/accounting.h | 1 + block/qapi.c | 6 ++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/qapi/block-core.json b/qapi/block-core.json index 2e0665e..3fa2d3a 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -674,6 +674,8 @@ # # @wr_bytes: The number of bytes written by the device. # +# @unmap_bytes: The number of bytes unmapped by the device (Since 2.12) +# # @rd_operations: The number of read operations performed by the device. # # @wr_operations: The number of write operations performed by the device. @@ -681,6 +683,9 @@ # @flush_operations: The number of cache flush operations performed by the # device (since 0.15.0) # +# @unmap_operations: The number of unmap operations performed by the device +# (Since 2.12) +# # @flush_total_time_ns: Total time spend on cache flushes in nano-seconds # (since 0.15.0). # @@ -688,6 +693,9 @@ # # @rd_total_time_ns: Total_time_spend on reads in nano-seconds (since 0.15.0). # +# @unmap_total_time_ns: Total time spent on unmap operations in nano-seconds +# (Since 2.12) +# # @wr_highest_offset: The offset after the greatest byte written to the # device. The intended use of this information is for # growable sparse files (like qcow2) that are used on top @@ -699,6 +707,9 @@ # @wr_merged: Number of write requests that have been merged into another # request (Since 2.3). # +# @unmap_merged: Number of unmap requests that have been merged into another +# request (Since 2.12) +# # @idle_time_ns: Time since the last I/O operation, in # nanoseconds. If the field is absent it means that # there haven't been any operations yet (Since 2.5). @@ -712,6 +723,9 @@ # @failed_flush_operations: The number of failed flush operations # performed by the device (Since 2.5) # +# @failed_unmap_operations: The number of failed unmap operations performed +# by the device (Since 2.12) +# # @invalid_rd_operations: The number of invalid read operations # performed by the device (Since 2.5) # @@ -721,6 +735,9 @@ # @invalid_flush_operations: The number of invalid flush operations # performed by the device (Since 2.5) # +# @invalid_unmap_operations: The number of invalid unmap operations performed +# by the device (Since 2.12) +# # @account_invalid: Whether invalid operations are included in the # last access statistics (Since 2.5) # @@ -733,25 +750,25 @@ # Since: 0.14.0 ## { 'struct': 'BlockDeviceStats', - 'data': {'rd_bytes': 'int', 'wr_bytes': 'int', + 'data': {'rd_bytes': 'int', 'wr_bytes': 'int', 'unmap_bytes' : 'int', 'rd_operations': 'int', 'wr_operations': 'int', - 'flush_operations': 'int', + 'flush_operations': 'int', 'unmap_operations': 'int', 'flush_total_time_ns': 'int', 'wr_total_time_ns': 'int', - 'rd_total_time_ns': 'int', + 'rd_total_time_ns': 'int', 'unmap_total_time_ns': 'int', 'wr_highest_offset': 'int', - 'rd_merged': 'int', 'wr_merged': 'int', + 'rd_merged': 'int', 'wr_merged': 'int', 'unmap_merged': 'int', '*idle_time_ns': 'int', 'failed_rd_operations': 'int', 'failed_wr_operations': 'int', - 'failed_flush_operations': 'int', + 'failed_flush_operations': 'int', 'failed_unmap_operations': 'int', 'invalid_rd_operations': 'int', 'invalid_wr_operations': 'int', - 'invalid_flush_operations': 'int', + 'invalid_flush_operations': 'int', 'invalid_unmap_operations': 'int', 'account_invalid': 'bool', 'account_failed': 'bool', 'timed_stats': ['BlockDeviceTimedStats'] } } diff --git a/include/block/accounting.h b/include/block/accounting.h index b833d26..4e53c4a 100644 --- a/include/block/accounting.h +++ b/include/block/accounting.h @@ -35,6 +35,7 @@ enum BlockAcctType { BLOCK_ACCT_READ, BLOCK_ACCT_WRITE, BLOCK_ACCT_FLUSH, + BLOCK_ACCT_UNMAP, BLOCK_MAX_IOTYPE, }; diff --git a/block/qapi.c b/block/qapi.c index fc10f0a..6e110f2 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -396,24 +396,30 @@ static void bdrv_query_blk_stats(BlockDeviceStats *ds, BlockBackend *blk) ds->rd_bytes = stats->nr_bytes[BLOCK_ACCT_READ]; ds->wr_bytes = stats->nr_bytes[BLOCK_ACCT_WRITE]; + ds->unmap_bytes = stats->nr_bytes[BLOCK_ACCT_UNMAP]; ds->rd_operations = stats->nr_ops[BLOCK_ACCT_READ]; ds->wr_operations = stats->nr_ops[BLOCK_ACCT_WRITE]; + ds->unmap_operations = stats->nr_ops[BLOCK_ACCT_UNMAP]; ds->failed_rd_operations = stats->failed_ops[BLOCK_ACCT_READ]; ds->failed_wr_operations = stats->failed_ops[BLOCK_ACCT_WRITE]; ds->failed_flush_operations = stats->failed_ops[BLOCK_ACCT_FLUSH]; + ds->failed_unmap_operations = stats->failed_ops[BLOCK_ACCT_UNMAP]; ds->invalid_rd_operations = stats->invalid_ops[BLOCK_ACCT_READ]; ds->invalid_wr_operations = stats->invalid_ops[BLOCK_ACCT_WRITE]; ds->invalid_flush_operations = stats->invalid_ops[BLOCK_ACCT_FLUSH]; + ds->invalid_unmap_operations = stats->invalid_ops[BLOCK_ACCT_UNMAP]; ds->rd_merged = stats->merged[BLOCK_ACCT_READ]; ds->wr_merged = stats->merged[BLOCK_ACCT_WRITE]; + ds->unmap_merged = stats->merged[BLOCK_ACCT_UNMAP]; ds->flush_operations = stats->nr_ops[BLOCK_ACCT_FLUSH]; ds->wr_total_time_ns = stats->total_time_ns[BLOCK_ACCT_WRITE]; ds->rd_total_time_ns = stats->total_time_ns[BLOCK_ACCT_READ]; ds->flush_total_time_ns = stats->total_time_ns[BLOCK_ACCT_FLUSH]; + ds->unmap_total_time_ns = stats->total_time_ns[BLOCK_ACCT_UNMAP]; ds->has_idle_time_ns = stats->last_access_time_ns > 0; if (ds->has_idle_time_ns) {