From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 4D81680067 for ; Fri, 25 Sep 2026 16:09:41 +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 68PG8IP9026942; Fri, 25 Sep 2026 19:08:18 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68PG8IP9026942 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="lpQkYqrE" Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 68PG8EPc026938 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Fri, 25 Sep 2026 19:08:15 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68PG8EPc026938 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-88085ea083fso339062b3a.0 for ; Fri, 25 Sep 2026 09:08:15 -0700 (PDT) X-Forwarded-Encrypted: i=3; AKwUvBxpcxDF2qb8jwG7mfAP0PEABDyJ71v8cyLQw1Mi+B1VaZV4LA5eN1kEEj1hfvuKB3eGWjPLPQ==@openvz.org X-Gm-Message-State: AFuF++mHemOeyYvt7EVVg86DEcun8GcTCxiRbgaMMir1XzNJKYgQb6WM vcEXstgMCxlYDI3PgxB8Za5frYIG8SBvRpMmQB/e9L7hFKjRfjV4ixPQelYnpRFjm+gZPBDzmEU Si55Oa/VMUxy/jhRF8t/pat0MtaWx/Xp2YW9FEAqW4JKSFbJtzNfGhQ== X-Gm-Gg: AYBFou3eFO9HG2DiFtHC6FhZbViWIaYwygmEVlv4F2R51AkxxmvCxNToWeEa3w9xiUF Qse8fAknbc3NmyWyxE3GRqNGj7SnZkfyCvPe4HkNXDIBTTVaklbUiAx16vi/BLYaPm1b5Ie6gNz tdqvqvJBXfYHjqzDOvlft1JXGTaZgZW3K4F++QR07f1U98vft8b9hvuazIBECSgiN90p0BDthSs rH6wkUXyzOE/hSLMGFaTEJhqaTw6iWgeuB+ljIiZgEyJe7QThKLX8xNkp0vtCwQYuo77jJojBtp Bt+DaAa4AKVUjdD0vEalTuJCkl2S/QRSbSRacfFs1KN6/yYtwsErRZ3cZGHY8fozDt4wq0USCjq LK6IVZVTInqw20kKlNq2JtOCy8quu5x+syvJphPo5FIABiYsIKzmIP79wMNTb5jUtSsveLW+55y kPNF5p8Q41cbH/Yt/gNyL+ X-Received: by 2002:a05:6a00:2307:b0:86d:117e:5dd0 with SMTP id d2e1a72fcca58-880298d7256mr1875071b3a.5.1790352493925; Fri, 25 Sep 2026 09:08:13 -0700 (PDT) X-Received: by 2002:a05:6a00:2307:b0:86d:117e:5dd0 with SMTP id d2e1a72fcca58-880298d7256mr1875022b3a.5.1790352493067; Fri, 25 Sep 2026 09:08:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1790352493; cv=pass; d=google.com; s=arc-20260327; b=ssd1yvKxPDWWf0Q8JiuvkvMU6HaG9qEY0xb8x6Cjqn+J4uly/qDvSh8PrU9cTvrNtm qM6eL+RWfaiNQA6skjRllId63mPYLVBkHzf8mm2y3A8u+2UelHPTu24BAUK8+pTt9RDF ymZTFn632ftsFy7BpF2ColMIfFLxEVIJei62pc/LrNjm8FPozW13HknbcKJHAz/hcCI2 2EiFhYMxWDZuiZB9uBTQNIvaxxwCHTLGR95CAA6E8CrbnV3b4/kOVLoleXBg/XngwLwo vV7j+3o1paED/HfRYuQm4qaC2xNHNkHnkvcp/dsgAxmIByTks5wFdUNUPWLMdxzsLNt2 nfIQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=mime-version:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:date :message-id:dkim-signature; bh=e81eZGfoM0/4FGDYsJ4NMadl6zcjrJX6F7Cn91TFhx0=; fh=uEc71lE0LdqBPT7Qcas/P5lIncn3oJ5/FMjX04WDXRU=; b=d7YqejVIfHpeqzQ4Am6stapZ5yNG+d1Xd080FXXng/Lw3jTzuBeaT2GfERkhyygeBk wfMlhiwIjhXsRFOV2+Aozt7kjJSP2pdvtvNqH/XiyNNcbgJv06pblpDirDT3z/Kv4QUn Vp7JDeremG7lZvVPCyuosWhyflkQpMFbKnlAhsjgSC0ptcrxrOB50j7XjxARFar+GyQp oempFordp5p3iN+GsMWNxoWO6D1vhx4iwehwbv+zTKcUb+c65vry5d67cs8sedd1QqGt /Cisr0XS5DsAWJDe+f1sKHJ4DZFpNyBQbwunxcmjapuXBLLKzQe7ux0jUfi2nMwpY+7A T+9A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=lpQkYqrE; 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 khorenko@virtuozzo.com designates 2a01:111:f403:c201::6 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com. [2a01:111:f403:c201::6]) by mx.google.com with ESMTPS id d2e1a72fcca58-87feecd0060si5571341b3a.30.2026.09.25.09.08.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2026 09:08:13 -0700 (PDT) Received-SPF: pass (google.com: domain of khorenko@virtuozzo.com designates 2a01:111:f403:c201::6 as permitted sender) client-ip=2a01:111:f403:c201::6; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=lpQkYqrE; 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 khorenko@virtuozzo.com designates 2a01:111:f403:c201::6 as permitted sender) smtp.mailfrom=khorenko@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=uF27ymkuV5zX0meagKuhFvJnAUC9UiMi82NNwlL7h2rud0WpyTUm1Qv/KtTxCyUIo7P5BL5Mf8mmfMLtIcXwVprWwhbDyrZY7o1STFgldOJMh/4s/Oq4qlA7emoKh1VLaxARJpaqKUKc+MxIYYXNQE+ciby1xsZ2GeEx6iOeDPXYcbHxfD+LGUuhpgQS3VZah0Zmmjl0LpEE8un6O0yWjSpdpd3ziRA58TOZpn4RSOoDnvhzMwhRhEULPg2ZAIy6h6FqkmHdiNhi6NRy12yY6CdxzddTvISGnUeO5iwbRKxPcB5ysFGuSx9bEMk9d/igFoEbvfhi9/6MbX+SZnrO5g== 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=e81eZGfoM0/4FGDYsJ4NMadl6zcjrJX6F7Cn91TFhx0=; b=RIZ5avIpyVoHedh6oYXb9PwH065rVqKoNNSM4H4uySz3rBaKhmlmeKWRlVWEnVC1Cq87B/bU401wjD0AC4upe36QG1QaD4QX/gLP0RUVLj9T5Et47Lgd8nLsTrFt5/zYVIx04SKP8GFoNH6EIUp0ZAoHomKQnuLogLFYl9TdYSAAPAAkj0jApcap3vCns/d+NKkqNoGKy4WkghXIYpE1a270zLSFV9sNQlt2YNIdYp1iht5aZhPUBap/Xgp9sVGJgHVIMscZF408S+4vhMZOEyn06E3tDfl//5ZK2lUpG4kHBKRVkIxsodSKCJTmZTT416Yp5eykANBFySuwjv1J8Q== 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=e81eZGfoM0/4FGDYsJ4NMadl6zcjrJX6F7Cn91TFhx0=; b=lpQkYqrEXJkFa2Dcsw/ZzQQhochAi+zLbcEWQt0Inox5gAB8qlyvm3JkDWA3hpdjPVVOF6MTYQgsJc+tcX/HuEHTiN+ulIddwalv25dO9h/FCwa0iISqoQDzxO4b/Wf+Y8hYrvNWSmyOCqV9Zlo14wHX88Ip/Gr8k2FmatsFLPcL764ukqPXUYCfqR+W9CSFOHetuwJ08JBLGde44FSA/M+SN07Ji8h+4l56wofux/FWyG557MU2BR3CTun6GJZZDfW3xZ7eT7AP9AGkOiq1flyFjnRN/ZArapASa6aaUqIg8GlXO3A4PkKZOCaEE54H4rP6CbiMVUp4DsMZSDPw5Q== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from PA6PR08MB10708.eurprd08.prod.outlook.com (2603:10a6:102:3c7::20) by AS2PR08MB9245.eurprd08.prod.outlook.com (2603:10a6:20b:59f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.18; Fri, 25 Sep 2026 16:08:10 +0000 Received: from PA6PR08MB10708.eurprd08.prod.outlook.com ([fe80::1999:c6db:dc55:494a]) by PA6PR08MB10708.eurprd08.prod.outlook.com ([fe80::1999:c6db:dc55:494a%5]) with mapi id 15.21.0451.014; Fri, 25 Sep 2026 16:08:10 +0000 Message-ID: <0a0a8403-3ff0-47b8-b5e4-5a20c7b1ea3b@virtuozzo.com> Date: Fri, 25 Sep 2026 18:08:05 +0200 User-Agent: Mozilla Thunderbird To: Vladimir Riabchun , devel@openvz.org References: Content-Language: en-US, ru, sr From: Konstantin Khorenko In-Reply-To: X-ClientProxiedBy: AS4P189CA0060.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:659::15) To PA6PR08MB10708.eurprd08.prod.outlook.com (2603:10a6:102:3c7::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA6PR08MB10708:EE_|AS2PR08MB9245:EE_ X-MS-Office365-Filtering-Correlation-Id: aeba55f4-e742-4f73-2415-08df1b1f31b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|23010399003|376014|10067099003|4143699003|56012099006|6133799003|260925021311599003|260925021911599003|18002099003|22082099003|260925022911599003; X-Microsoft-Antispam-Message-Info: M2mSDYBhvcgxOqQ3fHy0s6E7dwQkp4RjZ/08hWTO5ELnFW+BBs2XDiuRg8vylbGQVMZzytdCiLm8l063CjRt1l8WoJa4EVx2/xZhe4/G9QCUKwjq4sj//GXw/xSCzl4MT82iArbgw+IW2apzT13yEqrNgrCGFw62TVitDoA1bcLgSlq4XyQl5dYxsrFx+OhROAqaS3y1ttNAT011PLNoler2/W6uDpWlEXYLrX9tgFYIWwBJe4DrgP2Cege/4hq09/2aiTTVg9khmvTqROlaRVVo64k/u+p7TVUSbpn9ZJHxNFiAcj5l4BUWu3Vd9abhbL2sBsyT2bdW62d5L0g/+BeQYyBYW48mmdKzwgdSd/ou7nHsd54EvrL18j1IADA+NF5AHJjkzE7oO7Tuee8NleKHRaeTHgSCqqDLUd5o3lOW+vNgHKFHGfqV9jg64T0hl0G14PQ0iliEcqWuoy2gVWW10fCpsXPBCaNb1OA7R2NiPZshZJoEdr9NfuUcbSRHsgtuj/+dGpFdsMTxFx5BJKmji2RpkgufB98KuDt0PTUykZh2vKi8aFZqQx8vh7pbcWnWGluh6ZP2uKLyefsk4E7JjqYf0IFOfse+3B/pdDBMo4h165BtAu6zgv5O9+GoPIbBfdWvdNhIXddKHcca9AxbRspmV+vG9QZNFaXUjWs= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA6PR08MB10708.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(10067099003)(4143699003)(56012099006)(6133799003)(260925021311599003)(260925021911599003)(18002099003)(22082099003)(260925022911599003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?d0N1V1ZBNzVpMzFuck9jK2dIVE9VZlJkYWd3SzB5QnBlYUFXaHQ2Zlp5OG8v?= =?utf-8?B?YStwd1B1RElMS0lNZUFQVUhoTDdEcDNZb3R5dHZYRUp2aUtKZkFMbjRNTC9J?= =?utf-8?B?U0x5Z2psMEdxVHIvTEM1MU9HaUwxRVd4M1dCa3U2SzFMeEZ3Y2Vwc2N4QXhi?= =?utf-8?B?N1h3Q1NDOUJOVHBlNm1zdVFDOUt2N0I4TDJLS25JRTJCdUZ4RTQwWFZKbWJh?= =?utf-8?B?RkJFVHBnYys2TFliOHF1NnhYa3ZjU3JablB4MkU5WUN1ZmlSSVNPZnVnUng1?= =?utf-8?B?VGlJbFNHS2FqYXN5S1VDZkVOU0k0YjE0RlZGbjc5N0dsVTJSRlpJSnhDTDky?= =?utf-8?B?MXpNZS9tN2hqWnF5RER0eEI4dGhLQ1B6aVcxb0JXbG40VnhieWxJVERsRHJz?= =?utf-8?B?Ky9TcCs2ZXJoaUJlcXA2QnF2ZlpEUEsrRnpxd1hTbHQ2VmhpZ1g5MzQyV1Ux?= =?utf-8?B?RUE4MDZCZjgwSlltMmw1VlBTOTM1NnBnbGlpV3ZiOHovWk9pbFFuT0hkWGNL?= =?utf-8?B?QkpIZWl6SDBGTXNlSHZWcUNiQy9KUXpIcmdPYmpLNzN3T2pWSnlMRXlyZ0hU?= =?utf-8?B?V3kxNkcxUlNFbHBjeDVUdGxibnJ5em1hN1FnSjdhWlYxZm9ObW1xNmdUcXZn?= =?utf-8?B?OUFHTzJQempYcHBzY1pvTFAwMkxCTHh4WHB6VG40QS9BNHArL2Q2MFVrTDRD?= =?utf-8?B?QjhtcTZXV0I2M3NaeGs1aFpOTDNhaHYweXhOeDB1SzB0VjlyeWJZVWtlTHAy?= =?utf-8?B?YlFUdm0wbjM0Zis4Z2ZOWE5XdVlZd21sWGd3NGlicDVxWmtRY2NFYld1eE1D?= =?utf-8?B?VlJ2WGVQU3Arby9pMFVEUFFnL0wzMFBXdko2d2wrNkovbHk0SUEzTWFKSVdh?= =?utf-8?B?dUd1OVJiVFgzeTdQS2NuSXNNWGU3WEpEdnl3YTJ6elNGMk51UlQ2WllmVnhV?= =?utf-8?B?MGJ6WDNRSDA5YklJdDZ1SmFYcUtmZktQUTJDMWN5cnNlYzRDM0lrbDlVWWZC?= =?utf-8?B?Z1hBbmFyWGhjUzhQNFhYMUg2RXE3VU5tcTU1dFVlK2llcFF3RVZNQjZqUlZ5?= =?utf-8?B?NWdxaW9ZMzFLVjlPQW9CTzgvQ0xlSzVzQ1BjaVFpcWgxVWdEcFdIa09tNHpK?= =?utf-8?B?QW1zR2FJK1BoMkxHc1lIb1JhalVyRlE0V1JZRXRHSlZXenBPRUxjVkl4Q3Ft?= =?utf-8?B?REhwbmdMb3FwVDNMa3NDTE4va1NWdzRUYklRN1crd09xTGFvSVBJSE8xRm1K?= =?utf-8?B?aFNIRlg1MzlwVnk2dzJKUktWK3VYYUFPL2dsdENvd29mUTlVNS8ySmMwL1gr?= =?utf-8?B?Wk5ocjIwbjRCN3dXNGorMkFzZHRaV1FJV29za2N3WW1TUDJwd2R5b3FYaHNO?= =?utf-8?B?dnMyOTluQW9HTEI2Vml5NnRPYm5xQUhxd1NsaUlVdXhqeU9DSitNNFB5Y01u?= =?utf-8?B?YlBpNXdFSy80azRRelZMa3kxRGx1SENxTFJiU0xyNlcrVE5JR3p1M1dCZDV2?= =?utf-8?B?VzIwZkFOK2NwSW82aWswNEtRZGxVSFRnWHhpMWdWTjhEWWp5TWI3QWlJbEIw?= =?utf-8?B?TlhXSVBRYlJzUzhPMFhaRUVsNUUzSmpPaTRCUFB3TXQvWmV0b3dzMWJOMjdk?= =?utf-8?B?MjFXeEl5dzZhbjJ3RWJpSG1XY1NqNEpDWkFvbVVrK1BmK3BLemlFSFllTHBu?= =?utf-8?B?TVlWekxWZXF0Ump4ZkNWbnNWaTJZelp5b1JLdncwMkp4Y3BDQlQzcjFDSFU5?= =?utf-8?B?d3NxOFZwYWZmRWlIUk82RW9IQS85cTZtVnp4TWtJbkZ5em9hakE2ZlJ0WG55?= =?utf-8?B?TU9SOEdGUHQ1U254VTNGSFpPZ295ZG1TUlhDbSsvZ3NkTk9mYXRiUkVDZTBV?= =?utf-8?B?Q0cvMlA0Wm16bjhUay9JNG1CVjgxTlRmTlJ4K2VaOEtyb1hZb2ZqK3hBbUxi?= =?utf-8?B?NS9rTWIvZm9WMi93dzJzdzIzeEt6enZNcVliYTREK2UxRlo5a1dWTXNPNnNv?= =?utf-8?B?amRoUFcyd3hGaDN0T25DNGhzZ2JYdTF3ZDYxNXFuMlZhWi9ES2o4MU05dzRS?= =?utf-8?B?SEVSbGtDY3dmU2FxaDQyQ0lKSzdmS0g1SjAzQUd0K0habFJnbDdBUU5EY0Jw?= =?utf-8?B?dVdlQXB2NkNCbENmUEZNYVJLTnd6Yy9PazJuM3VMWHVPSExad1lTNHpaQmRM?= =?utf-8?B?RnRCSlZaK3VjUzVPdkpJN0xkcFkwMWZWaGJWMW5scFFZWnNIUmx0TWVBYXFn?= =?utf-8?B?TmN1MkV1bldseUp3djFYWlJtUjdZY0l0SUpvRXBCK2l1NStxTmJwZUFYd0oz?= =?utf-8?B?M2RiMVNzRm5waDA5ZmUwbEFMK09UcHVkK21XSi9XN3RJRm5UdmtRdz09?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: aeba55f4-e742-4f73-2415-08df1b1f31b6 X-MS-Exchange-CrossTenant-AuthSource: PA6PR08MB10708.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2026 16:08:10.2838 (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: Q5IB9DFoj1sw5xESIiGeA7HBzeX5uANpEMhEAD5Pj8sWQKax6K/wV9I982pyx2VaR9LNCNz6FOzg7NliF1wZXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9245 X-OZ-Fwd: true Subject: Re: [Devel] [PATCH VZ10 v9 6/8] ve: Introduce per-VE failcount 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 On 9/15/26 19:22, Vladimir Riabchun wrote: > It may be useful to have a history of resource limit hits for every VE, > this may simplify debugging and provide some information about the > resources usage. > > This information is provided by ve.failcount file, any write to it > resets all failcounts. > > To add a new failcounter we need to create a new atomic_t field > name_failcount in ve structure and add a new VE_FC_ENTRY in > ve_failcounts array. > > One change, unrelated to failcounts: aio fields are now initialized > in ve0. > > https://virtuozzo.atlassian.net/browse/VSTOR-135520 > > Feature: per-ve failcounters > Signed-off-by: Vladimir Riabchun > --- > fs/aio.c | 1 + > fs/namespace.c | 2 ++ > include/linux/ve.h | 16 +++++++++ > kernel/bpf/syscall.c | 1 + > kernel/ve/ve.c | 70 ++++++++++++++++++++++++++++++++++++++++ > net/core/dev.c | 10 ++---- > net/core/neighbour.c | 3 +- > net/core/net_namespace.c | 4 ++- > 8 files changed, 96 insertions(+), 11 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index cb63416af135..4ae06bcd47f2 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -814,6 +814,7 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) > spin_lock(&ve->aio_nr_lock); > if (ve->aio_nr + ctx->max_reqs > ve->aio_max_nr || > ve->aio_nr + ctx->max_reqs < ve->aio_nr) { > + ve_failcount_inc(ve, aio); > spin_unlock(&ve->aio_nr_lock); > err = -EAGAIN; > goto err_ctx; > diff --git a/fs/namespace.c b/fs/namespace.c > index 1d6e66cd7174..ea01664ff5f2 100644 > --- a/fs/namespace.c > +++ b/fs/namespace.c > @@ -3380,6 +3380,8 @@ static inline int ve_try_reserve_mount(struct ve_struct *ve) > > if (ret) > get_ve(ve); > + else > + ve_failcount_inc(ve, mnt); > return ret; > } Now every failed mount produces two ratelimited warnings in the host log: the pre-existing one in alloc_vfsmnt() pr_warn_ratelimited("CT#%s reached the limit on mounts.\n", ...); and the one printed by ve_failcount_inc(). They are ratelimited independently, so the log gets both messages for the same event. Please drop the alloc_vfsmnt() one in this patch: the ve_failcount_inc() message carries strictly more information (it also names the counter to look at) and additionally goes to the container log. > > diff --git a/include/linux/ve.h b/include/linux/ve.h > index fabc608e31f5..065129b42768 100644 > --- a/include/linux/ve.h > +++ b/include/linux/ve.h > @@ -80,12 +80,15 @@ struct ve_struct { > struct kmapset_key proc_perms_key; > > atomic_t netns_avail_nr; > + atomic_t netns_failcount; > int netns_max_nr; > > atomic_t netif_avail_nr; > + atomic_t netif_failcount; > int netif_max_nr; > > atomic_t bpf_prog_avail_nr; > + atomic_t bpf_prog_failcount; > int bpf_prog_max_nr; > > atomic64_t _uevent_seqnum; > @@ -94,6 +97,7 @@ struct ve_struct { > > atomic_t arp_neigh_nr; > atomic_t nd_neigh_nr; > + atomic_t neigh_tbl_failcount; > unsigned long meminfo_val; > > /* > @@ -102,6 +106,7 @@ struct ve_struct { > * other containers. > */ > atomic_t mnt_avail_nr; /* number of available VE mounts */ > + atomic_t mnt_failcount; > int mnt_max_nr; > > #ifdef CONFIG_COREDUMP > @@ -129,6 +134,7 @@ struct ve_struct { > spinlock_t aio_nr_lock; > unsigned long aio_nr; > unsigned long aio_max_nr; > + atomic_t aio_failcount; > #endif > struct vfsmount *devtmpfs_mnt; > }; > @@ -151,6 +157,16 @@ extern int nr_ve; > #define BPF_PROG_MAX_NR_DEFAULT 256 /* number of loaded BPF progs per-VE */ > #define MNT_MAX_NR_DEFAULT 4096 /* number of mounts per-VE */ > > +#define ve_failcount_inc(ve, name) \ > +do { \ > + struct ve_struct *__ve = (ve); \ > + \ > + atomic_inc(&__ve->name##_failcount); \ > + ve_pr_warn_ratelimited(VE_LOG_BOTH, "CT%s: hits the " #name \ > + " limit, see the '" #name "' counter in ve.failcount " \ > + "of the container's ve cgroup\n", ve_name(__ve)); \ > +} while (0) > + > #ifdef CONFIG_VE > static inline void ve_set_state(struct ve_struct *ve, int new_state) > { > diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c > index c94d4240e3d3..8498bc9df7ea 100644 > --- a/kernel/bpf/syscall.c > +++ b/kernel/bpf/syscall.c > @@ -2891,6 +2891,7 @@ static int bpf_prog_load(union bpf_attr *attr, bpfptr_t uattr, u32 uattr_size) > if (!bpf_cap && type == BPF_PROG_TYPE_CGROUP_DEVICE) { > load_ve = get_exec_env(); > if (atomic_dec_if_positive(&load_ve->bpf_prog_avail_nr) < 0) { > + ve_failcount_inc(load_ve, bpf_prog); > load_ve = NULL; > err = -ENOSPC; > goto put_token; > diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c > index 5ebdb4b7baa7..9261565208e6 100644 > --- a/kernel/ve/ve.c > +++ b/kernel/ve/ve.c > @@ -100,10 +100,13 @@ struct ve_struct ve0 = { > .features = -1, > .sched_lat_ve.cur = &ve0_lat_stats, > .netns_avail_nr = ATOMIC_INIT(INT_MAX), > + .netns_failcount = ATOMIC_INIT(0), > .netns_max_nr = INT_MAX, > .netif_avail_nr = ATOMIC_INIT(INT_MAX), > + .netif_failcount = ATOMIC_INIT(0), > .netif_max_nr = INT_MAX, > .bpf_prog_avail_nr = ATOMIC_INIT(INT_MAX), > + .bpf_prog_failcount = ATOMIC_INIT(0), > .bpf_prog_max_nr = INT_MAX, > .fsync_enable = FSYNC_FILTERED, > ._randomize_va_space = > @@ -115,8 +118,16 @@ struct ve_struct ve0 = { > > .arp_neigh_nr = ATOMIC_INIT(0), > .nd_neigh_nr = ATOMIC_INIT(0), > + .neigh_tbl_failcount = ATOMIC_INIT(0), > .mnt_avail_nr = ATOMIC_INIT(INT_MAX), > .mnt_max_nr = INT_MAX, > + .mnt_failcount = ATOMIC_INIT(0), > +#ifdef CONFIG_AIO > + .aio_nr_lock = __SPIN_LOCK_UNLOCKED(aio_nr_lock), > + .aio_nr = 0, > + .aio_max_nr = AIO_MAX_NR_DEFAULT, > + .aio_failcount = ATOMIC_INIT(0), > +#endif > .meminfo_val = VE_MEMINFO_SYSTEM, > #ifdef CONFIG_X86 > .umh_running_helpers = ATOMIC_INIT(0), > @@ -787,12 +798,15 @@ static struct cgroup_subsys_state *ve_create(struct cgroup_subsys_state *parent_ > ve->fsync_enable = FSYNC_FILTERED; > > atomic_set(&ve->netns_avail_nr, NETNS_MAX_NR_DEFAULT); > + atomic_set(&ve->netns_failcount, 0); > ve->netns_max_nr = NETNS_MAX_NR_DEFAULT; > > atomic_set(&ve->netif_avail_nr, NETIF_MAX_NR_DEFAULT); > + atomic_set(&ve->netif_failcount, 0); > ve->netif_max_nr = NETIF_MAX_NR_DEFAULT; > > atomic_set(&ve->bpf_prog_avail_nr, BPF_PROG_MAX_NR_DEFAULT); > + atomic_set(&ve->bpf_prog_failcount, 0); > ve->bpf_prog_max_nr = BPF_PROG_MAX_NR_DEFAULT; > > err = ve_log_init(ve); > @@ -821,7 +835,9 @@ static struct cgroup_subsys_state *ve_create(struct cgroup_subsys_state *parent_ > > atomic_set(&ve->arp_neigh_nr, 0); > atomic_set(&ve->nd_neigh_nr, 0); > + atomic_set(&ve->neigh_tbl_failcount, 0); > ve->mnt_max_nr = MNT_MAX_NR_DEFAULT; > + atomic_set(&ve->mnt_failcount, 0); > atomic_set(&ve->mnt_avail_nr, MNT_MAX_NR_DEFAULT); > > #ifdef CONFIG_COREDUMP > @@ -834,6 +850,7 @@ static struct cgroup_subsys_state *ve_create(struct cgroup_subsys_state *parent_ > spin_lock_init(&ve->aio_nr_lock); > ve->aio_nr = 0; > ve->aio_max_nr = AIO_MAX_NR_DEFAULT; > + atomic_set(&ve->aio_failcount, 0); > #endif > > return &ve->css; > @@ -1074,6 +1091,53 @@ VE_RESOURCE(mnt); > VE_RESOURCE(netif); > VE_RESOURCE(bpf_prog); > > +static const struct ve_failcount_entry { > + const char *name; > + size_t offset; > +} ve_failcounts[] = { > +#define VE_FC_ENTRY(name) { #name, offsetof(struct ve_struct, name##_failcount) } > + VE_FC_ENTRY(netns), > + VE_FC_ENTRY(mnt), > + VE_FC_ENTRY(netif), > + VE_FC_ENTRY(bpf_prog), > + VE_FC_ENTRY(neigh_tbl), > +#ifdef CONFIG_AIO > + VE_FC_ENTRY(aio), > +#endif > + {} > +}; > + > +static int ve_failcount_read(struct seq_file *sf, void *v) > +{ > + struct ve_struct *ve = css_to_ve(seq_css(sf)); > + const struct ve_failcount_entry *entry; > + atomic_t *fc; > + > + for (entry = ve_failcounts; entry->name; entry++) { > + fc = (void *)ve + entry->offset; > + seq_printf(sf, "%s: %d\n", entry->name, atomic_read(fc)); > + } > + return 0; > +} > + > +static ssize_t ve_failcount_write(struct kernfs_open_file *of, char *buf, > + size_t nbytes, loff_t off) > +{ > + struct ve_struct *ve = css_to_ve(of_css(of)); > + const struct ve_failcount_entry *entry; > + atomic_t *fc; > + > + if (!ve_is_super(get_exec_env()) && !ve->is_pseudosuper) > + return -EPERM; > + > + for (entry = ve_failcounts; entry->name; entry++) { > + fc = (void *)ve + entry->offset; > + atomic_set(fc, 0); > + } > + > + return nbytes; > +} > + > static int ve_os_release_read(struct seq_file *sf, void *v) > { > struct cgroup_subsys_state *css = seq_css(sf); > @@ -1613,6 +1677,12 @@ static struct cftype ve_cftypes[] = { > .flags = CFTYPE_NOT_ON_ROOT, > .write_u64 = ve_rpc_kill_write, > }, > + { > + .name = "failcount", > + .flags = CFTYPE_NOT_ON_ROOT, > + .seq_show = ve_failcount_read, > + .write = ve_failcount_write, > + }, > { } > }; > > diff --git a/net/core/dev.c b/net/core/dev.c > index c7dddb200489..7632ad1fd015 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -10997,10 +10997,7 @@ int register_netdevice(struct net_device *dev) > > ret = -ENOMEM; > if (atomic_dec_if_positive(&net->owner_ve->netif_avail_nr) < 0) { > - ve_pr_warn_ratelimited(VE_LOG_BOTH, > - "CT%s: hits max number of network devices, " > - "increase ve::netif_max_nr parameter\n", > - ve_name(net->owner_ve)); > + ve_failcount_inc(net->owner_ve, netif); > return ret; > } > > @@ -12211,10 +12208,7 @@ int __dev_change_net_namespace(struct net_device *dev, struct net *net, > > err = -ENOMEM; > if (atomic_dec_if_positive(&net->owner_ve->netif_avail_nr) < 0) { > - ve_pr_warn_ratelimited(VE_LOG_BOTH, > - "CT%s: hits max number of network devices, " > - "increase ve::netif_max_nr parameter\n", > - ve_name(net->owner_ve)); > + ve_failcount_inc(net->owner_ve, netif); > goto out; > } > atomic_inc(&dev_net(dev)->owner_ve->netif_avail_nr); > diff --git a/net/core/neighbour.c b/net/core/neighbour.c > index f90deb17fb25..c7d5e6df50c2 100644 > --- a/net/core/neighbour.c > +++ b/net/core/neighbour.c > @@ -520,8 +520,7 @@ static struct neighbour *neigh_alloc(struct neigh_table *tbl, > (glob_entries >= READ_ONCE(tbl->gc_thresh2) && > time_after(now, READ_ONCE(tbl->last_flush) + 5 * HZ))) { > if (!neigh_forced_gc(tbl, ve) && entries >= gc_thresh3) { > - net_info_ratelimited("%s: neighbor table overflow!\n", > - tbl->id); > + ve_failcount_inc(ve, neigh_tbl); > NEIGH_CACHE_STAT_INC(tbl, table_fulls); > goto out_entries; > } > diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c > index b3d54cad984a..328e1c96b6f4 100644 > --- a/net/core/net_namespace.c > +++ b/net/core/net_namespace.c > @@ -486,8 +486,10 @@ void net_drop_ns(void *p) > #ifdef CONFIG_VE > static int dec_netns_avail(struct ve_struct *ve) > { > - if (atomic_dec_if_positive(&ve->netns_avail_nr) < 0) > + if (atomic_dec_if_positive(&ve->netns_avail_nr) < 0) { > + ve_failcount_inc(ve, netns); > return -ENOSPC; > + } > return 0; > } > _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel