From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC59E37F8C3 for ; Fri, 29 May 2026 17:18:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780075136; cv=none; b=q6WifYBmrU8daPuJlfcIZ0NXDy2dkpsPhKHQ3xxDQZj/fwzUlDxqsXiEBkrFF8dwAl3ZBI0vWt3bybY4+K6Uo1DmQdHxJnULdtmFkPD+1wblftuSU4akbHIF5v3ZiKinii4wMPBRxIIS81rSIsr560OWhvOM8T7qVHA16RC0iq0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780075136; c=relaxed/simple; bh=TRlCvqxLO7Icqzc+zPIRr0BKl6SwlvU17ERW9PLkylo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=nMkLdOByd8YqE3AIRdzUzzv1lfM2VZydeBwr6u3QyfWdcnOLorRFofHtFrLnWUHhxV3E3zuyIC5g0eXcLLOvOm0I9BnuGHF727jxvtCJIktqud20iKuUvONktM16WXmV9YKpYw420SsedU9GHuaYMPHX+84gCrpbcqLT+y1qINE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QIr0h2NJ; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QIr0h2NJ" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4903997fcb5so84258165e9.2 for ; Fri, 29 May 2026 10:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780075133; x=1780679933; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=3K1/NYF43STErmnAfgG58SuvnOt3ltd46qczkd3B6YI=; b=QIr0h2NJj3kx2DaPpIerm57+rkpMl5xwabEhQzggRDoduHO6N1/J55Zy1+RAXqip1d pg4iEHcZl0E4kaHeIZx77YxeyPViHV47sc9mpY7ccn9jVvKSFhqlNbdQy4F4+9s4uL49 wLFaHBCZPZssYK8NIt9XcPp6uOOMa5g6WrrGL73ZPSC54UveLvxckE25OloUE5Vl5rCm odDvjIqybE5f4bvCPfYtsVzyo7luLF52dWG8xn9l7MAaUc9BwAGOKo2dhyjIpP6PP9zs T6OD/LMR8Y3y5cOhNOSe/zoUwJ4BApAyZCboCRvNLfWFYCTo/VVOtROqkOU9AX5rcjXk r/HQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780075133; x=1780679933; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3K1/NYF43STErmnAfgG58SuvnOt3ltd46qczkd3B6YI=; b=GN87P8rMR4SXoY4h89Be+UkVOJhmLwnWDVOd252/FhL7LN1SoF/VdG60DERxXQB3Db T2U5J9u4QfCSTfXH1MAOU0oVyerxvEV5o6s/d8T+ZdgGYT0p9rLzAgCiH/fgOuw2Aggm aNjSW29ZzjW14/14ECOfGgfi2pJ7UJ669XHF7ttXRnAmMffBc1INU9ecu3S1ELDMfE06 kRRW0wqwl841HdDjy3EdveGbnpbDbJG+4sillWS0+6edAQKxAZMwDFfYQQusY+kUjwdj td2paiYV6KujFQ+BQ0BeiHknXIm2nt686QXHCFgbbcIP8FD1I9xXSS987ot9FuRpKpZS kdqg== X-Forwarded-Encrypted: i=1; AFNElJ9XjxdKE0UYDLYbvbDcF0VpVFmHwFPnoui7D8q8niq1Hm3tinzRspCEzzE/GlBh+ZhqQjll45JDMc7M8ls=@vger.kernel.org X-Gm-Message-State: AOJu0YwR1828Q0GwC3FXJdwHjCf6I9AEwjW7OkC1JlsWd2n8FuVSuCzV TdE79ylN0mBLe9IIhDMPLl8AZN3qV/UDH8Fi90fzYwB0dvONSXFBuZw3 X-Gm-Gg: Acq92OEDkBDnYjKg8jZINt1OYBJYJfv2mTpOIoyd/0wY3Ssm4+yOv7MsYZCyrSIMrdD ZKVmiKp6e6J0C+w3zriiY/aGxwdxPX6+e9Nufui/HzM3qagnJya2GY/KkJEjW635fNPfnO1h81Q fuohQGdrG1KT/2t9uooC8RCTChUi8/6ZHa2e/vYxcYgpc28MGCIJYPsESRGbp0WBNTJ62BChduu Gple8EmTtT7VEOMkuxOWayrTK7PdJtY4wK6YN1BSwVVd8lPK13g5Ay9MQ4zdRsZ9UdYXp3OdUF6 DOe1s50rX9HPYli8hoNwOzPKHbMQU5teSkNhiInGH93RLFGsI7ImhzNkTbAGPODbrjmsdJ8APyI KHXRZsOdWK9bOWrLLrbOSVrU/bxxqNIp9RRNd8c2gCff4c5WszM+uAMZO5Era9km/OT4bcC0qLc LQNaLf44eGOEhBqsLrB4F2h7UoaOF/BbnA/JN5WSIp81HtswvEBgOVWoopCvUmaTIKTQ0hq5nU9 MZvwqo6mthOcacMwxZv/Ao= X-Received: by 2002:a05:600c:34c8:b0:488:ac01:72de with SMTP id 5b1f17b1804b1-490a2b6e3d2mr2625655e9.5.1780075132993; Fri, 29 May 2026 10:18:52 -0700 (PDT) Received: from f.. (cst-prg-92-135.cust.vodafone.cz. [46.135.92.135]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4909caa7faasm56255375e9.11.2026.05.29.10.18.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 May 2026 10:18:52 -0700 (PDT) From: Mateusz Guzik To: brauner@kernel.org Cc: viro@zeniv.linux.org.uk, jack@suse.cz, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, adobriyan@gmail.com, Mateusz Guzik Subject: [PATCH v4 0/3] revamp fs/filesystems.c Date: Fri, 29 May 2026 19:18:37 +0200 Message-ID: <20260529171840.2576445-1-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The file is a mess with a hand-rolled linked list in a desperate need of a clean up. The code to emit /proc/filesystems is used frequently because libselinux reads the file, which in turn is linked into numerous frequently used programs (even ones you would not suspect, like sed!). In order to combat that pre-gen the string instead of pointer-chasing and printfing one by-one. open+read+close cycle single-threaded (ops/s): before: 442732 after: 1063462 (+140%) Additionally scalability is also improved thanks to bypassing ref maintenance on open/close. open+read+close cycle with 20 processes (ops/s): before: 606177 after: 3300576 (+444%) The main bottleneck afterwards is the spurious lockref trip on open. v4: - add missing unlocks in some corner cases - whitespace touch ups - s/smp_store_release/rcu_assign_pointer/ [nop, the macro expands to the same thing] - mark file_systems_string as __read_mostly Alexey Dobriyan (1): proc: allow to mark /proc files permanent outside of fs/proc/ Christian Brauner (1): fs: RCU-ify filesystems list Mateusz Guzik (1): fs: cache the string generated by reading /proc/filesystems fs/filesystems.c | 330 +++++++++++++++++++++++++++------------- fs/ocfs2/super.c | 1 - fs/proc/generic.c | 12 ++ fs/proc/internal.h | 3 + include/linux/fs.h | 2 +- include/linux/proc_fs.h | 10 ++ 6 files changed, 250 insertions(+), 108 deletions(-) -- 2.48.1