From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46885D6407B for ; Fri, 8 Nov 2024 19:50:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AC8166B00C1; Fri, 8 Nov 2024 14:50:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A77196B00D4; Fri, 8 Nov 2024 14:50:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 917376B00D5; Fri, 8 Nov 2024 14:50:06 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6EB906B00C1 for ; Fri, 8 Nov 2024 14:50:06 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 13E07120F1C for ; Fri, 8 Nov 2024 19:50:06 +0000 (UTC) X-FDA: 82763968140.11.B635914 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf20.hostedemail.com (Postfix) with ESMTP id DC47A1C000A for ; Fri, 8 Nov 2024 19:49:17 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b=yf4CUN2K; dmarc=none; spf=pass (imf20.hostedemail.com: domain of axboe@kernel.dk designates 209.85.210.172 as permitted sender) smtp.mailfrom=axboe@kernel.dk ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731095343; a=rsa-sha256; cv=none; b=0TMJ+z+TUfLQ2tPBV8/Fw/vZkHIBHk/uZJ3lYDCezNaAhsDTFWE94aO0x05PIuM8/xcgi2 BQlcLjwAnWfZMmdwQjW/YIJfSRh8yBOFfSqd112AICcKaXpaiHYSi/WrKk+EaYJ6L3Pppl L/6haFuGiMkeSS3nPtNmrap+kx4veS0= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b=yf4CUN2K; dmarc=none; spf=pass (imf20.hostedemail.com: domain of axboe@kernel.dk designates 209.85.210.172 as permitted sender) smtp.mailfrom=axboe@kernel.dk ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731095343; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=JzN6QznSC5tjEMn3nyfoxiO1pM3DGtlvzOusZhTDEN4=; b=wFcoyoUKS0s1jH2or2w+vLY7rYZR/LE2XjB6YDvyR9imGbURwJ8rjdt6tKmW9LmUhQetqJ eCfs8LpjBJisTMNzc1Xy/e8332MP8Rt/ASATv3iUztEaTAHsDiexzw3FTlnuP6Jgsbn1kR k+s501Opk5t55WESGgpbSavU1mrpf7U= Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-720e94d36c8so3320475b3a.1 for ; Fri, 08 Nov 2024 11:50:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1731095400; x=1731700200; darn=kvack.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=JzN6QznSC5tjEMn3nyfoxiO1pM3DGtlvzOusZhTDEN4=; b=yf4CUN2KD6ZM9ArXRbSGeCP+kH5Sd3B/NpnD7upA8lzuNO96jdCttxCkYIZ6iPhPoU Kt4PibqWpBquqdbuZKcgIGApkevI8CIYRWHtCqbDVcp1AdfUqG6syjbhtpouPOpOePBT m1Z4FsmpIo0RjN1DSQhyJLjpnnncyb6yxVBPsL2SSeVZwc8HZTdSyl+WY+pDizCqmZLX RLEWzGkL+X9TLkKSwxipdfkZ4X+i1ORzQn8qeLXe4d1g4y8WvsgMukVSXo4N2JRikDyA s8PqJFyFukMqk4tgztjw/yg4a7W241h+U0z1U3mtKvmmp5FrWq2XY6xq5Aq2Bvin157F D0jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731095400; x=1731700200; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JzN6QznSC5tjEMn3nyfoxiO1pM3DGtlvzOusZhTDEN4=; b=Ha7tXdl2Jbb32bXgMeWC/anMNLOZQVALdxkdV8LUQ+DTzr/momesfDnDfHfjAW3PVk zHKvkOG+Q6nbHlwB873sc17jjsN9cNkc3k1fmqaE8Alcz3IzTbP5vJIPzWB+qXwllhTJ HLukZmtZxHQgC1kDPgzbuBfgbCVSc+TVqVEchlx0KSs5j6s70OjiA2I43jj58llDzkFE 2tJxLOOwadwhy4ACAXhyPRGyHeX5WhSioqWLfojfm/5a5ghkZ9fQ/Z2WD5NuU54XXWwX 1so6yn0DPE33TQMepZiJ1CdTOMQMS9Kg50X4J5DMpEqLuecfMC2MChi/5G87EsLCa0Uf 1tqg== X-Gm-Message-State: AOJu0Yw6KAys12+p8W/vsFLGZiBGygDpAKJpGGKsCoymZoqNNmWYwViQ OnmAL5NJtJuFn6YSlWlQTTYUi6q/ucZsNO9QNDwrmAV+eofoiV6oikmEPUt8UWc= X-Google-Smtp-Source: AGHT+IFv4bj6W+XkBI824Sbw/3QyvrD3xc41IYnjTjX09nvgLIZA50qCFpVFQcp91Viwtq+ys917Sg== X-Received: by 2002:a05:6a20:3944:b0:1d9:19bc:9085 with SMTP id adf61e73a8af0-1dc234afb33mr6480715637.14.1731095399786; Fri, 08 Nov 2024 11:49:59 -0800 (PST) Received: from [192.168.1.150] ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72407a1af26sm4156958b3a.162.2024.11.08.11.49.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 08 Nov 2024 11:49:59 -0800 (PST) Message-ID: <30f5066a-0d3a-425f-a336-16a2af330473@kernel.dk> Date: Fri, 8 Nov 2024 12:49:58 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 11/13] iomap: make buffered writes work with RWF_UNCACHED From: Jens Axboe To: Matthew Wilcox Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, hannes@cmpxchg.org, clm@meta.com, linux-kernel@vger.kernel.org References: <20241108174505.1214230-1-axboe@kernel.dk> <20241108174505.1214230-12-axboe@kernel.dk> <45ac1a3c-7198-4f5b-b6e3-c980c425f944@kernel.dk> Content-Language: en-US In-Reply-To: <45ac1a3c-7198-4f5b-b6e3-c980c425f944@kernel.dk> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: DC47A1C000A X-Rspamd-Server: rspam11 X-Stat-Signature: rbnzpynhed7kq16eu45cwpo6iqk71fig X-HE-Tag: 1731095357-712706 X-HE-Meta: U2FsdGVkX1+CPtmPeXHL8ElfuUcF7oQkt6JH4bgCCNQXSJxX61nJo7GlanX0CDg1ljNbnwr+AS+2Valr1aOvyQPFiinMLNznv4SzPbzRuAgi0FzYGXsau9uY2l9hHsLWtzVYkcDr8ZpkKCNhZqRjSUcDRBjJS+jakB6CJoWkVgl2XnMONSPt9FhFGpRsqoW7/evkcaeHZdPw8DXfl5el6rpsP0N4uSJPLlHOHDSTFATS5cpVagbytIeMw4pRoUfAlCJJcoq4jaGjmZW3sl7xppWY4w2B9GUmFitjwTUjcdtyzaGS+N5PEso8tuC+qY57BJ2XUUyDXkjU6VgCNiSQIS+aRkO1rxJSamoODbODOgMfdG9fGluy+Ys1QfJ3Z4/cNnw5Hvysf0ofpP/H6tvNJxxPmgncN4/an+m9Ag1X/IHaxzHOwVu0ukcRgO1bHK3FU858LxYcHqfZdJ5/XMpbCqJzwrXGTB/a8eQhwwUOZTIkrA+CQfzfdSYNKjX22oHPohcKk6P8B5m6P8YMqKhtfjuTLDFpR4FhtvWDtNtY7+2uh8d5wxYE1PqmLvL4Pvo5DFGCDMu8L+41j9vzuL4WcSlD3n3mZiJO5IVo5datfzW9olBmwOw4ud1IDLK8dR16wRIFnJ03EOE0T568gfDRLPEgDmZt7hXcIBREuTS6EqE0PC5rutIYKZQcGvLFkYmGj0D0+/krrEquRafL4xW6e1hghcgKM/MHI0jezUhNjiDtMZsbWWwoboGZdLiXMY9QQrWWgo9hHeZQwzX3H7nUfdGx0d3VLfaMgIvsbDS43XPjZH2+XLIFO8STa4E2Z5525L7Lib7jlnNOJtvaYXb2/SnUekuYtfinfKbOrFOjrVDnrlIypYQv72KNO/NK+BR3CLiL5vfxHKs4D6jrdkX1xO0CbSMnhhIK/axloV3tWtAIFqPfqeGZZuExQTwlEmoLBxaFxFSZvyfaw1kPKGD 4cJagWd9 9Hs1wTqsfrETFQjt8G0RhMWSpWkboMIec69bGsynNBkiTI0FYGMTs+i9Vp2ut2XdZAHkwj3NLNM84eW6FEIBREdvkPCK9A9S1pWdt6NXScxhYb+iIqj23dEbfHHo8Mn/aZJhljN98QhTC2oIb6hDzAUgYh7TtDxW4rHC1CiDshhiDyQR849M3Gz1m37GB5YUlDdB/PPgxlX5PX/X2vqD0sBJmHQS/A6qUcyY4aeI7RbCSZ4OBqOn+yf/RHETfGk+zaETMVUHi9UZPGb5oRCFV5rgE+YcZVZr5tI9XI+jxUw90Py3eM3Uiwg1FJgfMkNLkYZ+86zPnCyhx9etzaRLkr2stQoGPBJRgP59MuB7OHQRHhIUelLmwbvD+yxcHZnOHOxxs/xjmv1VEPC21sIq0oGYSAw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 11/8/24 12:26 PM, Jens Axboe wrote: > On 11/8/24 11:46 AM, Matthew Wilcox wrote: >> On Fri, Nov 08, 2024 at 10:43:34AM -0700, Jens Axboe wrote: >>> +++ b/fs/iomap/buffered-io.c >>> @@ -959,6 +959,8 @@ static loff_t iomap_write_iter(struct iomap_iter *iter, struct iov_iter *i) >>> } >>> if (iter->iomap.flags & IOMAP_F_STALE) >>> break; >>> + if (iter->flags & IOMAP_UNCACHED) >>> + folio_set_uncached(folio); >> >> This seems like it'd convert an existing page cache folio into being >> uncached? Is this just leftover from a previous version or is that a >> design decision you made? > > I'll see if we can improve that. Currently both the read and write side > do drop whatever it touches. We could feasibly just have it drop > newly instantiated pages - iow, uncached just won't create new persistent > folios, but it'll happily use the ones that are there already. Well that was nonsense on the read side, it deliberately only prunes entries that has uncached set. For the write side, this is a bit trickier. We'd essentially need to know if the folio populated by write_begin was found in the page cache, or create from new. Any way we can do that? One way is to change ->write_begin() so it takes a kiocb rather than a file, but that's an amount of churn I'd rather avoid! Maybe there's a way I'm just not seeing? -- Jens Axboe