From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3E3236F421 for ; Wed, 20 May 2026 20:50:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779310240; cv=none; b=XsTu8cmBmDCzpC9nvXN2KScctYYGbz9ZKI1WVr4fIybUPJm2MOeO/K30OuyLv5V31VggzI0tqgSHHUHZuKCYSEO/EdLagywF1/IUBlhlxkJISHJlHfg0EIiWEjHPc3+JOlJ5qV8YV3l4qwoHsvso6R/0grtjMu/uhz6xrgTYkrc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779310240; c=relaxed/simple; bh=0hEAxH6OSygPLgsPWvuM0zul/qd7ww1B3y3E3CXvzOo=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=OubE6cgCc6OWSMxluVUrQZ2vAwSkdWVw+XmlVIdxz1CuZjT2KeOtbFMhv6m95k/xFfn8RPZZBLbK7xBmE1AHd6Qc9pXc003raQKfRoJKqEfiTwBbCMVsF7ixcB/8Gv1zCx7wzmEkGGeAwgPIEEn5k9Sejf3Q3q+kSlJ6JDSKHO8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=XGeFG2dq; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="XGeFG2dq" Received: from pps.filterd (m0499198.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64KKNwWx2012690 for ; Wed, 20 May 2026 16:50:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pps01; bh=vWEqqBLqiHXKQCYkt4eI7nkTUL jtzTI1duVNgJdotDw=; b=XGeFG2dqy2N3gbIr20V1uslI7BA0Xd7pIYogyLnBlz qkv1ZoJ51iFNeUnZQ28voJfms3i4J/xG9Tvp1XEbqtuozNf5FBh3YiYb6elAwEOO +hCbUDddgCRJ/VR3ZMK5N43M8+5idUDk6gx4qOh8gFKwk8POVXOLDeSdcerGQURV FE/WTX+yuXoQMuVKi6wNqn11InNK3e2fr2M5xf3AXOmFjJQlgZmue0e4cGHQ2UIU 5D2xKBrlIa6jswsRFLypsF5wkuPt20fND3ldlwfWHeQy84NvgjOjIpXsQMC9/se+ N8MYZoxnljImx5MDYxvXHPblaSdThVHR1funfYxh9DXg== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4e9fdn2mu0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 20 May 2026 16:50:31 -0400 (EDT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-90f6c6101d5so1328881585a.1 for ; Wed, 20 May 2026 13:50:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779310231; x=1779915031; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vWEqqBLqiHXKQCYkt4eI7nkTULjtzTI1duVNgJdotDw=; b=kuyFtU5JpqOMnsNoI7yGUsh/rVdHRxOpV7xLSmwKewQ+c8g9qlsetasy2yFk0yuj56 M102Y7cCGTlKt/m1g7fj+2iaw/i0fYviZEgUN67dTkBLwvk7TxoO1EZ3oJxUKaFW9wgA Nbx6JgsJNcTibClr9f6t6/gpXEGxdveCzd6eoLR32Kragw2ja0N1VFFRUeUR9zDuKzJ7 AXcILgsynGQHpfB9AuLPE4SwDHbpPebrEps64kJjjVgbufcLAV/HXdGMEFDMEerKKLMU tJTtJMIZFFKS6bLU+LZl9lSB/JKyRWZ1W3aEvBjP5FQsGcfoJ3wVZZlUVw84UNr/XFGs HKfw== X-Forwarded-Encrypted: i=1; AFNElJ9DvIDe1foJwD9A4igLcTYMZar5fyc7WRJNVdLTyNhJKGPolX3GkReQZPqoYHy4uqdsZULvbTAGJDAInwg=@vger.kernel.org X-Gm-Message-State: AOJu0YxecSc9TADEf+d32yac6RxfDkriKVbl3t9dlawytQgNyiRQpI5G i8qeSzrqkv1avRA8VnA6+n5zwiU4OnSQPMnY1/0zv+V3646aFOmqHyG1TIMuDIMnoWZPHjJmcUj BzBgYn0zBqss03punzfwAza7GQIU5F0eOpLx3syK9Gj0dGEs6sv/45GvMGaOYVw== X-Gm-Gg: Acq92OH9LjZjbDiN8IXFcQ+H5xOPnGJE6jnHLXIPlolvJ8vjJqROGKwKAl8W/N61c4R IwIY5+b/Dr4ZdDXB4KpogU/Ucbv5FZB4rIZhrbDVEPy/xdBuaigY6c/RPcsCHb6GKMi9/FyhpZd xVjjkIR0DIMgNDZjJpFPNXxQXfWUt5a0ZqYLUWu7B6lqFXN/MzJP9U4AGslCrqgVDRAjGey5lq7 IfhJ3UFTDi4CFLGMkQS1TOdvN5PgaZN/KEQ9k6dghzLFwNFxjgDAX4PGitfzf7NDPHSfQXEjgEo lIBpjiNRDn+2d3UaeLE//IsaDWQB8qdaqZR9cQpEHlHITClwx8qSp01ESSPZjj7BBnjP9jEkFNd /c9ztK+WRGytz+T2VHvZmskFRKt6tuqpdMQ68bf5A8EIbRNobXwCCwxJvWvZ1Eokbuu8= X-Received: by 2002:a05:620a:1994:b0:90f:9cde:9781 with SMTP id af79cd13be357-911cdf4e848mr3838243585a.14.1779310230860; Wed, 20 May 2026 13:50:30 -0700 (PDT) X-Received: by 2002:a05:620a:1994:b0:90f:9cde:9781 with SMTP id af79cd13be357-911cdf4e848mr3838238585a.14.1779310230349; Wed, 20 May 2026 13:50:30 -0700 (PDT) Received: from [127.0.1.1] (dyn-160-39-33-242.dyn.columbia.edu. [160.39.33.242]) by smtp.gmail.com with ESMTPSA id af79cd13be357-910bcf37274sm2232692085a.37.2026.05.20.13.50.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 13:50:29 -0700 (PDT) From: Tal Zussman Subject: [PATCH RFC 00/11] mm/filemap: split out folio wait and VFS code Date: Wed, 20 May 2026 16:48:51 -0400 Message-Id: <20260520-filemap-split-v1-0-c36ddc2b6cf2@columbia.edu> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIADMeDmoC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDU0ND3bTMnNTcxALd4oKczBJdC3PDJNNkQ4tUS4tkJaCegqLUtMwKsHn RSkFuzkqxtbUAjO/UHWQAAAA= X-Change-ID: 20260511-filemap-split-871b5c18e98c To: "Matthew Wilcox (Oracle)" , Jan Kara , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Alexander Viro , Christian Brauner , Jens Axboe Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, io-uring@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779310229; l=3123; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=0hEAxH6OSygPLgsPWvuM0zul/qd7ww1B3y3E3CXvzOo=; b=NI+xM1sj15FzhmwcsYKgafgGq17ATxKLg9pL8kkBXvje15rDxNOFgGPrNNnyq8u4PLDHh0Ztz uvcMqRkQw3SDEKwQl4Xi/ayhWnIis5Q4rM7dUmjykLQ6nMy3iE8z/p8 X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: yBacFwr8a3PBhHZtfQvIk-acnvgROLQh X-Authority-Analysis: v=2.4 cv=P/4KQCAu c=1 sm=1 tr=0 ts=6a0e1e97 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=GaPK54s0Se3oFqK5NkZy0g==:17 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=x7bEGLp0ZPQA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=BpGzv1V74M3SfeTrGa8v:22 a=5qPNtsZOevHdRsu6XPgA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-ORIG-GUID: yBacFwr8a3PBhHZtfQvIk-acnvgROLQh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTIwMDIwMyBTYWx0ZWRfXywpqdQ982ZAB i75kcPvqjAcHmsB03HKGHQxNrM1aOtaocPDPy+0qZw/SYrj0ktBXyaUhYh7oTHSrOt7IZD0HmYu Hgmk+xNsthjxwT2AIOq/UbP1pNi5Twj31cN5T7G222xAIPJzjXS2J3AgwqW0dkwcgqm2/a7OCUC CjNqbzoajJ7DgTVTM3/HE9+EjnxWg2hYFJTo5dG2wzHKaNvXnMic2NBEMu2wmt8RYU4uTMtS8u5 kb7ZBTE9Hqmnn852wmCGLkX4RooUkcLcT8qDPTJyrof3lg4mjIZ9p+U0B6Kkm/Vy/KofSLbpNTk FkchFP4yhoQkYF6Ol+lq6pzu1CEuY9jsHE74t+XZknY84Lrciav4hSvfeDQ+SlfNRDH2WgyVw9L T1MnxyUMN5xPbJsuBc7nXFCi9EyX7vu+EB1Aszays9AnljcbZ3NZo4Jh8in2qL8SRpqJ5IEkL6x 3Fkq3Urg0Oe4Qw9VeNw== X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11792 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 impostorscore=10 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=10 spamscore=0 priorityscore=1501 bulkscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605200203 mm/filemap.c has accumulated additional infrastructure over the years that is not directly related to the page cache. It is currently nearly 5000 lines long. This series splits out the folio bit-lock and wait queue code into separate files, and moves the VFS-level generic_file_{read,write}_iter() family of files to fs/read_write.c, in order to provide better separation of concerns. This also slims down mm/filemap.c by ~1000 lines. The folio wait infrastructure is centralized in mm/folio_wait.c and include/linux/folio_wait.h, with functions moved from mm/filemap.c, mm/page-writeback.c, and include/linux/pagemap.h. Afterwards, the code is cleaned up a little, with functions and data types renamed to refer to folios rather than pages. generic_file_{read,write}_iter() implement the VFS-level read/write path for filesystems, including support for direct I/O. These functions and their helpers are moved to fs/read_write.c, along with other VFS-level read/write functions. dir_pages() is also moved to include/linux/fs.h. i_blocks_per_folio() is not moved from include/linux/pagemap.h, as it requires folio_size(), which is not currently available in include/linux/fs.h. No functional change is intended. Note: I have additional cleanups to mm/filemap.c ready to go, foremost among them centralizing on the filemap_*() naming convention and making the exposed page cache API clearer and more consistent, but I've split these patches off from that in order to avoid sending these logically separate patches to ~60 maintainers. --- Tal Zussman (11): mm: add folio_wake_writeback() helper folio_wait: move folio bit-lock and wait implementation to mm/folio_wait.c folio_wait: move folio bit-lock and wait declarations to include/linux/folio_wait.h folio_wait: move folio_wait_writeback() family to mm/folio_wait.c folio_wait: reformat comments and fix alignment folio_wait: rename wait_page_* infrastructure to wait_folio_* folio_wait: convert VM_BUG_ON_FOLIO() to VM_WARN_ON_ONCE_FOLIO() MAINTAINERS: add folio_wait files to MEMORY MANAGEMENT - CORE fs: move dir_pages() from to fs: move generic_file_read_iter() to fs/read_write.c fs: move generic_file_write_iter() family to fs/read_write.c MAINTAINERS | 2 + fs/read_write.c | 358 ++++++++++++++++ include/linux/folio_wait.h | 183 +++++++++ include/linux/fs.h | 19 +- include/linux/pagemap.h | 184 +-------- io_uring/rw.c | 14 +- io_uring/rw.h | 6 +- mm/Makefile | 2 +- mm/filemap.c | 993 +-------------------------------------------- mm/folio_wait.c | 710 ++++++++++++++++++++++++++++++++ mm/internal.h | 4 + mm/page-writeback.c | 66 --- 12 files changed, 1285 insertions(+), 1256 deletions(-) --- base-commit: e9add7501ad3297dad9b90ce201266830a68ab47 change-id: 20260511-filemap-split-871b5c18e98c Best regards, -- Tal Zussman