From patchwork Fri Nov 30 14:47:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Nefedov X-Patchwork-Id: 1005974 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="QU+Ckg8G"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 435y1n12lCz9sB7 for ; Sat, 1 Dec 2018 01:48:29 +1100 (AEDT) Received: from localhost ([::1]:60514 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSk5e-0005ML-1r for incoming@patchwork.ozlabs.org; Fri, 30 Nov 2018 09:48:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60180) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSk4k-0005LX-RD for qemu-devel@nongnu.org; Fri, 30 Nov 2018 09:47:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSk4g-0003zi-JC for qemu-devel@nongnu.org; Fri, 30 Nov 2018 09:47:26 -0500 Received: from mail-eopbgr00109.outbound.protection.outlook.com ([40.107.0.109]:64560 helo=EUR02-AM5-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 1gSk4g-0003yU-Co; Fri, 30 Nov 2018 09:47:22 -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:X-MS-Exchange-SenderADCheck; bh=boctwga0cMr1ykg6OQOpOEW1SBVt3Ox9UZFfyqbzmvU=; b=QU+Ckg8GOzp0NoMdaN/0/w848P7lGxuL0ERNwMvS76xSY4+A76kMz1xeft2H5UUkY7q1qh1RLSFDPrAM12JW+4dGZEtY9Dk2mJ/RMZVQwTS6pk0llkL9vieY7OPJw2GI7q2kFT9jjnqL8eHwBJc82bUMbyxDdy4ae7SPo2A1tZo= Received: from AM0PR08MB3347.eurprd08.prod.outlook.com (52.134.94.148) by AM0PR08MB3891.eurprd08.prod.outlook.com (20.178.82.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.18; Fri, 30 Nov 2018 14:47:20 +0000 Received: from AM0PR08MB3347.eurprd08.prod.outlook.com ([fe80::a0bd:dda4:d9e4:1d01]) by AM0PR08MB3347.eurprd08.prod.outlook.com ([fe80::a0bd:dda4:d9e4:1d01%2]) with mapi id 15.20.1361.022; Fri, 30 Nov 2018 14:47:20 +0000 From: Anton Nefedov To: "qemu-devel@nongnu.org" Thread-Topic: [PATCH v6 3/9] block: add empty account cookie type Thread-Index: AQHUiLuYMduKMsU4CEu03pbXXNLaFQ== Date: Fri, 30 Nov 2018 14:47:20 +0000 Message-ID: <20181130144705.77454-4-anton.nefedov@virtuozzo.com> References: <20181130144705.77454-1-anton.nefedov@virtuozzo.com> In-Reply-To: <20181130144705.77454-1-anton.nefedov@virtuozzo.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1PR05CA0208.eurprd05.prod.outlook.com (2603:10a6:3:f9::32) To AM0PR08MB3347.eurprd08.prod.outlook.com (2603:10a6:208:5f::20) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [185.231.240.5] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR08MB3891; 20:fatbSB4WcTXPOMXhewmJooDkYzFFSg4GNLX9yB3ayjiVFmzS3TSzYvEFD7j42v8xvgTNHtuW4CpZtzZJdo3UUvS497YVy3E0/3gj5NN61C0icWDpBdo4LIV1DZy3piMD4PopFrm1Yp8ISyFev2VxhAwrzhelwjE0cztC4bCSe1Y= x-ms-office365-filtering-correlation-id: d28c6fa8-6ea6-42c6-0d43-08d656d2bb34 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR08MB3891; x-ms-traffictypediagnostic: AM0PR08MB3891: authentication-results: spf=none (sender IP is ) smtp.mailfrom=anton.nefedov@virtuozzo.com; x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231453)(999002)(944501466)(52105112)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:AM0PR08MB3891; BCL:0; PCL:0; RULEID:; SRVR:AM0PR08MB3891; x-forefront-prvs: 087223B4DA x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(396003)(346002)(39850400004)(376002)(366004)(199004)(189003)(6436002)(26005)(68736007)(52116002)(106356001)(15650500001)(3846002)(1076002)(2906002)(6916009)(6116002)(186003)(478600001)(99286004)(316002)(6506007)(102836004)(54906003)(256004)(25786009)(486006)(2501003)(386003)(44832011)(11346002)(76176011)(476003)(2616005)(446003)(7736002)(81166006)(8676002)(7416002)(305945005)(6512007)(36756003)(5660300001)(8936002)(81156014)(4326008)(66066001)(14444005)(53936002)(107886003)(14454004)(97736004)(105586002)(6486002)(71200400001)(71190400001)(86362001)(2351001)(5640700003); DIR:OUT; SFP:1102; SCL:1; SRVR:AM0PR08MB3891; H:AM0PR08MB3347.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: IHkRvZgd02QFOyxI1DdlQiTs6cRxY3sRq64XQI362aySxky85qFdiuTFZQlaXapFnELzbRB49BEB+0LptBD1gB0rcOb4mExNfAqBHL7uY3HXLxfJLcT1hGtFqWHq2+0LGKQRe1jqGYP0WIKQRKwPp13oDVW/E4IIdIBc8MUaPSPWPWApP98NYebGZL0EwJnWpXjm5VMgjEEY58qzXYOEauEJIFhhkXgKW3bAGf4uF+AEWBGqByx32mu+zgKn3JEQLF8hNAkpJibxkPRU6gWbiSNqseRAA+yjqvGEdOe5dtdQOCCjyiI18Y014HtDUEPsci6Q1Ly/hGv84tp6DPppeIipYktvamtWPmuLenQi36s= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d28c6fa8-6ea6-42c6-0d43-08d656d2bb34 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2018 14:47:20.5546 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3891 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.0.109 Subject: [Qemu-devel] [PATCH v6 3/9] block: add empty account cookie type 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" , Vladimir Sementsov-Ogievskiy , "famz@redhat.com" , Denis Lunev , "qemu-block@nongnu.org" , "armbru@redhat.com" , "mreitz@redhat.com" , "berto@igalia.com" , Anton Nefedov , "pbonzini@redhat.com" , "jsnow@redhat.com" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This adds some protection from accounting uninitialized cookie. That is, block_acct_failed/done without previous block_acct_start; in that case, cookie probably holds values from previous operation. (Note: it might also be uninitialized holding garbage value and there is still "< BLOCK_MAX_IOTYPE" assertion for that. So block_acct_failed/done without previous block_acct_start should be used with caution.) Currently this is particularly useful in ide code where it's hard to keep track whether the request started accounting or not. For example, trim requests do the accounting separately. Signed-off-by: Anton Nefedov --- include/block/accounting.h | 1 + block/accounting.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/block/accounting.h b/include/block/accounting.h index ba8b04d572..878b4c3581 100644 --- a/include/block/accounting.h +++ b/include/block/accounting.h @@ -33,6 +33,7 @@ typedef struct BlockAcctTimedStats BlockAcctTimedStats; typedef struct BlockAcctStats BlockAcctStats; enum BlockAcctType { + BLOCK_ACCT_NONE = 0, BLOCK_ACCT_READ, BLOCK_ACCT_WRITE, BLOCK_ACCT_FLUSH, diff --git a/block/accounting.c b/block/accounting.c index 70a3d9a426..8d41c8a83a 100644 --- a/block/accounting.c +++ b/block/accounting.c @@ -195,6 +195,10 @@ static void block_account_one_io(BlockAcctStats *stats, BlockAcctCookie *cookie, assert(cookie->type < BLOCK_MAX_IOTYPE); + if (cookie->type == BLOCK_ACCT_NONE) { + return; + } + qemu_mutex_lock(&stats->lock); if (failed) { @@ -217,6 +221,8 @@ static void block_account_one_io(BlockAcctStats *stats, BlockAcctCookie *cookie, } qemu_mutex_unlock(&stats->lock); + + cookie->type = BLOCK_ACCT_NONE; } void block_acct_done(BlockAcctStats *stats, BlockAcctCookie *cookie)