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 391F1346E66 for ; Fri, 27 Feb 2026 16:41:27 +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=1772210489; cv=none; b=ohIoyUpzoCwVoX1H7tM0c0opz/knoy7P7u9ZOJFAdvst3K/i1CfF0GE7jFGc0AtcNAbyDoQOYjxs//XgZcxlKOOqc8+LPKZP/lWF1YMRH2nnnwdyL19QGN6CzJE7bNv3zDm05DHfT3zhDeZO5V8ws0cM8aUrubA1qVcS5TEAruU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772210489; c=relaxed/simple; bh=BEeIa88RvYQBpBW8wSWS7+9ZmJtRT8takeYNLITWrCY=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=lAXu/X9BvNLRTUTdehAEKOjquyUzz9uOjNOV0gSWCoC6Opu1MGQSwwykzo4684b/FvQbd06ue44TNaIY7w6oCut/hAFwCXKWsRg+ohfKiUsvGkGgjOY9sY0ch1DBIqtqAk+4mS+1fgbUqYmfcWFbSKPEtklV07uFqWQ+9WnXxdw= 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=WJ4WE7fY; 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="WJ4WE7fY" Received: from pps.filterd (m0167077.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61RGNDX44107810 for ; Fri, 27 Feb 2026 11:41:26 -0500 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=kIopnbRq4jN3V/2gTsORTjLWBT vRkSveHkD2aWFgnTg=; b=WJ4WE7fYoUyiLGjnYIFC46Hw/0vUjE3nebGm34U/zr VZ/f462QjOtqeQqZLHDTtDdmUbsOAHcPrqc/Lvwfx91+uB0xBk8rkq5l4I5FzvrW aRsGK8IBpv2Im9i6x0aKDjoeIfX4KrI5kRkOqkW8bYQ5cbetHnqRZ1vnjc/jjE7Q 2G5FNrqaZJh1N4OAXDAioA8u07YK/p2dQj6SVlccARRyT7vd/9vSGC0EeUPjQjhy Iay7JWvyDMuBOyZ2x5+pA6A2MPMgoo8Mj+2c13tnG7vnxK+D2zslW1qwNxiiVvEF SY+rN3sSzrh8QadkH7FOQtja5UpCp/iDBWPU4r3bYXWw== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4cjppft4bj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 11:41:26 -0500 (EST) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-899b08be91cso284804846d6.0 for ; Fri, 27 Feb 2026 08:41:26 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772210485; x=1772815285; 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=kIopnbRq4jN3V/2gTsORTjLWBTvRkSveHkD2aWFgnTg=; b=DbomiLgim/QQYDW1rsnY5V7Q4mmeQbH9NisBXxBitlelysUICeLv8EcF/SlETxgsOM zvPVfbYEp34MM4e42HUUCud5+jwijxYcqghNMYjUallSRTQFdYW+PrFPcaQEwAd5WVHl DKa8YGfOkbufNGsxOfiTi/3XyTqPrhJJadScFUXJnpS4cY/ljHwMzptqdzgg1R8ld1Mh ZC0PAOCDzRoNDH4LN/ZV1Af9X74Ygbt/gbATkVAhHgIoDPs1LQomiQ4WguxSQfGHjB1a Oa75tOV9RRr0nzxGFV7DdiviEvOJN/D+o/jEOT2Xl4E0DffdfGInAoZEBZ2WzuFaCv2V pjgA== X-Forwarded-Encrypted: i=1; AJvYcCXe5ADtwMPYmynI62DNgdx+DG7jEX7HQMY6eAQooaxZGPpx0HOADSUZXQqUK00GhToYMe+evxi52i4q/7Q=@vger.kernel.org X-Gm-Message-State: AOJu0YwktYbrTum31YPymhdHX9tVW+Wt7OCH+bSp5QYIrai1G7o7+cMb C7Rd+FMps0PrZ0CAtK2Zn8azyieQ/Tf5UnFHi6UQFQeVSrYTPx+ND9AW+jqTrqw+onf2K6wv3SZ KZqvKWDcrGDCal6OPgAXizQz2yTI5qNOce4TR0cVV5mWlag8nVvaPJ12EE6o00w== X-Gm-Gg: ATEYQzypUWqzGJdzIHVatYswCdMrLVD5ejoO3CyAOs509rFQIExjWqP8xud9A/b5xPb zbYvLE8Jp7CV902+agT2BQAUx5/cHI48ZJGaFWFqRq2DZgXEzzS+m4Vx27xpn7UDojMGBRULE3T R/AeGdCnuGb+fINmcQ4SDBzKB81HoR35R9KCDJDKBspEZElfyXJYl5T/3YlcECTmoETUKAKAgWs +TfEsIDgLdT4Vuz/ngWHThZOWO06k/3fnNlWJBRjV6Sc3vyMnnyuIdyIOYYzJU1LWTtMNhdazb4 m+IfQltAUnogMUkeqIjLwThIVX8c/IWt7i17nXrT2A43ttXx425OqmoUgZVVIsJngtg3FUGJM6w UnZgilYuZwIqAVPSCBIXK07KzWKjMgZvYFRHzAaszZzYd2NDByQM10qUCIYYpaElUh+4= X-Received: by 2002:a05:6214:4109:b0:88f:a4a0:2ddf with SMTP id 6a1803df08f44-899d1e5070dmr56245866d6.46.1772210485183; Fri, 27 Feb 2026 08:41:25 -0800 (PST) X-Received: by 2002:a05:6214:4109:b0:88f:a4a0:2ddf with SMTP id 6a1803df08f44-899d1e5070dmr56245036d6.46.1772210484479; Fri, 27 Feb 2026 08:41:24 -0800 (PST) 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 6a1803df08f44-899c716caebsm46535886d6.15.2026.02.27.08.41.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Feb 2026 08:41:23 -0800 (PST) From: Tal Zussman Subject: [PATCH RFC v3 0/2] block: enable RWF_DONTCACHE for block devices Date: Fri, 27 Feb 2026 11:41:06 -0500 Message-Id: <20260227-blk-dontcache-v3-0-cd309ccd5868@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=H4sIACLJoWkC/3XNywrCMBAF0F8pWTuSR1+4EgQ/wK24SJOJDdZGk jYopf9uyEoKLu8d7pmFBPQWAzkUC/EYbbBuTEHsCqJ6Od4RrE6ZcMprylkL3fAA7cZJSdUjCNE yIbSmZYUkbV4ejX1n70ou5xO5pbK3YXL+k39Elk9/uMiAgZG6rpsKTcPMUblhfnZW7lHPGYv8B +DVFuBAoaHYSFWmPW03wLquXysbLKrzAAAA X-Change-ID: 20260218-blk-dontcache-338133dd045e To: "Matthew Wilcox (Oracle)" , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Brendan Jackman , Johannes Weiner , Zi Yan , Jens Axboe , Alexander Viro , Christian Brauner , Jan Kara Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1772210483; l=3619; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=BEeIa88RvYQBpBW8wSWS7+9ZmJtRT8takeYNLITWrCY=; b=P2OAzuWnRvGmfMu3FKgpEoLuWT0SusPENu+T5BBqjDCAzaIIHtNgLjq1p6L6MeydJbtozid2B FzfMGcUqZEjAp//Ioln1ll+QavLMRrtpcuVgSj1+WlZ/W6AWGzIkaUw X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: E3Z_u3K6fvSEKPBFkErVzar2dDyeYM46 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDE0OCBTYWx0ZWRfX+B3r+qS7gauY NTAQmSu40xPzSKAoJmKuVdu6A+5O6z96j5LJz8hyo1DW0tqLcNUMTuLYLWlovhjSOXSFlbvMqOF MwWUBQX7UQ2M2TyhPbAoY3mxTSTonJQ3q0ww8vM1ZKQQj4xTGUk8+Qy0ZGQK9IvLZ0VV+cKdDPU N0gKXlSrobDRqyzM+vRwCXrgglQkH6J9HA/yZt0WlX46cA5CrkQ0cUBwxDkKCq9EZrUAziim8d7 9j6ji5oCGRiI+iZZheG6F2zIW7Fr5EB2LZ7iDTYZtVQmWDuUHwXkJhuMpOhwxP96kyhupKsiIGo 5kzTaouOWrehYPq9/u54FTClqSNFDhpuL5Oevi/wJ7oPSJt0zNUkBeloHzoOyIAeSktyGRx15b1 q0bfwsXBsa3f4soiNWVK7UK7wo1sW84WCSkmXRLEfErAIh5aYbvDybSiXSjWz9TtmD7WYeSfaEw gts1DUjSVUM9YLimyNw== X-Proofpoint-ORIG-GUID: E3Z_u3K6fvSEKPBFkErVzar2dDyeYM46 X-Authority-Analysis: v=2.4 cv=H6zWAuYi c=1 sm=1 tr=0 ts=69a1c936 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=GaPK54s0Se3oFqK5NkZy0g==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=x7bEGLp0ZPQA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=QOCMdifcju39GKoXhKua:22 a=VwQbUJbxAAAA:8 a=sdoS8YJ70VgF2Jk85QkA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-Virus-Version: vendor=nai engine=6800 definitions=11714 signatures=596818 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 adultscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=10 priorityscore=1501 suspectscore=0 spamscore=0 bulkscore=10 impostorscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270148 Add support for using RWF_DONTCACHE with block devices and other buffer_head-based I/O. Dropbehind pruning needs to be done in non-IRQ context, but block devices complete writeback in IRQ context. To fix this, we first defer dropbehind completion initiated from IRQ context by scheduling a work item to process a per-CPU batch of folios. Then, add a block_write_begin_iocb() variant that threads the kiocb through for RWF_DONTCACHE I/Os. This support is useful for databases that operate on raw block devices, among other userspace applications. I tested this (with CONFIG_BUFFER_HEAD=y) for reads and writes on a single block device on a VM, so results may be noisy. Reads were tested on the root partition with a 45GB range (~2x RAM). Writes were tested on a disabled swap parition (~1GB) in a memcg of size 244MB to force reclaim pressure. Results: ===== READS (/dev/nvme0n1p2) ===== sec normal MB/s dontcache MB/s ---- ------------ -------------- 1 993.9 1799.6 2 992.8 1693.8 3 923.4 2565.9 4 1013.5 3917.3 5 1557.9 2438.2 6 2363.4 1844.3 7 1447.9 2048.6 8 899.4 1951.7 9 1246.8 1756.1 10 1139.0 1665.6 11 1089.7 1707.7 12 1270.4 1736.5 13 1244.0 1756.3 14 1389.7 1566.2 ---- ------------ -------------- avg 1258.0 2005.4 (+59%) ==== WRITES (/dev/nvme0n1p3) ===== sec normal MB/s dontcache MB/s ---- ------------ -------------- 1 2396.1 9670.6 2 8444.8 9391.5 3 770.8 9400.8 4 61.5 9565.9 5 7701.0 8832.6 6 8634.3 9912.9 7 469.2 9835.4 8 8588.5 9587.2 9 8602.2 9334.8 10 591.1 8678.8 11 8528.7 3847.0 ---- ------------ -------------- avg 4981.7 8914.3 (+79%) --- Changes in v3: - 1/2: Convert dropbehind deferral to per-CPU folio_batches protected by local_lock using per-CPU work items, to reduce contention, per Jens. - 1/2: Call folio_end_dropbehind_irq() directly from folio_end_writeback(), per Jens. - 1/2: Add CPU hotplug dead callback to drain the departing CPU's folio batch. - 2/2: Introduce block_write_begin_iocb(), per Christoph. - 2/2: Dropped R-b due to changes. - Link to v2: https://lore.kernel.org/r/20260225-blk-dontcache-v2-0-70e7ac4f7108@columbia.edu Changes in v2: - Add R-b from Jan Kara for 2/2. - Add patch to defer dropbehind completion from IRQ context via a work item (1/2). - Add initial performance numbers to cover letter. - Link to v1: https://lore.kernel.org/r/20260218-blk-dontcache-v1-1-fad6675ef71f@columbia.edu --- Tal Zussman (2): filemap: defer dropbehind invalidation from IRQ context block: enable RWF_DONTCACHE for block devices block/fops.c | 5 +- fs/buffer.c | 19 ++++++- include/linux/buffer_head.h | 3 + include/linux/pagemap.h | 1 + mm/filemap.c | 130 +++++++++++++++++++++++++++++++++++++++++--- mm/page_alloc.c | 1 + 6 files changed, 145 insertions(+), 14 deletions(-) --- base-commit: 05f7e89ab9731565d8a62e3b5d1ec206485eeb0b change-id: 20260218-blk-dontcache-338133dd045e Best regards, -- Tal Zussman