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 ABB14802A5 for ; Fri, 25 Sep 2026 16:04:17 +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 68PG33v8026908; Fri, 25 Sep 2026 19:03:04 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68PG33v8026908 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="q9/Myt32" Received: from mail-yw1-f200.google.com (mail-yw1-f200.google.com [209.85.128.200]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 68PG31jm026904 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Fri, 25 Sep 2026 19:03:01 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68PG31jm026904 Received: by mail-yw1-f200.google.com with SMTP id 00721157ae682-8a7d69f4204so14742707b3.2 for ; Fri, 25 Sep 2026 09:03:01 -0700 (PDT) X-Forwarded-Encrypted: i=3; AKwUvByWl3hTGk9pbAwT58chCsqEkFZmeIJX3/nCLuC9eP5QGft/FGfn5b4Vf7SOasDkr1bKHQfbTA==@openvz.org X-Gm-Message-State: AFuF++lpdd5jlh8i+VBeL2qZ2ZDX83JlCNFJkv5XSWlWOEZCTJOEZ/DU xCgGawL8tNxsu8NYazkRiW9UoZm4awfABWnM4+PEI8defmxYf4V+0L0100YIBHydLt7Bjr1D8Te cwO+s/xszu5fj2sCMrRz6W5+CM/aT3Mc5Ocqhs23PmyjpsHNSSZcoPQ== X-Gm-Gg: AYBFou3JIFuQ8R2N0vWg8toPEx8KzGqX8GUGc6UzXEJTPEfW2p9os4Nh/6SGblPqPX6 qEvHajcLiCjucFuvihoD8/kW7RdcN2to+R0bBpXpOENehiq3QzC9FDNSYndrZplrwF0VM21mSqf 1a0r/loTUkdPFoYcCZO1GAZAgGcGrILGuUt5y1iKpw3xC9iRa+W9LCnqucOTeHX1jffQCZWRTwa AjoObLhOFCtM23LlFA6UGb8X627553hgTR81W46pG0sZWhzhtrKMcWIGLXTq/jZ6O7jKJu1uPT8 7fZBiv6qiQ85A3nEMIaoqaThmobrq6HmQnqX+C6g7YF86b3JeCk1bDa9yro66zthS/2lxuKBnlB XXuCcevf71p1gUF0xQi5JVy++9IonxuTtcuO0cVQ6bXSoHFYcMJue4vwa6tpShc2yhSc8LTihYO y7KgTfG4U1a0YvEJG6RFbK X-Received: by 2002:a05:690c:e145:b0:845:ddf4:a399 with SMTP id 00721157ae682-8a64af41ee6mr23888947b3.11.1790352180473; Fri, 25 Sep 2026 09:03:00 -0700 (PDT) X-Received: by 2002:a05:690c:e145:b0:845:ddf4:a399 with SMTP id 00721157ae682-8a64af41ee6mr23888447b3.11.1790352179652; Fri, 25 Sep 2026 09:02:59 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1790352179; cv=pass; d=google.com; s=arc-20260327; b=mp0WbFT4+robMbrKOm08ufgPVMtYny/lErkGhZlahOVSJXlL8QGnRqOghykS2LbBl7 NYLsl31CWdVmKOFkOB7G8UG3TrxKRnQNUtLYCx9tzvf+xWrvpNSUVbWocBzV1laZ4tjY X82AIPAQxl1QNbAVF/YJ36LShU7POnmOlxflfjGJzdoXVfis8+xGvvSrliTvfy94o/Mx VqrG39xMJ1i6TaPkOaI21xxQI7a5Al2FyiCc4Up4Agr70hFi4QO2PWcBcqoglGbMU1H5 UKsemu/vR6QgUZtP4SEd/Sx9fD+vHQEEV2nybsw9zBEhqhNf2RlcmU52yqxd5tZ2nSUg 1brg== 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=s5wdy9GhUvlw3S2jM7uc5nbP9RV4rY/TlANwEv4NzxU=; fh=uEc71lE0LdqBPT7Qcas/P5lIncn3oJ5/FMjX04WDXRU=; b=X3GiBTL1Pglu3ggyyV0AXdt9yPGN609vz2NAjbPZGnspBwD88t5+naXkmhDyeDUevq N35JXXsu9cNpdT9rMaqGFI5zHo8YBZo60FaV3K1a/0JiWJZ2k2FMOdnfXhjVy8jHIj5s E1YG/f/arjGa0MUvFEiRW8Mj6sNj5QduaK32XPjxHWW0RiZxFJuYdoc3KjMXkxrE7BDl brDzUQnpP/+7IalCXeCC5ywNjFCDfvSZ+8s/fiJteOnGaOTGAs/wcjH715VGiJFiMPuf NpzDhxm2wYGnYHg4BDza7eth4T2yYpzlhvhNXl2HO0+QnvBkDBJp0mt+/NAxvvzER0qc 3GGw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="q9/Myt32"; 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 00721157ae682-8a860fd4b75si10989477b3.158.2026.09.25.09.02.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2026 09:02:59 -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="q9/Myt32"; 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=Tf9nElDKGY9IPQymRgevrEMjm/Kmqq9uxHUwAm7n3gRDxso+Jr2q+rxvpEJmN4Cyan6n2d09mEtsvVqsOZKJUWsBylLTJ9DRYWL5fFfpGAKKZGmK43RKz/Tfbx70TbOY8R3dFMqKYINFJrkjkqZG6F4JpuAyYOM6Cak7gsCx2puxcbctKXH9Q1fs1lwC3xcZUc4+iIa97hp/eTg6GpqfVCuyilrlRLURnr4oLSIoqlIAFM188WmdAcxvw123eYagsQMU0ccJr+R0b7K+Zl++IbczjRK+HDlNKYS31jsXSlvhdPMzpQ8WwdSac5Ylsd5QV7NDS2ADk8u7GsSa1BM9ZQ== 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=s5wdy9GhUvlw3S2jM7uc5nbP9RV4rY/TlANwEv4NzxU=; b=BdQlJGzRLIWUO1Gncbgw4sYt1o7InsnUXPPVqsOneoRXLEYDxTqSji8xvzaoxn9AVsvnVNmPx06JE74qlRkuYy1nL2fs4lMv7mNIfqUtuZtei0kY5/azifedXFKesec2IznxOGkWPrEwaO2EG383M1L2oYXXg6ksPsdf9HBjDzXcHJzHh8m7yp2nNTX5cfqBgAznXal5tgerIHePuHKH0u84QHNn9jCVbWQKEukquW7/rMrcyxnJ0kOYXd3Y+PMSLplHkArcXMk20UxVFrTvd5SeIrzTUR9YVeg4sLF8SdHFnuxcM/FoG5fZPWsZhFW8Fz7v/W/K5Ni+XhRfb1bogQ== 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=s5wdy9GhUvlw3S2jM7uc5nbP9RV4rY/TlANwEv4NzxU=; b=q9/Myt324GfoZNeq9frCA2cbHBHjK9mQyCx1+qgcWolhkXW/SPE0KH7W94s7h5sC/9K2VhRmvlgjs66LVKItfubhpe6Nn9xP+12mwGSs8f+YgL5UcXvRWrKR7I5/aES8oFJYm6PG5qv1oCFez1ZDCwd2w72AjGiDbdMRSxmrSFxSOJnO5N6RDVECV2qZtCqW9JabbNQ9PAgKZK+o9YcFZQeg0GjCi2u3NWgBsWnUTDDNO8XB+ay56WLEX2XU947eNDTQCzSFAcq858vVnLprjUhP5ijHzncCWWr/iTSYYjffaYy8IewthjImacfxl9m0XV/IF+d5s8Q9mVy38VEKeg== 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:02:56 +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:02:55 +0000 Message-ID: <99142eb9-ad66-4201-9bcb-b7e942230fa0@virtuozzo.com> Date: Fri, 25 Sep 2026 18:02:52 +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: FR4P281CA0339.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ea::13) 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: 670542e2-64d1-4ec2-addd-08df1b1e7646 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: OLXAGeEXN8NVC4r6aMyeJc6WKafbZRUE4JlMWIdeMDRGB8X9m7mMYtBe6oi1WfndEeZjBae3GkzURK/WnG3QLwz7HcmrXU7aIpSkphvigporlf1OxE5IpFkdAhHac7LSwKuxmdTjRrWdZvTbi54YQNKJvTpzbPYCjPiTADT/xGlUUcE6TFvK8Fsc/Efo8AMQZl6v72SFnwjTRbVz7NtxA6DnqW4oLwrCVGMndG8RA1aKzuY/3/7iW2LnRZPJfERA6nDKNqpySVKLz9OWfoQVbgPqdkFnKt8sVejGgdYLcWLTQROj0N+soXp1AFkn2XIRgwww7Ms73G0SHGwaLgP7LwKKEzc1tBw+Wq/1FoCU43PUlhDhhjWjDyWiSgz3e9IcyqBKkRg0+99CMdt06nNRVcrM4SEtA4UxxORxXy7XWW8+rUQ3gYj3nt8tZiTnO7+1Ur0zgUn0sVU0gfJ36zct5Te5+PT+TXgUqW7ONE2Y3dHCrDKJoSEa9ZsLMpTsUEx54DQSVO/ZmKyx0OCOkcl89OGtkGyzLRMUBj3FxbFdUXZ/XxxziOww963psTc/uxBrvqd3HchrGKIDfnbOtbkPVrKZCSmo1r1aP1koaJrZHzNHrGWO31T0Os4MJuDf8g3smFUgYqZFIJm465QKeVrgohQdWbGTTXLua/v6yoPtmjU= 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?Zm1kN3NtUmFUbHdXcUl5YmgrZG94QlNnK1BYNWZpVVgxSDJOeTZsN28wUGZS?= =?utf-8?B?YXpBWDBwNXA3bURtdEROS3hjYys3TkU3YlFWQ1FmQksvMWRJWE1yQ3ZmMEMv?= =?utf-8?B?Y2VpamE5QVVSOVR6ZTZmSmxpdTZxUm1zTC9kQWhNOTE3RmFMTzdQbE1lcnNs?= =?utf-8?B?R0xONklhRVJ6UHZxSmdTNkhyZWFmVmFCT0p6KytTeFdZM3BlOXcyOERhTUFL?= =?utf-8?B?c0ZYTzE1M3FoZ3RVTldkWXpvc3NQelZQWHdmd3FzY0d0WFJNSXQwTlpZM3Aw?= =?utf-8?B?dkZCTnF4NjdVSFpCeStBNWVuZlZ4RjF2dk5hNWlnL2tZY0VoRXNxTWFCelNI?= =?utf-8?B?SXhVdkxkdmtnSDdwK0V1OVhPSHhrV0tOY0M3ZFBYZnM1ZGU2allDbXA2UDVa?= =?utf-8?B?U0F4bXhUdnhqdW9hNHR2NUxYTC80TWpINERiTWRQam1GOEkydVAwOStZa2VI?= =?utf-8?B?VHlLVkRLdGRQT1I3SkI2NVdVcDdZYlBYOTRnWm9YSW5ibUpEYXo4NkU1VXBT?= =?utf-8?B?K0txVmF3c2t3UHFXc2RUb2gwUU4yZkIrdW1TL2FEcHVLNWtsSThocG5tREtD?= =?utf-8?B?b0huTmlVKzUwMkJrQVJyb1h5Tmg3blpPN1pIYjJtQm9MV2ZZYTQ1V2tkalpC?= =?utf-8?B?RXluRTdSMHhFaE16YlFSanJQemFOL0xheE41emY2RDNaQ2cxUk1EdlNHTGhH?= =?utf-8?B?bDJmSjhzQUtBTFM4MHdLMmpaUWpIUlU2QUdqN3FYcUJaRm5iWHQvemFFb2NV?= =?utf-8?B?elZmSElsOWJzdlZKTHFaV1FFLzdTNnJwaW9md1EvWFRncUVPdGd5OFlzVWdM?= =?utf-8?B?UmN0WTVxZndNQm45NUlNVWhaQTVlanBrWk1DdS9zMnpnVXlucjJHeGZxS1dN?= =?utf-8?B?M1FJZDhVNWRGTmNsRjU2d1MxTlM0NHpIcmdpVlNoMWcwSFR1aEd6UnJ6c3ZJ?= =?utf-8?B?WnBuWVV5cU1ONlJhbWtHUDA1N1gwcmpzT3BUUWlkYWs5NXRxamc2MGFMRzlL?= =?utf-8?B?RXJTM1VOUTlQdXFNVzdUeVJ4d0lyVGxxQ3MybGhNR1NQMkd1MXdWZlJTRFJW?= =?utf-8?B?YjhrUk5TUWJkUHRBQ1NpOEM1WkVpRmFzb1k2anQra1lDcFpNc0N4enUzYkhv?= =?utf-8?B?dmxNd1ZwcXBvMXFORkdxWjZocEFYeWk3SU9aNnBGaGRGZnByb2tuQlc3L2hr?= =?utf-8?B?ZXFLQmVaM0xxNUU1ckd5WjVPdzBUR1ZlUUR2eTN6V0JoV2pRbDRQdzVFNWlp?= =?utf-8?B?S2dCREx5UTEyMUk1dFhIeHFDaTl0TG1zWWJiTnphVTlnRTAvUTNMSEJlVTdt?= =?utf-8?B?TnR4dC9ZSHN3WDNqQmpWTzExZVFueUNMdzRobnlIT0JYdlRMeVNhSWthUmN0?= =?utf-8?B?bnRWU0tOcHdlVTkvaDVxTHNyQ1Z6OHFEQVh3bEhVdnZlbFkxTUpwMXE3R2tK?= =?utf-8?B?ZlN0bGV3Yi9hTzdva3hMYTVoWFoyYTg1T1VFWEtKb3RwOWRrK3RGZmZsS1Iw?= =?utf-8?B?RDRIL0lIcFhMb0p2c1huM096LzFja1F5RVpxMXNZd1ZTb1BrQTFSOHg2YzU4?= =?utf-8?B?dGZSNmpBbmJTWTFCSktORGZrcy9QbFdqNFhaUDYxSGhGMmJSYVRPY29rMGQ3?= =?utf-8?B?NTMxZThValJSQ3lQYXl2OWhDTGp1eWRFNGhFNDgySWVhUGUrZzBVRnJvVlBP?= =?utf-8?B?ZnlCQTZlcXhzcU5WRGZpb0lNcklFWlV4MU5OeWpmc2N6Q1oramxXYno3Qmxl?= =?utf-8?B?bk5ORXVOajNaVmNpZS85U0FJaThKemJUdlBjTnN5RDBGMTVXNXpQVHZDTUJ0?= =?utf-8?B?SGlCckptcnhYUzMzaXRLczZoYm5kL2llL3dpV3NlQTRRbVZHWERuVzBBSjVx?= =?utf-8?B?Q2xZSVIzYldRK2p1bzI5UnNsenBYc0NCYTkzZTlFZGF3Skk2YTMxVjk3WFVC?= =?utf-8?B?V2dQdXVkVHZFNWVXOWhvL08xemhML3JTL2tDYStRN2RTTUEzK0NCM0JxeVVX?= =?utf-8?B?TjNWWFZZYnMrWkJZQTAwMVVtU3ZJVFBWdktIa0hSd1JVRjZTeXNVRGtpaU9L?= =?utf-8?B?SjIrRjEyQTdDWWNMM2hiOHRIREZjWmg1TU82eW9mZUdzbzIxMDRHYVNPYzlM?= =?utf-8?B?MzZvbWc5dUQ0SWRZdWFNL1ZDMXROVmxpSDBmVVUyUFlPRmNUT0p6MGNDUTlq?= =?utf-8?B?K0NVK2hnZFM1c3lyaks1ZnRkaVpoeU5lcytsVXNUbk8xaHVjT1hobUREYlBM?= =?utf-8?B?LzRocXNHZG9ITEUrWlhKUUNmZWtkQWc0Wm5TZzBRL2M4VDROd1BEWWovWDYr?= =?utf-8?B?bTVDelgrN0I3L1VHVWNEU3pyN0sxSjZyWWdVNDB5d21YU0FTdEFsdz09?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 670542e2-64d1-4ec2-addd-08df1b1e7646 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:02:55.8667 (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: 4Pt2Bvg7Jnarnrv36NtEf5siAYf1mpJWLcBr+/q6IZxoP7f8Ek2l4AgPIzrw0MV7cQilin9Oj3jxGMhikE3QGQ== 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 i will drop neighbor related failcounter from this patch as it increases the amount of printks inside irq -- Best regards, Konstantin Khorenko, Virtuozzo Linux Kernel Team 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; > } > > 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