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 2ACDB80474 for ; Tue, 27 Oct 2026 16:50:25 +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 69RGnELP030950; Tue, 27 Oct 2026 19:49:14 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69RGnELP030950 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Cof2KoWv" Received: from mail-yw1-f199.google.com (mail-yw1-f199.google.com [209.85.128.199]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69RGmvu2030892 (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 69RGmvu2030892 Received: by mail-yw1-f199.google.com with SMTP id 00721157ae682-8b109c28fcaso57593497b3.1 for ; Tue, 27 Oct 2026 09:48:57 -0700 (PDT) X-Gm-Message-State: AFq9FYKNKRIOY3RNIuWGRHpWkYSrwiDanH07soCjFUpYWfSy32aW5SJK GO/F4BHzKg08krnWKmCbWD8p3VZTKZpdfyhsqamKygdGVj7f6m2qbi8E0vqTpKdOfwD+WDdbGvZ iuPZewBAZnujApiuDB5XDvCEmJZ91y/W3+V7nhS2gNbXR54qwbxjIbA== X-Gm-Gg: AYBFou2P0aX1KfND6rhVnuz6uMwwlXWFk5LUPfe/futNn0pnLvZLTFkURKso2t37+tq 3cuiCgTbzPLWDbnR06oLGRVZSGtw4oWmikAcdbWg1WM4++vYV/7yHcWjccrAjaHHEpNWCk5yFSD a7VXVjtrdhCOOZdHNebmuTCKENJbiIawhRzGlPHNAaTx+o6Avw4Oo7erru8eUZbcM2N3Zgv+1uX EOWYk5y+Tc5VqmXTPKU6ykcsXL8TdoN6ciQbGCVJzTzYw1yLIED1K7AmOX5TZutuQPMgrWlMR1p 6xQCPd5dQSjJE40Er2rYn4K+9p5U2sEdB/mcdIHf7gYL8p8XOJguPsimiS9vCsprSe0I5AAjYIo ZVrMMfCeGN0vgssHysJTRN5vbW31SNWbqhT5X2CvTxLevXr7SpQWNsFIPX80tqlA2nBIy9ME6E8 O2NTARtsynVaqCDakI1ZXM+tBDBuDn X-Received: by 2002:a05:690c:45c5:b0:8a9:b91c:7cc3 with SMTP id 00721157ae682-8b166c86336mr67676747b3.101.1793119736825; Tue, 27 Oct 2026 09:48:56 -0700 (PDT) X-Received: by 2002:a05:690c:45c5:b0:8a9:b91c:7cc3 with SMTP id 00721157ae682-8b166c86336mr67676527b3.101.1793119736223; Tue, 27 Oct 2026 09:48:56 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1793119736; cv=pass; d=google.com; s=arc-20260327; b=KNT91QMSkdjK1JT9FZisKiKARrvhMc67IjV/jSbGbDLS+wo2hhIC+3DD5rUM1U6SKe Ee0aOyP8qUan1afueiYzl2ERVN3tpLhfxgswy53BCmrILd1l6uorhZpBWlUFRNytTCG8 SVvKtJz2BOMHdTpnjFsUWxxugo6COYVHssYOlEHzZOIOkW1oi36Fkp8oUgQn2uSePYdR 1aouyqgjumPyDsvoCnlY+1q3NbHlStorb4U8bPLoDlX4h/psVqx55AoOUnG1s3qjF6Vc zTKGv8t9dZH0azRHa6d4kHtpdC2U9Q1X1AxreiTkNPCPaFil95H+iZ6RwRhH7X4SiQr5 yBLQ== 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=XrdARPd7YcQZy1OoC5eBSkG6v6dBGdTIS7gE0MD1keI=; fh=y3TfVeQA9QYtIzD5Inxiyys5ebBfyOgjQPZaP/+mSiI=; b=NwOFfvj9t2hf8VG9xN8yT9Culul3Z4+9FxbPBvLX4qQmcikHD9Z1g/P13xxiB99aDT kqEftHQpilOfB9ngckoNTb+Kl6qhu5xilLmKkPgPMj+9eZJFQO31ROBQtGDDS2RMnwaF jlAPBE+OY5J3xOUSEKDRrluQrIM7R3MsJd/Fo4IVHnlNokxHWBgHRsjR8aYLVo1IQtCF AeDJNlCrlYf0n2v66LnT67gB1cw0DZLQg948LRq7xjCZ2f2ikCD/8cIbUqx/wQAEH82b OMVLdL0qGCXs171pIJ+qnluId2qRFc0k7RD5asZYRao0tGBH5HiljjX5TLZcMe4ao1c6 0kKw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=Cof2KoWv; 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.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2026 09:48:56 -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=Cof2KoWv; 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=T30Pd/9SNwO43/58a3+P6QK3S3eFyujwmS4CPQLsffSX2+L17ac9hLrmD/OUXUCX3uPmf+K9pNuTUhFuKr18uW73TErPMgj6hjpjOc35acJrKCzDHOxNfyJJdkuGJhExzaLfJOa9Th9Xy9BdbrtnzC9FtYFncF4MWaOkr1MYDi8y/DZUMaEUJtiMMay8xCRIhkDTWIMmUl4N4wNpK1/3AhI7uobwCI1W0pBFaNrHJbMNw1fu+oOIfsOQOMsO/gVRBBVdUWMMMBD03J1WAG2adXVlEzYz9WD9GkSxvwBeTbtpriXYXkR00Ss2ixMTHnahooHkdTURMicfoUg3TV1ByQ== 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=XrdARPd7YcQZy1OoC5eBSkG6v6dBGdTIS7gE0MD1keI=; b=GDdQVE9NOhItFD2yl7Kxq2e7TfOQvGUXhvf2eOs7AO9Z2TMrW3TIAxe0d6U6/p7b749eNXBKHLzgu3VsIFlzymdByflc2E66AEElHi3HKysmT+4oBjnyjL/J9XAwYLZ35jt8uaRfVvzr66fOWSYr3rVMto/LgVBTB5j7Rhw+eA6kYfgztjee0mMsoPRMqBUNku4a4R4Z8FzrL5fwFMPQcY5ssQhFvtObHeFR/Tv9KQD4V5wLdIK1JtsTQmyNIhAD+xy35J8Vlkr7MxUi5PyTQTqNa32msHFCrufmtUOyflHRMI/AX9EW3Hv6nc6VBUgszOfVppYyGaLJ+6i4ctZPug== 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=XrdARPd7YcQZy1OoC5eBSkG6v6dBGdTIS7gE0MD1keI=; b=Cof2KoWv9kXsPM1qNCYvraRzWkEiGneLdpJDxg/1LK+DUreuZ7WNKrMUIqNhw00klYt8aB1r5PtA0FJ//CbCbIzaXPlD+mQYHNqiMP3OyTwjG1IfmuMqqu5qwk+IDM0YoGwlrp9QZ7jKTtbIQa2BN0sbky2IRgKfgjF7gALvhIc0vfpz/4cREEaE3CCV4QSBvBclV3/9dYezzUpHi7pG3EXjmQY87bBRmqfJ24k9NJcBgdB/3FRFRnXgw034KsnO9L/QVPDLf58KklHLSLWAuTt38TMDIocKP9NN5aZRynhT4pR5VmOM/jN9XYi34byRwK1BtPjWb7eZ81awbyqopQ== 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:53 +0000 From: Pavel Tikhomirov Date: Tue, 27 Oct 2026 17:48:51 +0100 Message-Id: <20261027-ptikhomirov-vstor-149268-cbt-account-at-rq-start-v6-6-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: 46fffc1c-dd71-4093-7f5d-08df344a2db3 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: 8COmBUpVKQhuFMh9eF4sG4jxfr+zr6PTK4okpG2jQqd88EFZi+UOnz3LQybp71mwfHrltR/tlvSIS6pm4PGsAkQU3NyLfZOosd1fQr31TomNiinPqlRec9B0fC5RGc0+E0cK2in3X6QIs5L5J+3/AgwjDOwVVK0n9qlJyQEy/hTgK02bQmPI/NBtb8fHdVW7yZX6ioXmXHfdB9q8VpsdkI0V0PawspDyL2nK46FInolKqzpZmxtL5lfNuYOj9qvdo2fC12SS2UKP+safMqbJQQ5SICCLnJMV2Nv4c4BpiXtrhWZ7ZszWzJu9KEgvqA0d+DLkkgBxGQ2VhrgSmpfoQsXnH291Uq0YDO6qzfyRBQVjE3iZkzCe4RN+lcXNJhpuk5WDwh0fEIwhCs8pxLNKaeMwqf/W9X+B1C/z+dKiUzksaOKxuivDr72CpGMc3qqKG3+YZR9zywV88R4dw5iG2d14aIv8WunJ01w/IamzwZzx6lSZZ0XptgJ24+WIb80XZcYnVfADudgUBPHpmdqZyPfOpbnw2VhI3rEj1xreqrt/rOiRLzf5BGE92kB0sXo9E2WpElClkhTpH6xAKrnqEvOX97ajEM5F3cG3oEBob7hhO+amgsT+e1a5jLQq804i 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?dDFXUERaRHFFUTJJQVJjaDAyQ0JhaFpGek1yYU9rbWdjV0p0S0FxRVU4azcz?= =?utf-8?B?dlpKY0hkVk5ra0MzL1FzcEh2UnIycExnZk5VbWlhZllZejNraVJLeDlGRGVm?= =?utf-8?B?a3RGZnRHRkZlYmZaS1pNSUJkS21QcEJSTjlJOUhtOTlIUVBYS1d1WWY5T0Rv?= =?utf-8?B?S21GYWtrM1lEd0tIQTdUUXRTSHBUaXRuMURudXhpaGt4cmVuZWs5ZiszaWVh?= =?utf-8?B?cjk1Z2tTWTdMYk93ajlCT2JXZndwTTlYQU8yYnBWOTZqN01qdWdTQ2E3Z09k?= =?utf-8?B?eWRxdjUxYk9oL0RlMnVESnI2SldLVlkzVFRiVlRMU1JjTjIxQmJsc1VkczFi?= =?utf-8?B?S3NCeW5hOGFycXB4UEQxa2J5R3dabXFlUlBuZ1kvTUVwUDNFZ0tzdllFOGJ1?= =?utf-8?B?VHVCUng1bklERURRUFhyVmZ0cE1jMzBVM094NG1tOWV6R0wyOTcyd29FTGNq?= =?utf-8?B?OGF6QW9qbm1OQ3RCMm1CTE1xVkNEMUpxeFpsNkJpOFRCVHA0L09KUk9xMEh3?= =?utf-8?B?ZTEydVZwMXZGSHQvbHZsUWpTRGNJZ1ViL29kNUZVSDZBQll2ekNSWmRSQjdQ?= =?utf-8?B?ZCtWT3o1eDNQWUtGQWYxb1k3TklCbEdQZU9uNGR3anJsdFBOOUNJRDdVRGRX?= =?utf-8?B?L2UrTHl3d0VzbFRCVmUwTVFSYytyNHNXZXBKQmVNemJFMmx2cnFGYXFhdjdj?= =?utf-8?B?MzBXbmsxTzNNN1RqdkI4L0cveHdwaHE3dUdCY0JCMUlnMUljbm9BN0trSFk3?= =?utf-8?B?U3pTYTVTMWpjYkw1YW9lV1QyZmpQYmhIWlY4R0JaUldKZ29WdlVpd2RRcHVk?= =?utf-8?B?RW02dEF6WllFZHdIdlRQcUFiUGZsT0pPMFczcXFYTVpYUDQ0cUd6bHJQR0ZG?= =?utf-8?B?TkdlZEtCRW1vN0xGdFdScjE1ZkMvTkx6RGVhV1dLMUhiYnl0NlRHMm40cWlv?= =?utf-8?B?alE1MTExaGRhZUFFNExlZ1B5anBETU9vOFVSSVZUOXlPRTBhY29qcTNRSEs0?= =?utf-8?B?NTg5U1BSR2k1SmY1THVhcXUyVVd4VXBQTEh4b1RadDM5ank4TkhNOGNmM25G?= =?utf-8?B?aE5HdFNEZVp1U0k3VUxSUWIwV2lKSzJtS3RCSlJGTEs5ZXZkZTg4cHhzRDVs?= =?utf-8?B?cHVqVzNUdHlvMlFHU1R6bGY2dGF2RlQyK1dXQXNhblpaYUp0VEJibTlhRk5G?= =?utf-8?B?c0ZrY0tKdlhQbkdENnk5MGoxWHZ0QUVyZFZJWk0wQnliY3l6Si9SQXFWVkNu?= =?utf-8?B?ZFFTU1VmNWFBNVJrS0ovSW15b0VYS20rcFE3eGxMUW5rTWFuaThZejhyc253?= =?utf-8?B?dHlabzlGRGE2S2kyZE11WHN6L2JCU3JkQjdHSFZlREUvMk1BNkdyQjZRRUR2?= =?utf-8?B?WU9idnUybWRzSHNkeXdUelpreFliMWZ2c2R6YnpFbmNrWTloNFNhQzdTN3pO?= =?utf-8?B?TUZuaVdmL1hVaTg0NVJEci9ZcHR0ajVGTHFPZ3h6OG5IS3NNMXkxNjI1eVFF?= =?utf-8?B?Smo0L2pKWGRGeWRRaktYRGNkYTJMZUZPYkwwMEE0b1J3bCt4R1RYcHhQUHRO?= =?utf-8?B?Q3NONS9FVDhXWWZZQkJwekRLMXNTSnRoWnRMUm84Mkk3MXY2ME51WG5vZGMr?= =?utf-8?B?OHEwTVpjZTdZaldpVmRuUHJiSUNXSXBPNEt2L0JIZUVNWHJ1U2oyZmtlUXlT?= =?utf-8?B?aVRneTZndkJLamZNNmFXUTZRQUhlcTJmNFgzRVpNTGJuUzZ2Qyt3dERtdW1r?= =?utf-8?B?WUpIajBJSmJSZnM0SzBldE85QVM3V1U1eFJXaG1DL2RxQ2FtR2dyckpqTDY2?= =?utf-8?B?eEpCT0FPL0VFRnAzTEk0akJ3SG1JZmRsSEtQbHloSjdrVllpTWFhOFFZbURQ?= =?utf-8?B?V1VDTGFzS1ZiVnJxUi9RVWdKNUduU1VvOVB2OHpiQlhJZGdzZ0pvL0dBRjRB?= =?utf-8?B?YjNOSVd3b2FkWlJDTGE1UGM4QjNkdGxlWG5BNnZySmhuRnE0Wm1meXFsaFFv?= =?utf-8?B?alZJZXU1T0YvUzFUNFQybytHdW1GUEowVXQwM3NPWFhpbTgzYU9ldndsVGdO?= =?utf-8?B?aUpxeHlzd2x6S2Z0VlBrb1YrN3U2a2R2TUJtQjlZSm5GVWpKY0hZUzZBVk9D?= =?utf-8?B?bFdaVHBJNVl1Tmt0S1FiSW9vKzhUUmMwZ3R3RzhVTFBCR1planRHZTBwdUpJ?= =?utf-8?B?b0syVjgwMG15ZzgxMGc3aDhVajJuZGZTczhlSnhkZENxWC9IV1hPMnJpWER0?= =?utf-8?B?WW9qU2N2NGZ3d2tsTkx3TFVDLytnaEhFdUVJb25jZWhyMzlxK1pub2RGejQ2?= =?utf-8?B?WmlTVFp4eEtoRS9mcjJkYlJDWE16VVV0a3pQektNQTA1QTRPMU9YMjdRUHdV?= =?utf-8?Q?gBvfZswKX77I4ti4z0RDsfLyzPtxJbOygk02bwVk2Pktk?= X-MS-Exchange-AntiSpam-MessageData-1: wDo2kEza+b/xdcoDvW0JphutNsGH7Sc+DqE= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46fffc1c-dd71-4093-7f5d-08df344a2db3 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.9342 (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: 3GMQsxp5m9L0D+mvXzqFtVoF6lU7Y9fHc7I78a5QYclW5Pfr76Hf8xUAnuhMKc4OoCBqvKU9CpYYhGLQbox9j1BImWkSc7OhPJDnXNTmWs8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BR0PR08MB513224 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v6 6/7] block/blk-cbt: don't sleep in CBT for a REQ_NOWAIT write 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 Accounting a write in CBT may allocate a bitmap page with GFP_NOIO, either for the write itself or for the extent it evicts from the per-cpu cache, so a REQ_NOWAIT bio can sleep in submit_bio_noacct(). For a REQ_NOWAIT write, skip the cache and set the bits directly, which doesn't allocate when all the pages are there. If one is missing, fail the bio with BLK_STS_AGAIN, for the submitter to retry it in a context that may block. The throttle dispatch work may sleep, so it doesn't use this. https://virtuozzo.atlassian.net/browse/VSTOR-149268 Feature: cbt: changed block tracking (for backup) Signed-off-by: Pavel Tikhomirov --- block/blk-cbt.c | 52 +++++++++++++++++++++++++++++++++++++++++++------- block/blk-core.c | 5 ++++- block/blk-throttle.c | 2 +- include/linux/blkdev.h | 7 +++++-- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/block/blk-cbt.c b/block/blk-cbt.c index 824f12a5a7324..5535480847405 100644 --- a/block/blk-cbt.c +++ b/block/blk-cbt.c @@ -231,26 +231,52 @@ static int __blk_cbt_set(struct cbt_info *cbt, blkcnt_t block, return (pages_missed && *pages_missed) ? -EAGAIN : 0; } -static void blk_cbt_add(struct cbt_info *cbt, blkcnt_t start, blkcnt_t len) +/* Return true if all the map pages for [block, block + count) are there */ +static bool cbt_pages_present(struct cbt_info *cbt, blkcnt_t block, + blkcnt_t count) +{ + unsigned long idx, last; + + if (unlikely(!count || block + count > cbt->block_max)) + return true; + + last = (block + count - 1) / BITS_PER_PAGE; + for (idx = block / BITS_PER_PAGE; idx <= last; idx++) + if (!CBT_PAGE(cbt, idx)) + return false; + + return true; +} + +/* Return true if nowait and a bitmap page is missing */ +static bool blk_cbt_add(struct cbt_info *cbt, blkcnt_t start, blkcnt_t len, + bool nowait) { struct cbt_extent *ex; struct cbt_extent old; blkcnt_t end; if (unlikely(test_bit(CBT_ERROR, &cbt->flags))) - return; + return false; end = DIV_ROUND_UP(start + len, 1UL << cbt->block_bits); start >>= cbt->block_bits; len = end - start; + if (unlikely(nowait)) { + /* Don't sleep: set the bits directly, only with all pages there */ + if (!cbt_pages_present(cbt, start, len)) + return true; + __blk_cbt_set(cbt, start, len, 1, NULL, NULL); + return false; + } if (unlikely(test_bit(CBT_NOCACHE, &cbt->flags))) { __blk_cbt_set(cbt, start, len, 1, NULL, NULL); - return; + return false; } ex = get_cpu_ptr(cbt->cache); if (ex->start + ex->len == start) { ex->len += len; put_cpu_ptr(cbt->cache); - return; + return false; } old = *ex; ex->start = start; @@ -259,11 +285,17 @@ static void blk_cbt_add(struct cbt_info *cbt, blkcnt_t start, blkcnt_t len) if (likely(old.len)) __blk_cbt_set(cbt, old.start, old.len, 1, NULL, NULL); + return false; } -void blk_cbt_bio_queue(struct request_queue *q, struct bio *bio) +/* + * Account a write in CBT. With nowait, don't sleep: return true if a bitmap + * page is missing, for the caller to fail the bio with BLK_STS_AGAIN. + */ +bool blk_cbt_bio_queue(struct request_queue *q, struct bio *bio, bool nowait) { struct cbt_info *cbt; + bool wouldblock = false; int idx; idx = srcu_read_lock(&cbt_srcu); @@ -271,11 +303,17 @@ void blk_cbt_bio_queue(struct request_queue *q, struct bio *bio) goto out_srcu; 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); + srcu_read_lock_held(&cbt_srcu)) { + if (blk_cbt_add(cbt, bio->bi_iter.bi_sector << 9, + bio->bi_iter.bi_size, nowait)) { + wouldblock = true; + break; + } + } out_srcu: srcu_read_unlock(&cbt_srcu, idx); + return wouldblock; } static struct cbt_info *do_cbt_alloc(struct request_queue *q, __u8 *name, diff --git a/block/blk-core.c b/block/blk-core.c index bcc3060de670c..6bc78f7c23d38 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -871,7 +871,10 @@ void submit_bio_noacct(struct bio *bio) if (blk_throtl_bio(bio)) return; - blk_cbt_bio_queue(q, bio); + if (blk_cbt_bio_queue(q, bio, bio->bi_opf & REQ_NOWAIT)) { + bio_wouldblock_error(bio); + return; + } submit_bio_noacct_nocheck(bio); return; diff --git a/block/blk-throttle.c b/block/blk-throttle.c index e1e008a30bf2c..00f0db0a57f8d 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -1225,7 +1225,7 @@ static void blk_throtl_dispatch_work_fn(struct work_struct *work) blk_start_plug(&plug); while ((bio = bio_list_pop(&bio_list_on_stack))) { /* submit_bio_noacct() did not account it in CBT */ - blk_cbt_bio_queue(q, bio); + blk_cbt_bio_queue(q, bio, false); submit_bio_noacct_nocheck(bio); } blk_finish_plug(&plug); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 1284bb0e4ebc0..885555f480462 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1626,7 +1626,8 @@ static inline bool blk_crypto_register(struct blk_crypto_profile *profile, #if defined (CONFIG_BLK_DEV_CBT) extern void blk_cbt_update_size(struct block_device *bdev); extern void blk_cbt_release(struct request_queue *q); -extern void blk_cbt_bio_queue(struct request_queue *q, struct bio *bio); +extern bool blk_cbt_bio_queue(struct request_queue *q, struct bio *bio, + bool nowait); extern int blk_cbt_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg); #else /* CONFIG_BLK_DEV_CBT */ static inline void blk_cbt_update_size(struct block_device *bdev) @@ -1635,8 +1636,10 @@ static inline void blk_cbt_update_size(struct block_device *bdev) static inline void blk_cbt_release(struct request_queue *q) { } -static inline void blk_cbt_bio_queue(struct request_queue *q, struct bio *bio) +static inline bool blk_cbt_bio_queue(struct request_queue *q, struct bio *bio, + bool nowait) { + return false; } static inline int blk_cbt_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg) -- 2.55.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel