From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 27F978017D for ; Tue, 27 Oct 2026 16:50:20 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69RGn62v030929; Tue, 27 Oct 2026 19:49:06 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69RGn62v030929 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="hz6lX/Y8" Received: from mail-yw1-f198.google.com (mail-yw1-f198.google.com [209.85.128.198]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69RGmuh5030882 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Tue, 27 Oct 2026 19:48:57 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69RGmuh5030882 Received: by mail-yw1-f198.google.com with SMTP id 00721157ae682-8b09ee23de2so145397b3.0 for ; Tue, 27 Oct 2026 09:48:57 -0700 (PDT) X-Gm-Message-State: AFq9FYI8Da4WCTTiXd9CKBtmbUXMSCHOWioPFtuDd9q/z9Zhvb6jyMp5 HvqtP7ICx07XI+XUMMw3TEUjp+qCb0ze0OljZ6CM6GV1b1gOeW7/7IhskgtiEsOo8icWAZ8gOTr Z2zwE07U3Kiq5aBX1PoUe0bWH1PPvWv0/nfMBtakhBKA8mxqDhJpztA== X-Gm-Gg: AYBFou0IUFumuTjEvRQ/mfEfFnwJM14T5QtbB0rSdl2lOlr9kk8mrKzrkqLETRNNdy8 MTpWeJZXXInjnW0/5ZBiBdLxx30eihJhGbb7ZUaPluy2sRpfgWKkNuJoKdUgAtJ7Oxhn7COetkW i+R3dQZbxuutH9KoG31coEMjv5ALzLL4GNRegJqkzmnOkyW0RNnyVYTszOWrfSfS8j/ppfMXKWH FRpEJmezdn57S9WH1HEVRdGhP1Nhv0JskwqvWkiiOHzoue9Zp4EVtkd4mLN9MBJS3aGh7UEwwCX dCUOTutfvht+/7TlfJZ/R9Rr3738iGtpKwt/x+BbdWX0iyb2t30bImYcaf+KTafjkzmY/C0fTQn gPP5Kk/sBi4c63kUyo/1QF7Cabqwd5SognRtYCVh0ZZIMoq07My9qbbRkiq+7oIWntRECdlzKKL 4MmO23F/JqT4Ajxq4TyH7bBegXlk+P X-Received: by 2002:a05:690c:660c:b0:8ae:4420:20ed with SMTP id 00721157ae682-8b166bbda67mr65970367b3.45.1793119736291; Tue, 27 Oct 2026 09:48:56 -0700 (PDT) X-Received: by 2002:a05:690c:660c:b0:8ae:4420:20ed with SMTP id 00721157ae682-8b166bbda67mr65970147b3.45.1793119735724; Tue, 27 Oct 2026 09:48:55 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1793119735; cv=pass; d=google.com; s=arc-20260327; b=Hedlkw91Ac0T1Dzem+hwyJF5yHdiBad3IxYGSpK2i+lNTwPdx/1AFEFHPOHFcGtXVk Lq4xqV7/+XBTO7OSQcnrYOt2FqkasWZRScHbTyJtFxh/kF+gCIdZJTiYJgfBtQiSvHD2 JM4i79g28Xro1Jj4JgquYMtQq42RDViVJ2A/sir5+cMsvIs8GjmdLza2CptHdE+4waDU 2xkJMpxAFbTaQcjN2TAqNx9KaiCkNKAo0cBhDXRNH8S0CGiiSKl4NUzrCeESwKaCJ4zO SUNAZGvtP1u7NuQKMuYAfbQ41wHy0uiXEdm2RKK1GZ432iVpoTsF1ysZHCqxOUUiAunw xuhw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=mime-version:cc:to:in-reply-to:references:message-id :content-transfer-encoding:subject:date:from:dkim-signature; bh=+6fpxQO+BHxDYmPfuzFTlYQsWT8NKyVcj9lgypvdMUU=; fh=y3TfVeQA9QYtIzD5Inxiyys5ebBfyOgjQPZaP/+mSiI=; b=djg0gKlHji9hPu9WXqq3nIdPPKq35OyaBe3U9dzhz49SYQbVUemjBU3G+zWGNWC6TJ WFFlCHB0OLIgQBAjaXSRyjGcPsbo6zGcVJvAkUfzl3jNfCeFvOwDw6QuJAE9O3XB+wPM 5biLOcfacsGziecVP9foXZo+gXrQa8K5ZAv9/9h/Ah6DTzn9r6HVFkweNq9iHN2qJGj7 I4z0i8SrOMyuQcxWyITuzouhb18trydqLT6EnCZHc6ptlWUR19XSMUIVwXTaIGvU01re ylDUu+NU6W0QF4zLTwnxtdnaimwshbETgXJkRTfRikL+V2YArqxG5YtydEy0Y1Vop15V 5RPA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="hz6lX/Y8"; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of ptikhomirov@virtuozzo.com designates 2a01:111:f403:c200::1 as permitted sender) smtp.mailfrom=ptikhomirov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com. [2a01:111:f403:c200::1]) by mx.google.com with ESMTPS id 00721157ae682-8b19e5ecb08si19356377b3.92.2026.10.27.09.48.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2026 09:48:55 -0700 (PDT) Received-SPF: pass (google.com: domain of ptikhomirov@virtuozzo.com designates 2a01:111:f403:c200::1 as permitted sender) client-ip=2a01:111:f403:c200::1; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="hz6lX/Y8"; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of ptikhomirov@virtuozzo.com designates 2a01:111:f403:c200::1 as permitted sender) smtp.mailfrom=ptikhomirov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wP0aZus7NwiehDTsCLaNMbGeIpXKThnB8TiUPJGj1bbNAMm1OvHvMKsNEEM2Mdz/939zq7mpVaU1cCWOZ6Jj7UkLDYxMv2GSYHWFLaKID/hZcI7jL2dBOi65uQSichWavio7szuwqZu7scBiOX81kd5VcDCmOeALArTzPPARBvLngLGBbrD22f+qPOKavMtYCJdI7C7AzC/6sw2MIVL3ig5pPxPzL1cTZWR9qiwVZpu54gSQHlbw1PwyaUyT0YOMVj5NPOkwBsC/7UpfKcvfpnjNaBVFJ2b25/5AHp2+lHVa+gfTooQRo1A/uYbhGojtyLo1Ejzeh8buvdclia4eeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+6fpxQO+BHxDYmPfuzFTlYQsWT8NKyVcj9lgypvdMUU=; b=oT/jiok5EFteJC8mhbihP+LDwMEz4Fg4PcL6mZ0w6WrzgKIfr4CjBpl3DB5xYU5Y4fGwbSnuTw7ch3+wYCTh+DZxJLHG9LMPBw8BBr8oNwSu4Yy0/WMUw7B/v/AOcYDLrNTalxaIjZwiUwg/79gjrnL5K8AqqxFnkfYllbXrI4onde/iQG+cBIiEGFVlcbYPogB9NaBue8IayDjz5A/QIr3IM9vGGMCE0Rsw72qPgarR9+94A9sY5fCAsj+Tuc3Gg1WSBSpoXsiujG+sZ29hP+gugA18RpXHWnxSXy5NhhPJ98d4FqqNBYr/z6VylYMs7R3JsWczUGm2CZRTFLfKTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+6fpxQO+BHxDYmPfuzFTlYQsWT8NKyVcj9lgypvdMUU=; b=hz6lX/Y8OCDZ6pfOXkmoTK2m/wqpR9fwaOVk6w5CJ/zs4Qs4WdBLO8j/Ums/6M9lucqj52wzYTUWHQWFHeP9KGo3BvIe4YmT36b4qNeEaCYfPhmWBXbO7w8LePY5GPwpF29VVu+mOoZXYlWPp7tSQOw4825/r4vP8mQ4iAFySr0S4Nof8C0kzWzSXs0jpMgET7JDc4H9JpJJ7hkCbP25uVzLjnBh6JKEzKabQpigAua4ZzLgmRfZIXpKoPpWF9M/VNAYjytaP4FzNbv6Ph0r+DpTx/33qmxm5itD+l2jucLhwxZMj0vTCbRxd7hQJuxwY0dYIza4WKLP+GUU9t6KkA== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AM0PR08MB11804.eurprd08.prod.outlook.com (2603:10a6:20b:747::14) by BR0PR08MB513224.eurprd08.prod.outlook.com (2603:10a6:2c8:67::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.22; Tue, 27 Oct 2026 16:48:53 +0000 Received: from AM0PR08MB11804.eurprd08.prod.outlook.com ([fe80::bf46:f137:f6d2:5b3a]) by AM0PR08MB11804.eurprd08.prod.outlook.com ([fe80::bf46:f137:f6d2:5b3a%7]) with mapi id 15.21.0546.021; Tue, 27 Oct 2026 16:48:52 +0000 From: Pavel Tikhomirov Date: Tue, 27 Oct 2026 17:48:50 +0100 Message-Id: <20261027-ptikhomirov-vstor-149268-cbt-account-at-rq-start-v6-5-f9870cf5c7eb@virtuozzo.com> References: <20261027-ptikhomirov-vstor-149268-cbt-account-at-rq-start-v6-0-f9870cf5c7eb@virtuozzo.com> In-Reply-To: <20261027-ptikhomirov-vstor-149268-cbt-account-at-rq-start-v6-0-f9870cf5c7eb@virtuozzo.com> To: Konstantin Khorenko X-Mailer: b4 0.16.0 X-ClientProxiedBy: BE1P281CA0178.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:66::13) To AM0PR08MB11804.eurprd08.prod.outlook.com (2603:10a6:20b:747::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR08MB11804:EE_|BR0PR08MB513224:EE_ X-MS-Office365-Filtering-Correlation-Id: f355f293-3263-46c8-47ec-08df344a2d8b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|10070799003|1800799024|366016|23010399003|22082099003|261026121527099003|18002099003|56012099006|261009223027099003|10067099003|261021123027099003|261021121427099003|261022105027099003|261026140227099003; X-Microsoft-Antispam-Message-Info: GzrAeFlhPvclXXhOvBN/8iebl10QrpPFIRKedwggfME8qfwUooB6fDbyWLnhZ2f/FdJ6J8t1HShQwLr3H7U30/LA8VgKefs+Q7i5e4ZqNd5aItoQ0bb3yKXuxR0Wr1BGwQH2H+lwt8VXM7VEr1Hj6Q2OF3xSNJK6c95BdzoTjyZuyAgwmHdqgjQ7X7E2dLnUKnUkiFAh176bfK3f1rJAFDHNKDqcnLOnBp3uCsTF161ODOZ6DVyQDo/f2UZZKhUHIG+o8kPq7qMZ/xIEHYaWceXiAnaqb3SHwsKP/R66tCLxvhyvxvV23OS4r4xRQdeLP5dCOKSnQccAuYg7KbViLv2EhM/AVcXIvW7QzY0bDchP7uaNPIoWyOqo13SMfNw9zxQYYO6D6qYdPjAGWZosS7X73aNaGEbgO/rR2ae2/I7XPnY5Sw5oUTpMRosZ/OXqM7ea4T/BRKUd1ZKK+woXsjFGfOpLUTDFVMtxBJKOa92CnbpvsRMclVdMh24sW38cRoe7iUm8s/JHPunkTPqRrOWcjFy0qJo1N6zlXrAB02k7qQO2ytgyZFk3clF6D6d8JfEQ1TfdP+1SB72T1mIKo70KRSIfKYi+SI6DLyO4Q5I= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB11804.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(10070799003)(1800799024)(366016)(23010399003)(22082099003)(261026121527099003)(18002099003)(56012099006)(261009223027099003)(10067099003)(261021123027099003)(261021121427099003)(261022105027099003)(261026140227099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K2NUVEx5MDdOc010VXZDMTFBbCtQRWRSMnlWQ2ZoaklqSklyakUrK2wvSlZl?= =?utf-8?B?cjBEZElFbUhjZm0rcEREbjJxbTFpT1g1L1JEUDdwaGJKclk1b3JadUJYRFc5?= =?utf-8?B?U3RhWEFWdVI5d2thaEtoU3MwNGRVUzVScUhackpsQWV3anVENGhCblRuQ3Vm?= =?utf-8?B?eUhIYk4wa0JiTjB4QVZnRURuQ0x0ekFQTldNdDBsRDdPbkZzUERRUjBqcUdI?= =?utf-8?B?ZjI3VkZ0SGRVUEtGSVIyZUFyWVIwanUwd252KzNPUkRmNEdtSFVSaDBaMUkw?= =?utf-8?B?Rm1mSHFKL0ZCaFV6QUpOTE14bWVrTHh3WHFXdk10cGprY0FFOHJHaVBZbVRm?= =?utf-8?B?NnJqQjI2VGY1RDdDdWlyV0xvd3o3YTUzSHVjQXQvVERXWTNSNFR2amJYZWtF?= =?utf-8?B?TEY4dTZTcDc2dHp5Zzh0T21VR3VXYTFSU3Brdk5vbkp2ek45V3FBTGM0MmFP?= =?utf-8?B?N0g0bTI3b0RnU0VNcXJ4TUpXMTdleG43d1R3NjRCanR0cHBTSGlFME5HemJj?= =?utf-8?B?Y3d2ajhDcHhiUko2Mlg1bm5QV1BXdlFKT1RoVHFEUmRtb1lmeG1pekk3VCti?= =?utf-8?B?WmVjMWp6R2wyYUhqdkVZMTdqM3gyS3N1Qzg5ZTZqL0xtZVJxYlBWb0lvM3dS?= =?utf-8?B?MURVd2NaSXI5S2tPWjI5QU82MlM4ZXpYM2lLalFPeWEzOFpqZ05Zd3Q0NXZR?= =?utf-8?B?Nmt4S1JGZnJLZGNhaFFCM214Qit0NTJDWkVaQWJMcDB6bTNOZnBNaE9TRWxU?= =?utf-8?B?blhtakVIUldkUVJoaWxaUGxNWUY3dUlLSmQ1TTZuYUowYlF1N0R4TDZzVXJD?= =?utf-8?B?NnBHT0xGMVZMVDhVVmhqbkNRQ2hpc0J1QXNGcUpKeXhZWDNTdW1Pcit2Sk5Z?= =?utf-8?B?WXdpcjZMWmJ3SGdSZnkxNlZJdUxack14SWltVzkrUEx1R3QwQVgxeTJKVTBC?= =?utf-8?B?V1psY0d3YnpVKzN4TndscVR1a0xGRjU1REhxNGtxN0FoVTduWExkQ04zUmZ6?= =?utf-8?B?NnRvY3d0N2RqbDFld0RGZnVvQUpXRTU0ZHdNUVNJd0dFSmNNb3ZDaDFUYUVP?= =?utf-8?B?VkVwMDJFd1R0VHBTU0ZuYVdkczJXZkl4Vno0a3kzalVBMHpWSnVpZkttdkFZ?= =?utf-8?B?UXVGamhiallYRlorZUJEYTVlQmxVYmNzYXNXSDJFZUpxVUdBUlJRWUg3OUlX?= =?utf-8?B?ZzNlakRVam5Qd3RwZnljbHpQMVVIazJiY2psUm1HMURVUEhObENoOGxCZzZp?= =?utf-8?B?emhUMFJDOE9jdzJjWGVnUmpBUGczWUQ5czdMa0ZjVHAvNG1JN1lJTytydVR1?= =?utf-8?B?bmorQjV1WXg2YmRTVS9lc1pMOFVwaTJOcjB4azFGVExvZzYxVlFqcitDdS9i?= =?utf-8?B?TzNCSkp1UGtYY01GNGNCbEM5NHBodUpXS0h0NXorVks2QUVzQWkxQUMzYjZ1?= =?utf-8?B?UzROMllMZlAzTElLbVcxOEk4dUpkN002OXJRVmM3ZmpwZG50Z3RJSHNZQTVI?= =?utf-8?B?TGtobjhIN3Jhd2gydGhwYmJXQkZUbHp3NVFDTmhzVFFhN2tkQm5taFNEK0sx?= =?utf-8?B?RVY4bFNGeWYyZTNHYTJ2Nk9SWVVlMjE2ZzZSU28wUDJzSFpQU0FNeTlKOE4w?= =?utf-8?B?b2J2NGFMUm05WHNGWDY4Q0p6Q3V1blVzaXhrWXJocFpQL0xkZ205TFFVRHVs?= =?utf-8?B?RmNiYmc2SlozVHdUVFVnTG0ySGFWWVh0ZEdFb01DY3dCb3ZZTHYzNDlnRGZp?= =?utf-8?B?d0VlQlNUT1hwSlhmSzA2aGF4UnlpWm9Rbng0NzZCYUxTVG5OcWQ2TE4vTUJp?= =?utf-8?B?WG5Hc1NIRC9BNzMydXhGS253SmM2NmdOZ09TN1M1U05lcWlmYUhaNXB1dGJx?= =?utf-8?B?ZFlNdS8zVTlaVjI0Vk94dndTL2FWRlo2RThBMU01Mll3c0FJWEZuT0hwQkZx?= =?utf-8?B?MGZqTkhXc3F4clFNK3o3Y0xRdEJaTi9uOERtWmFFcHlKS00waGQyZWxXQWUy?= =?utf-8?B?bVNYS1oxWXdIZ3pyaHpjMUgwUVlNSGo3dkNtMWdSM1FEU0kzNXJQUFp1MlhQ?= =?utf-8?B?Z0V6ZFpEeDNqWXhJc09LalJCSy9BTmVDMEMyU3NUY3prODVUNTA2RGZyRnVG?= =?utf-8?B?b3ZtakJKRE9zMkNDUVgwQmJXVTJ6UXQwY1JyOFlXRm85dUhmenZLaGZIVWhX?= =?utf-8?B?Vm8yVzN5NERWOXNQSVc0cFJWWVdwQm9UZHBQSWNUVytLWFJVbkljNEwrZVpm?= =?utf-8?B?QXVWNG9objFhdmcxOHBZVDZDeXZmR2dvakd0OVpWbjIyaHhlQkV2enNKbTlP?= =?utf-8?B?aU5HYzJrTnhuWkh1SjViZzNUdXhudVJhamJhYVNLZ1BhVmpZdW1vZXlNZ1BL?= =?utf-8?Q?pZYQAU6Xybf42Ag5pHI1kozq3Y0hdtRLp4RjpqDEIQRP4?= X-MS-Exchange-AntiSpam-MessageData-1: QRBM61gjxXmO7cKF16ZLhveISYnzNrnsc1Q= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f355f293-3263-46c8-47ec-08df344a2d8b X-MS-Exchange-CrossTenant-AuthSource: AM0PR08MB11804.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2026 16:48:50.6791 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: V0s7J7lDjceoGDLrUrc0QJCZhg3ze5O1+PyGPFybLXK0Plm27Q/FaJn1L2oMPN+oLcUnFUr148YMD3QZfJApwdp+IigQyrTb9AXRFvT94Lw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BR0PR08MB513224 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v6 5/7] block/blk-cbt: walk cbt_list under SRCU X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org blk_cbt_bio_queue() walks q->cbt_list under rcu_read_lock(), but a cbt may need a bitmap page there: cbt_page_alloc() then drops the RCU lock around the sleeping allocation, pinning only the current cbt. A CBT stop or resize meanwhile can unlink it and free the next one, which the walk then reaches through the stale ->next. Walk cbt_list and release cbts under SRCU instead, whose readers may sleep, so the allocation no longer drops the lock. https://virtuozzo.atlassian.net/browse/VSTOR-149268 Feature: cbt: changed block tracking (for backup) Signed-off-by: Pavel Tikhomirov --- block/blk-cbt.c | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/block/blk-cbt.c b/block/blk-cbt.c index 5486f0bea7ee0..824f12a5a7324 100644 --- a/block/blk-cbt.c +++ b/block/blk-cbt.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -34,6 +35,8 @@ }) static __cacheline_aligned_in_smp DEFINE_MUTEX(cbt_mutex); +/* Protects the q->cbt_list walks, which may sleep to allocate */ +DEFINE_STATIC_SRCU(cbt_srcu); struct cbt_extent{ blkcnt_t start; @@ -105,8 +108,7 @@ static void set_bits(void *bm, int cur, int len, bool is_set) * -EBADF if cbt is dead, * -ENOMEM if alloc_page failed. */ -static int cbt_page_alloc(struct cbt_info **cbt_pp, unsigned long idx, - int in_rcu) +static int cbt_page_alloc(struct cbt_info **cbt_pp, unsigned long idx) { struct cbt_info *cbt = *cbt_pp; struct page *page; @@ -118,7 +120,9 @@ static int cbt_page_alloc(struct cbt_info **cbt_pp, unsigned long idx, } else { struct cbt_info *i, *new = NULL; - list_for_each_entry_rcu(i, &cbt->queue->cbt_list, list) + list_for_each_entry_srcu(i, &cbt->queue->cbt_list, list, + srcu_read_lock_held(&cbt_srcu) || + lockdep_is_held(&cbt_mutex)) if (!memcmp(i->name, cbt->name, sizeof(cbt->name))) new = i; @@ -132,15 +136,11 @@ static int cbt_page_alloc(struct cbt_info **cbt_pp, unsigned long idx, } } spin_unlock_irq(&cbt->lock); - if (in_rcu) - rcu_read_unlock(); page = alloc_page(GFP_NOIO|__GFP_ZERO); - if (in_rcu) - rcu_read_lock(); spin_lock_irq(&cbt->lock); if (unlikely(!--(cbt->count) && test_bit(CBT_DEAD, &cbt->flags))) { spin_unlock_irq(&cbt->lock); - call_rcu(&cbt->rcu, &cbt_release_callback); + call_srcu(&cbt_srcu, &cbt->rcu, &cbt_release_callback); if (page) __free_page(page); return -EBADF; @@ -165,7 +165,7 @@ static int cbt_page_alloc(struct cbt_info **cbt_pp, unsigned long idx, } static int __blk_cbt_set(struct cbt_info *cbt, blkcnt_t block, - blkcnt_t count, bool in_rcu, bool set, + blkcnt_t count, bool set, unsigned long *pages_missed, unsigned long *idx_first) { @@ -220,7 +220,7 @@ static int __blk_cbt_set(struct cbt_info *cbt, blkcnt_t block, } } - ret = cbt_page_alloc(&cbt, idx, in_rcu); + ret = cbt_page_alloc(&cbt, idx); if (ret == -EAGAIN) /* new cbt */ continue; else if (ret == -EBADF) /* dead cbt */ @@ -243,7 +243,7 @@ static void blk_cbt_add(struct cbt_info *cbt, blkcnt_t start, blkcnt_t len) start >>= cbt->block_bits; len = end - start; if (unlikely(test_bit(CBT_NOCACHE, &cbt->flags))) { - __blk_cbt_set(cbt, start, len, 1, 1, NULL, NULL); + __blk_cbt_set(cbt, start, len, 1, NULL, NULL); return; } ex = get_cpu_ptr(cbt->cache); @@ -258,22 +258,24 @@ static void blk_cbt_add(struct cbt_info *cbt, blkcnt_t start, blkcnt_t len) put_cpu_ptr(cbt->cache); if (likely(old.len)) - __blk_cbt_set(cbt, old.start, old.len, 1, 1, NULL, NULL); + __blk_cbt_set(cbt, old.start, old.len, 1, NULL, NULL); } void blk_cbt_bio_queue(struct request_queue *q, struct bio *bio) { struct cbt_info *cbt; + int idx; - rcu_read_lock(); + idx = srcu_read_lock(&cbt_srcu); if (list_empty(&q->cbt_list) || bio_data_dir(bio) == READ || !bio->bi_iter.bi_size) - goto out_rcu; + goto out_srcu; - list_for_each_entry_rcu(cbt, &q->cbt_list, list) + list_for_each_entry_srcu(cbt, &q->cbt_list, list, + srcu_read_lock_held(&cbt_srcu)) blk_cbt_add(cbt, bio->bi_iter.bi_sector << 9, bio->bi_iter.bi_size); -out_rcu: - rcu_read_unlock(); +out_srcu: + srcu_read_unlock(&cbt_srcu, idx); } static struct cbt_info *do_cbt_alloc(struct request_queue *q, __u8 *name, @@ -555,7 +557,7 @@ static int blk_cbt_snap_merge_back(struct request_queue *q, __u8 *name) if (!page_main) { ret = -ENOMEM; - if (cbt_page_alloc(&cbt, i, 0)) + if (cbt_page_alloc(&cbt, i)) goto out; page_main = cbt->map[i]; @@ -608,7 +610,7 @@ static void blk_cbt_update_cbt_size(struct cbt_info *cbt, loff_t new_sz) in_use = cbt->count; spin_unlock_irq(&cbt->lock); if (!in_use) - call_rcu(&cbt->rcu, &cbt_release_callback); + call_srcu(&cbt_srcu, &cbt->rcu, &cbt_release_callback); } void blk_cbt_update_size(struct block_device *bdev) @@ -696,7 +698,7 @@ static void blk_cbt_del(struct cbt_info *cbt) in_use = cbt->count; spin_unlock_irqrestore(&cbt->lock, flags); if (!in_use) - call_rcu(&cbt->rcu, &cbt_release_callback); + call_srcu(&cbt_srcu, &cbt->rcu, &cbt_release_callback); } void blk_cbt_release(struct request_queue *q) @@ -744,7 +746,7 @@ static inline void __cbt_flush_cpu_cache(void *ptr) struct cbt_extent *ex = this_cpu_ptr(cbt->cache); if (ex->len) { - int ret = __blk_cbt_set(cbt, ex->start, ex->len, 0, 1, + int ret = __blk_cbt_set(cbt, ex->start, ex->len, 1, &ctx->pages_missed, &ctx->idx_first); if (!ret) { @@ -775,7 +777,7 @@ static void cbt_flush_cache(struct cbt_info *cbt) if (cbt->map[i] != CBT_PAGE_MISSED) continue; - ret = cbt_page_alloc(&cbt, i, 0); + ret = cbt_page_alloc(&cbt, i); if (ret == -EAGAIN) /* new cbt */ goto try_again; else if (ret) /* dead cbt or alloc_page failed */ @@ -897,7 +899,7 @@ static int cbt_ioc_get(struct block_device *bdev, struct blk_user_cbt_info __use cur_ex->ce_length = ex.len << cbt->block_bits; if (ci.ci_flags & CI_FLAG_ONCE) - __blk_cbt_set(cbt, ex.start, ex.len, 0, 0, NULL, NULL); + __blk_cbt_set(cbt, ex.start, ex.len, 0, NULL, NULL); cur_ex++; ci.ci_mapped_extents++; block = ex.start + ex.len; @@ -981,7 +983,7 @@ static int cbt_ioc_set(struct block_device *bdev, struct blk_user_cbt_info __use ret = -EINVAL; break; } - ret = __blk_cbt_set(cbt, ex.start, ex.len, 0, set, NULL, NULL); + ret = __blk_cbt_set(cbt, ex.start, ex.len, set, NULL, NULL); if (ret) break; cur_ex++; -- 2.55.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel