From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752313AbdKTScU (ORCPT ); Mon, 20 Nov 2017 13:32:20 -0500 Received: from mail-ve1eur01on0103.outbound.protection.outlook.com ([104.47.1.103]:45028 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752067AbdKTScR (ORCPT ); Mon, 20 Nov 2017 13:32:17 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ktkhai@virtuozzo.com; Subject: [PATCH v2 00/31] Replacing net_mutex with rw_semaphore From: Kirill Tkhai To: davem@davemloft.net, vyasevic@redhat.com, kstewart@linuxfoundation.org, pombredanne@nexb.com, vyasevich@gmail.com, mark.rutland@arm.com, gregkh@linuxfoundation.org, adobriyan@gmail.com, fw@strlen.de, nicolas.dichtel@6wind.com, xiyou.wangcong@gmail.com, roman.kapl@sysgo.com, paul@paul-moore.com, dsahern@gmail.com, daniel@iogearbox.net, lucien.xin@gmail.com, mschiffer@universe-factory.net, rshearma@brocade.com, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, ktkhai@virtuozzo.com, ebiederm@xmission.com, avagin@virtuozzo.com, gorcunov@virtuozzo.com, eric.dumazet@gmail.com, stephen@networkplumber.org, ktkhai@virtuozzo.com Date: Mon, 20 Nov 2017 21:32:08 +0300 Message-ID: <151120175301.3159.9577108443167812854.stgit@localhost.localdomain> User-Agent: StGit/0.18 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0501CA0027.eurprd05.prod.outlook.com (2603:10a6:3:1a::37) To HE1PR0801MB1338.eurprd08.prod.outlook.com (2603:10a6:3:39::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fb0ba128-97ad-45ca-526c-08d530450355 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603199);SRVR:HE1PR0801MB1338; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1338;3:HTPwHcSvjt/jAnW93fs4nRjNKf2BsSAnh6IDlRbc+ggEjZirSyycrb/k/z9cbogj7FX2b02kbvClrFa18PvfzSs8wh31sUPuzLY/cca0eWpvrfLMcvos3erxvFgg5Nqo+lLdbBrIG32YnWrQPzwOgyDx5XBIsu5RKRSK6Pee2qbkiaGgVYA9v+kjKHesrjYmmlGXkW6ONkc4/DZPVku3TaRMQjDvHcSyRfjaujAzHAtFWSuMgsOVt7sKpkzePsP8;25:V5aZsB/vDdldCaisYVtur1wnrAZOTQsBbkNokrmR2Cys+YV7F+koP6JP3q5FM8SlKk0Jktexd6MDujDlQ848WYjSAickMRi2V9Dje0s2v/ulFGp6+bq5UDQXrGKvRCAtO6HInIfhlbIjNnGZ/kl0yX2FrbZavo9ROoxuIUtCB7M9PUutbOPUqxhoKGDv9U62tpMbjvAM5nKFhHoJh3X62PNSSgtQlb9zFKNeqlSqUfIyopEQzCeYePz4WD/Oy4kR2R8rlMpSzD9lwUt7k9kJzLjp0rZBZClPcEd4wS83sWZ4ga2NR+h/0PG+6kXGlURgMBDDNYCvgNcCnH30MOa5Aw==;31:8Lh0bOePKEmPzdwCbNlz/Vbw1nw0PyvxphFEDbeVzalxBhSZihZByIIvo8AU07/uGGw+ZibrNEl2HhzOlwioQ6jKF5iMKb12WEMRrjwuPpZIjFQMCqg1AUGgzvjAejiC3O/08XOHzU/Iriw77oOe2FwVLgWf5phgjnwJidwv2A9UHSgLXG4hw+3drzpA69nuLDsGEJNTfSk8NnduNZKjtbBAvOyoeb2RBZNYRr6ZXiE= X-MS-TrafficTypeDiagnostic: HE1PR0801MB1338: X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1338;20:2ehYqFDAodTRKDZePFSRPKht3ZJfARHa0tNG0drdJGw9AKop7lq0GguGP9QmUZ2kQa3jB5R1YLGoQpSUfpyLF73OJx1zqKmACxzzSGQkpwI6futybFTXdhVtDqvyhhm8bu9wE7VE8zOskLGAcxESk+x9Vp9PApP/6QTz/786XBTk6iud5qeErQhZe4t7dDnCBvhLXYnWHjMBLr8WDDuPyY0r2qYT6aLrRbKV7q8Bb3fHaVXoD29LE9RXhzIS5sa92LOqnG4IIwzLNcWN+GnXVYnW4Q5zZAiUESYAkG50dcre9lH99OnrpqxNOs0MKx9QEHRZVKq18vueE9rYlX9D32Z81qplHrmEB2rZ8VdmLu+vNQUl7qyccmpXOpO1OHzEFauDMMIeXwHlPeUbbw1qQRnFm4ooO3aWvPVC1mWIUGg=;4:kKGyon6CsKxXZOskEDg1M4LrYRULSwwdFIgDP0+xyxai85qIguSeRAxaz7QvJMZSESIgGrQzIF5HPf3S5tnscR1Ca2Le3Y9qACwKLIlXg9gCjFfGzPi8VwuNsspHdfA76te0zzz9+Z3hCfr0c+BmC9sT6ZoTkkbMHd1ohoG/z6+k2hjE0/lo9lRmJqWpyU1rVF1OllRKOmXJ+LTtcRRUy3mjjfmQ5nrn+D/hAdyHjmM3bIZcXZ2d6B/pbEa0cnq0FToVltR6Pytq+tDgThReTg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3231022)(3002001)(100000703101)(100105400095)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123558100)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR0801MB1338;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR0801MB1338; X-Forefront-PRVS: 04976078F0 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(6069001)(376002)(346002)(189002)(199003)(7736002)(83506002)(16526018)(55236003)(7416002)(23676003)(58126008)(105586002)(106356001)(305945005)(97736004)(9686003)(230700001)(33646002)(5660300001)(55016002)(478600001)(68736007)(6506006)(53936002)(25786009)(47776003)(50466002)(81156014)(86362001)(66066001)(61506002)(50986999)(6116002)(316002)(54356999)(3846002)(8676002)(2906002)(103116003)(81166006)(8936002)(101416001)(39060400002)(189998001)(921003)(1121003);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1338;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDFNQjEzMzg7MjM6VmNzblpWMlZoZzRBQWh1ang1bHBmMmxm?= =?utf-8?B?anlrUnBFOEkxakNsK0sxdzBTV3VWVkZ0OUU0MFY5NEhpbWoyVFhwaThBRVV0?= =?utf-8?B?My8xVUd6MjZjS3hvWkFxdnBNTjJUR2ZjQ3NLZ0QyWC8xdDVldzRnL3EwS2lL?= =?utf-8?B?VmtYU0trbldpcFB5dWhURnZrUmh4RDI5SHc2NVJkdkhHNTVoNldzZmI2d2F0?= =?utf-8?B?TkNqL1R3d3ptNGQ3c3FGRVJnZHphN2dMbnZrcmp2MVFqVk0wYXN4Vko2aDVI?= =?utf-8?B?anVvZlNxSGJ0REQ0SDEzVlo4K1JlNVlxVk9nck95Mnd2eGMrQlBCZWRQd1Ar?= =?utf-8?B?MWtEU2w4WUphUWRKYUl2d204dXlWRTZtVTNaeTlWUWNFTzcyTTlwWXlsOHN3?= =?utf-8?B?YTZWVUxuUjljaTR4NkNNVmxFS0pXcmZ0SCt4UTNHWmR2L2x5UHpSMzdHQTdw?= =?utf-8?B?Rlc3TnIrZDlsdHBWRDdkY09lZk5jU2tuMHhpeHR3Qk9KY08vTUhnTndsMGVj?= =?utf-8?B?NFhlYnNURjJtdHBYRFF5Q3I0WVVHODlPRWd5N1NhLzVCMlBRRzZIdHFmeUNI?= =?utf-8?B?b3hlMnlXNjl3dm9NdUdoaExmWUZnVSs4cElTMHd1M25kOCt3R2h4em0xVTla?= =?utf-8?B?UzN1OEhXRG95NkdrVGY5aDQzMWQ5RGxUWEVpYzVjaU9jVURJT2NNUGRqbzZl?= =?utf-8?B?Uk5jcUh6WTFhVWluQUExblhWN2NqQU10M3dDVUFlZ20xQVJWYXJVNzJXdWtE?= =?utf-8?B?c2xZdnlBME1kcDdOM2NhRUpqeFNuMTlPaHBzL21BNk5oTWJKNGtGZ3BYSHN5?= =?utf-8?B?VGwvQXdLTjNVQ0d3U3lLSVVpczhtcW9wek1OZFVWZEZZSlFlQ2tvamVqNTVx?= =?utf-8?B?eU5uZThLU3JTUldiK1UrVm1JbkRNQVcwWlNoWTBDOWY0bWVybEs2VWVLclpK?= =?utf-8?B?T2srY2k0eHB0ZmJCZStYRWlJWnBtdzU4ZWFTeVh0VEpUNnpkTEVTTmtvaUFp?= =?utf-8?B?WlFxM2ZqUncyTHdrcHhWOVVXdHFlYTBiL2YwKzcyYlBHVkhQRzJVdTExWXo5?= =?utf-8?B?SzlHSTVEU3hZWXpSai9zR25FRC9oN0h3NUhVbXE1QW9XeG5pbkpyTmhna2lI?= =?utf-8?B?VHQzbmJDQmY4NUV5Q2RBc1pEOFJkMUo4enQwT0RycWJwRi9oUnB4a2NnTkdI?= =?utf-8?B?OXN2bmhMdzhmeXBrcHZkZ08rbzdGdVc5aVZVb1lwY3BUbUFNUE5SS1YxUm10?= =?utf-8?B?N2VBaFZyY1h4UDk3VndTL0orSEZSMjcwalpuYmY3T2xPWVlOYlNnempNSXJk?= =?utf-8?B?T0hGUE5QWnUxQ2NKdWorQi9IZWhHeStsa0p0ZDc3MW9rMnRkQnIzdkJHNlBt?= =?utf-8?B?TDJZRWVHSHBSMUxsS0Flak1LSHFOU3BVYnozY1BKeUxPYjdWRXpxWFBkMHBL?= =?utf-8?B?eFJhSTRSeFhUcG94VjVaeHJtSzBuVHpPaDBkNXkrQXBzYlpsczBSWXlwYlZI?= =?utf-8?Q?AQ/TElG4ECDiFfkGbX05hJTzXhk=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1338;6:FLpd3WqpVy0ZkLiYASATtyYXB/tU4HHOMmUFrIHSKe+ZDBgOv99vbAXprj2EbzQBAQsMgUPhFKRlr8Asf4Ifq/fw4CirhMDlcPNiXyNt3iIp7vj76LC1p+rffdyLb14M7Mlx5GKE6qNZGI/L4Zw9ogojnJzl9r9AgUjx6WOUZnZRAgUle6gk5CsGGezH48MGJB7DzCw+mplzbFT0DzyCsltvCFs+jPQkGxMdui0QQ4qvG0P9AThY0/PgrXfUrsCZh/QEdJ4FL0jOTTXEtAkJDQPva87rtKbJrDjMVeThKYeWgU7ax9CXpQzrfkiBrlQ5IWaGljfehKywckxBhV7ceQ9JCOaXulXfmad9LAl0qH4=;5:ixi0QARUdiRBjVVsYIX0S0wCLEerywP4w98gMqHYgeDBp0Pxjikk/bUCXbPc3wP2hpCxtQWnJAveIFagkc+VIz4WZ4rV8oi0WKdl8R/O8ZwgJxn7IkNEGTReVb6IBVfELXbiXeDWzoGBUDfagg+/FKeFQV7a8+RwK/EHqCgWTR4=;24:YNOAyg3MWwMXC0BfuPIrXq5dS1nn6n8QN58uNNmK3gRdKpIU/5cCld/qpvPceRcZNrzEgyeBPDkpoYlKfGbDHjvMNbM+N3Ny6XzdcDoXL2I=;7:VwUJZ+G1UyZeOqrjhwe+eeWNzKV6WY2WQJSRNe+ohAdoSWYnHEwuFWvxW9UZ9e5texRGtVgLBDq2awAzgCFdiduZGjgw0Tq2vLjFKHPZD8XH0TbmRAjB4XpALiSsdwsz52pAJ6E2xjMenV12LldqhNZuEnStocRpp5UoO/z0uFqvXyxS4gvAWGm8znmi7J9HH6Kx0sEzb1d/jhZz+d0ASp6lUTakKpMv48gr0MaabN0/suwMPFwG8qI+lRxiWNOs SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1338;20:Dpymq6xulgCR7OBWxMqZG24hFXtJQjPceNaM4kTQOLw5GuWT8z+flUt2ELnhK7Pz2IlkC/V7/5ElhJN3h9EadMf0bkAEwQRiX5lQqBppckdfVDAxzVOUEVe/6ZG3tM3wCA4k0UK7imRLvDzkX3fvcCd7LLlN17jKAOSY159UtIo= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Nov 2017 18:32:10.1624 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fb0ba128-97ad-45ca-526c-08d530450355 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1338 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, there is the second version of patchset introducing net_sem instead of net_mutex. The patchset adds net_sem in addition to net_mutex and allows pernet_operations to be async. This flag means, the pernet_operations methods are safe to be executed with any othor pernet_operations (un)initializing another net. If there are only async pernet_operations in the system, net_mutex is not used either for setup_net() or for cleanup_net(). The flag is little easier, then (un)register_pernet_sys(), as it changes one line only. Also, it requires less changes in code. In future, when all pernet_operations are async, we'll just remove this struct field. The pernet_operations converted in this patchset allow to create minimal .config to have network working, and the changes improve the performance like you may see below: %for i in {1..10000}; do unshare -n bash -c exit; done *before* real 1m40,377s user 0m9,672s sys 0m19,928s *after* real 0m17,007s user 0m5,311s sys 0m11,779 (5.8 times faster) --- Kirill Tkhai (31): net: Assign net to net_namespace_list in setup_net() net: Cleanup copy_net_ns() net: Introduce net_sem for protection of pernet_list net: Move mutex_unlock() in cleanup_net() up net: Allow pernet_operations to be executed in parallel net: Convert proc_net_ns_ops net: Convert net_ns_ops methods net: Convert sysctl_pernet_ops net: Convert netfilter_net_ops net: Convert nf_log_net_ops net: Convert net_inuse_ops net: Convert net_defaults_ops net: Convert netlink_net_ops net: Convert rtnetlink_net_ops net: Convert audit_net_ops net: Convert uevent_net_ops net: Convert proto_net_ops net: Convert pernet_subsys ops, registered via net_dev_init() net: Convert fib_* pernet_operations, registered via subsys_initcall net: Convert subsys_initcall() registered pernet_operations from net/sched net: Convert genl_pernet_ops net: Convert wext_pernet_ops net: Convert sysctl_core_ops net: Convert pernet_subsys, registered from inet_init() net: Convert unix_net_ops net: Convert packet_net_ops net: Convert ipv4_sysctl_ops net: Convert addrconf_ops net: Convert loopback_net_ops net: Convert default_device_ops net: Convert diag_net_ops drivers/net/loopback.c | 1 fs/proc/proc_net.c | 1 include/linux/rtnetlink.h | 1 include/net/net_namespace.h | 6 +++ kernel/audit.c | 1 lib/kobject_uevent.c | 1 net/core/dev.c | 2 + net/core/fib_notifier.c | 1 net/core/fib_rules.c | 1 net/core/net-procfs.c | 2 + net/core/net_namespace.c | 94 +++++++++++++++++++++++++------------------ net/core/rtnetlink.c | 5 +- net/core/sock.c | 2 + net/core/sock_diag.c | 1 net/core/sysctl_net_core.c | 1 net/ipv4/af_inet.c | 2 + net/ipv4/arp.c | 1 net/ipv4/devinet.c | 1 net/ipv4/fib_frontend.c | 1 net/ipv4/icmp.c | 1 net/ipv4/igmp.c | 1 net/ipv4/ip_fragment.c | 1 net/ipv4/ipmr.c | 1 net/ipv4/ping.c | 1 net/ipv4/proc.c | 1 net/ipv4/raw.c | 1 net/ipv4/route.c | 4 ++ net/ipv4/sysctl_net_ipv4.c | 1 net/ipv4/tcp_ipv4.c | 2 + net/ipv4/tcp_metrics.c | 1 net/ipv4/udp.c | 1 net/ipv4/udplite.c | 1 net/ipv4/xfrm4_policy.c | 1 net/ipv6/addrconf.c | 1 net/netfilter/core.c | 1 net/netfilter/nf_log.c | 1 net/netlink/af_netlink.c | 1 net/netlink/genetlink.c | 1 net/packet/af_packet.c | 1 net/sched/act_api.c | 1 net/sched/sch_api.c | 1 net/sysctl_net.c | 1 net/unix/af_unix.c | 1 net/wireless/wext-core.c | 1 net/xfrm/xfrm_policy.c | 1 45 files changed, 114 insertions(+), 41 deletions(-) -- Signed-off-by: Kirill Tkhai