From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023103.outbound.protection.outlook.com [40.107.159.103]) by lore.virtuozzo.com (Postfix) with ESMTPS id 3AAEB8045D for ; Tue, 27 Oct 2026 13:05:19 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EYrBV6WlMUUEbWQ9GhcJh++DpyhiguJPICy1kiGnjNTR8l8b9k6bk+DvACw9b5P9Al1uLeNNK0Jw/3EL26+9csntsvavZEFfpAGGTFAu5FASEtSZuCjKXmi2jifrY74zfMjauuVXlbLVlFRmtleAwO5VOEMaD0pXthBuRNe49FsU+4BbFcI4W5KUPQ/tFiVy5KSEMQbPt0JSjMAqbXYkOW03cEfUnd6bm4GzDnN2/6RqqXk+fkhKJhmHo0iAni1xLNQjNyUQkelmycswyGp4fIrgFybQIjQeumiGzSKLINnVsjfKHcYglgTexWchtx7Mh8skJN8qvhhYvoh0rN7xlw== 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=whLLoy7XjFhvrCfgPpHjCJpJ0k6aNRAz23Z7xqPaOOI=; b=T67yqo1uoHOJCRPDtHTkmZxHMOtE+a94nygjo6jguQMcoHfgoWXJmeFpOf43ZwyPmwKRRjZtcXU5nez3DjKBJYihIoqnM54M/U8bn7Q1cNsltjPZ4Btb0hVbHYf3Xhc1Ki8pv2d3iM21l5hNfsTwoM/MYyFZQDNr6xVIZeXZnvTRL8S1qsVE2qCaOuBjVa2war8q6GFGiuHzwoWEk1lfefyO/BVIE8VYH6F3kfIY214OFocZHvrsz74Gng9meJL0nzeDVW27hbj8eaHxW1lwD9jjy6EZK8F3PyoOLf3BmZxuHvoHrxoWBdknRvLZ4HdAjGsxaCi//5kav5xtq2LVJA== 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=whLLoy7XjFhvrCfgPpHjCJpJ0k6aNRAz23Z7xqPaOOI=; b=wMQbSD8SyeVbV8rmUQH6AIxbBrCAvnxjZVtOl2aD3aw4r67aRWCKIIof1qSmfxAJ4SOmaylHsTuPGJJMjOH7XNkIbd77QyJmAWhGLRelG3Qd4Ilu8VfzjWYAGGnr8oB+LYs/VszKmKgmKUpDbVrBW/tFE7mRceYgIo3IRHWR5M/v6by7Bj49pHpperRuswGH8ByvQvMyyGQTH85C6+Qz3pJkyEnhHTa1mDIPBKJWfTXC5AEs56gG2A1cxdczGClH3AIDeDIud6WIyWspPkXXL6uJY2OPHsZmTuMP1HUi8sCoAElXsaGGzNsyH4Md1UJxooL31A2AU9f+CDwkyImuBA== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10743.eurprd08.prod.outlook.com (2603:10a6:800:205::19) by GV1PR08MB8131.eurprd08.prod.outlook.com (2603:10a6:150:91::7) 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 13:05:14 +0000 Received: from VI0PR08MB10743.eurprd08.prod.outlook.com ([fe80::7a7c:d078:f125:f16a]) by VI0PR08MB10743.eurprd08.prod.outlook.com ([fe80::7a7c:d078:f125:f16a%6]) with mapi id 15.21.0546.017; Tue, 27 Oct 2026 13:05:12 +0000 Message-ID: <892b5863-b9ba-45d3-b170-05235ff1189e@virtuozzo.com> Date: Tue, 27 Oct 2026 14:05:10 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH hci-8.1 v2 1/2] vhost-blk: create kernel threads with the mainstream worker ioctls To: no-reply@sashiko.virtuozzo.com, andrey.zhadchenko@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, svt-core@virtuozzo.com References: <20261027124759.2979043-1-alexander.ivanov@virtuozzo.com> <20261027124759.2979043-2-alexander.ivanov@virtuozzo.com> <010701a17d6b8c66-fa71b243-6c44-4564-80b3-75bfebb1f4ec-000000@eu-central-1.amazonses.com> Content-Language: en-US From: Alexander Ivanov In-Reply-To: <010701a17d6b8c66-fa71b243-6c44-4564-80b3-75bfebb1f4ec-000000@eu-central-1.amazonses.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR5P281CA0020.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f1::19) To VI0PR08MB10743.eurprd08.prod.outlook.com (2603:10a6:800:205::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10743:EE_|GV1PR08MB8131:EE_ X-MS-Office365-Filtering-Correlation-Id: 90046881-299f-4024-3878-08df342aef90 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|376014|366016|261026140227099003|5023799004|4143699003|56012099006|261022075727099003|261022105027099003|261009223027099003|261021121427099003|22082099003|5113699003|6133799003|18002099003|10067099003; X-Microsoft-Antispam-Message-Info: tsNDORPuPYj0dsJsk84PIci9T7zBu7e2O19Cji9x8cFUO1YtffWiK2O4VjjvqhPv87kMOCTIuJV4C4dCg+sK/F6NPmykzpWWtiJMjZmS3uLBi1QDuVAYmBdlWqlE/zK9vr8597UyFKQg7hjgIBu4w74PFQqz6k3Wcs2C20G61ljkNfuYDTAjolp9PpY2SNln1WK8J2QqGF5HwWeLsN4MWKc4cHypgxlMK9jDXuPxY1gohKzk9BcTTk2GEpQ9Kl09kG1CM8L078vwsVQ6EyNJTYbBkxLf0MDtqt1pBdQx3VsMtqhC5iERklxgLyX+vLrAAguDcKmZHAU9HuBS67X47eBm2CMCjl7mi/5l4jNQqQbmE7y7aNis8iyaDr4nbfBz8CtgyShZX5MBqhVOms0HruUrD2W3SD77DDcAMHYUyWH6N49jUknCiiJz1YiCRY/sPuuGqsz5NBMufco3e0wYztjhmVSB0voXUTYIYwz/8yZn8dbTY8Zkrg+gUNGOb/H3K3OiBMuigop6OPcO1CK+iETsUiDPb9Q9HEYFKhHPyxkTchF+Xar30Mf9c+hcb4OuU1je0FtKgFUWgkzQx0UNk4giiO4k0dTW2QZGkqWtuf/X7r3YiNgCN7KYkh3gXaVozz6Xt1dynPFROd0PRVkvVdWpGn3RRrTuJTkI/MOVBGI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB10743.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(376014)(366016)(261026140227099003)(5023799004)(4143699003)(56012099006)(261022075727099003)(261022105027099003)(261009223027099003)(261021121427099003)(22082099003)(5113699003)(6133799003)(18002099003)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WHhmSU85elVwRlNlSEh0ckxYODI1allyU29FQ2kyQm1KelZUL3AwT2kvUGdY?= =?utf-8?B?TlJ6SG1QeUlmYTZ6SmphRitkMFVyUnpIcHZkdWFxNEdqNUFKMDJXYVJBc0ky?= =?utf-8?B?WEpIcWJKUnNyc1FEa2hYS0RxMXRWakNscjVHSTNiRGN0djk4NzRDaTM5bjYy?= =?utf-8?B?b3IxUWNjS1YybTlzZkJyVHVUOVI1RDBmbHBNWkNHRENBQmR3ZkRpa1Y0d2d4?= =?utf-8?B?U3dCbmF0WFhQOVo2dVpxbjk2YzN3RVpNRW1VRkJsb1NKd1lxdzlYVXJVSURk?= =?utf-8?B?OVIwWFVqdlVJOFdIU1p6VkJCMGpIRlVoWFdCMWNCR2IvalZtQmlGSU12SkRy?= =?utf-8?B?U2VGL0lnMWVTRURrRHZIeXVxaVg4OHdZWS84WVNjSlRCdWdqc2pwSUZSUWdo?= =?utf-8?B?MGlGNXhhMmVoUTQ2cWE5R01hWW9nVkREVXQvOFEyRFUxRy82M1pYTnBmRDIy?= =?utf-8?B?SndiTk4yVHNVYUFFN21kVEF0WUNvSk55MzlycVY0a2Z3ZmlzZUFFZjN2Qzd2?= =?utf-8?B?alZqd1dlTWJOUVkrZFVYblZFUWNVcmQzWHpNS2hmZm1KdFNJV2pReW16R25C?= =?utf-8?B?VkV4Mll3TUZHYVJod1VSR1pzRDVZbFFGdEpjcWJmZmFqTW9TcVJjNzdVNmI5?= =?utf-8?B?MnBEMk1xelphdFkvSkRBUDhEem9SUUxTZUYvdlhpcExsS2JkNHI4bFFVcW9o?= =?utf-8?B?L1dnKzRuZktNajlXc1lEcWN0cmRCL0cwSlJPeEppcjZ5aTFEKy9ldS9scTV2?= =?utf-8?B?WVBmSHpjcVRYajVwTTVubXFpYmtORWhIM1RtSjdDS3M3YzE1R252Uy9LN0FQ?= =?utf-8?B?OHB1dHR6UVJkclMyNUZ3RjU4RVd3RjB0RHlsVUhHZzRoY21yTUdsdENGRmhL?= =?utf-8?B?NDJURDFYbnlNeUgvTFQvM1RwbkVDNEZOV3VRTUtQUGU2V3hVRzJUTk1TRnJm?= =?utf-8?B?dXBydm1qMTNQaUp2MFdnL3BMUTllZkluSG9XaEFMSTBQMG4xL25iTWFhdG1C?= =?utf-8?B?eXpoS2p5eC9uTE1uSWFEZzBJczhOd01yMlIrN3JPZEYyVHpwc3E1cU9SeXlB?= =?utf-8?B?ZlFnbjh2b0pCMUs5Vi9zTlJHVUltdURZOVNHMkpBeEIwTlVTK2Zud0xyMnhI?= =?utf-8?B?UTRBaFdQcXJNZlo2OC9td2wzMVlIZkJHeVpzOW5kWGhZRlZzWkdRVTZ1WGg0?= =?utf-8?B?QklpNDJ2bk8wbm9KZGpCZ25JazBQUmNpMndYdnc2bHM2YkE4ZS9sL0JkN3Zz?= =?utf-8?B?WS8rS0lwTXNSYWM4Rm9JeFVBL3dwaWhKb3NqdzN5bHdHV3N3dUpIWU5DWG5q?= =?utf-8?B?K1JJVVhIWFMwbVB2OWZTQTVxOHdZM1ZuQlFhMFQweHdjR2JZVVZ2MGJLWUVJ?= =?utf-8?B?RW5GRGZ3eWV3eUZTZGxBQXNuNytaRVpoNE4wTCt0d0orT2lhSTZrYTAxREhr?= =?utf-8?B?MEtTMWswYzFKKzVrZXQ3ZUlua0pIQ0hYbnAzMk52eGhWVkxxbkFQd01EWVhO?= =?utf-8?B?THRBNFBSV3pOSytaVUh2WExiOUxrSCtEczZLS3RsNmlpU1FEZnVLWVpDSWho?= =?utf-8?B?aUtUT1dOMTVRUFk5WXhYTS9ZNUVRelZkQWF3QXAzVGNCa0MvUjRrdVZDT1dW?= =?utf-8?B?SER0all6dWEvYVhoM1lJVnUzY29zbXpZZ3JQcEU3QzNUa2ZHU3RFbDlnaENC?= =?utf-8?B?TEhLVGZXSEhwakcwQkFxTEZrUGNRaFdEMEt5U3UxeUtGa3Irblh0MzUrMHRz?= =?utf-8?B?d0dvaDdvZXZWTjNNOFdjNm9FTVByZXhIUmlySmpvUk11cVJOOEJLdWhmc2t3?= =?utf-8?B?Ynl5Mkk5ZitTYVd5c2FXaXJkUGpRK1NJQ2tmMERrSjYxMG5KVGVCYzBic0pl?= =?utf-8?B?WG8xejdmTDAvY0hvQ0NQMTI0VWJJK0dkajFEQzZ2Vm9SZmxMMGhrUndLSzBN?= =?utf-8?B?WG9TcTBwa2FaZlUwRnQ4dWcra3A1QURrSmZzWmh4SVRtRjJ5ald0UVhpQmF3?= =?utf-8?B?aG0xNmJtdGZ0aG0zZWJCL3d5dVVsYXo2K3V6Um9weVpCVzVpRDRwSlkxcE9X?= =?utf-8?B?dytQaVVLeFplU2Izc0NHRkY2S3orL1E5aGIrZUtZU04zV1hHTmI4MXpKRWJt?= =?utf-8?B?WmdPaG5WemhKM0dOMm96Rk5iQ2lSN2o2OE8ydDFVaWFzU21udGhQay9KNVRZ?= =?utf-8?B?TEk0d3hRR1JRTGFFaEc4WTJPZXlzUnlCbGZpSzBrZDBBN1ZxaitKREtFd1pm?= =?utf-8?B?RlVoK3pqS2wvNTZvRm4wa2lUdjhBSm5XVDU4SFdtRlJsckV1UXFCVzNBQ2x6?= =?utf-8?B?QlY2SzNGYm8rOTFRMmt4OW4zd09kRE5QK1MrOVZKWGZUcENPRS9CUmZ4VmZj?= =?utf-8?Q?UWblaTeA2PomJa1E=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90046881-299f-4024-3878-08df342aef90 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10743.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2026 13:05:12.5843 (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: WtridrQuHkLntHjD7K1+8Yx6JqA3mUGy22L/js0d7u1uQqw5v7idyasiy2bL53/RB2NegY6y6/KFNdc/ujmvFgZTuWuagEr+6b09tSHJVmM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8131 >> @@ -51,15 +97,37 @@ static int vhost_blk_start(VirtIODevice *vdev) >> return 0; >> } >> >> + nworkers = MIN(s->conf.num_threads, s->dev.nvqs); >> + if (nworkers > 1) { > [Severity: Low] > This isn't a crash, but the new code changes how num-threads=0 and values > above the queue count are handled. Is that intended? > > Before this patch, vhost_blk_start() passed nworkers to VHOST_SET_NWORKERS > whenever it was not 1. A value of 0 was therefore passed to the kernel, > and as far as I can tell start failed with "unable to set number of kernel > threads". I could not check how the kernel handled 0. > > Now nworkers = MIN(num_threads, nvqs) evaluates to 0 for num-threads=0, so > "nworkers > 1" is false. The device starts silently with a single kernel > thread, as if num-threads=1 had been given. > > The same happens when num-threads is larger than the number of queues. The > count is clamped to nvqs and no diagnostic is printed. > > The num-threads property is DEFINE_PROP_UINT16 with a default of 1, and > vhost_blk_device_realize() only validates num_queues. Nothing checks > num_threads there either. > > Should realize reject num-threads=0, and should it warn or fail when > num-threads exceeds num-queues? This matches the old behaviour. The kernel's VHOST_SET_NWORKERS handler clamped n to nvqs and, for n=0, created no extra workers and returned success, so num-threads=0 already ran a single thread and values above num-queues were already clamped silently. The patch keeps those semantics. Rejecting num-threads=0 in realize would break configurations that work today, so I'd leave validation out of this series.