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 33F83D64084 for ; Fri, 8 Nov 2024 20:18:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BA8306B00B3; Fri, 8 Nov 2024 15:18:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B57F66B00B5; Fri, 8 Nov 2024 15:18:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9F8616B00D3; Fri, 8 Nov 2024 15:18:48 -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 7B67D6B00B3 for ; Fri, 8 Nov 2024 15:18:48 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E1FEC120F53 for ; Fri, 8 Nov 2024 20:18:47 +0000 (UTC) X-FDA: 82764040044.24.9AA622A Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by imf19.hostedemail.com (Postfix) with ESMTP id 5FEBA1A0012 for ; Fri, 8 Nov 2024 20:17:59 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b="lQ/cQhhV"; dmarc=none; spf=pass (imf19.hostedemail.com: domain of axboe@kernel.dk designates 209.85.210.178 as permitted sender) smtp.mailfrom=axboe@kernel.dk ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731097065; a=rsa-sha256; cv=none; b=AYaRuOuLYBPGuh0ieh6rEiLvVVKWysV09ZfaxNHyQ0x/AP0VuzQxllf5IOn2PZOgqhKE3c +SLyp/CMZGx+E6zCKkmP7hraRRTjPiYOg5LkOvo0LhLjxaS5/6M6zJtc+91YgewjcTWoke Q3un0ogbKS7yv0IjSAUojUfpOAYT02E= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b="lQ/cQhhV"; dmarc=none; spf=pass (imf19.hostedemail.com: domain of axboe@kernel.dk designates 209.85.210.178 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=1731097065; 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=ButruIjsp+N12e25KkiSE9SJF/4i/qG/vJeDN9gjSEQ=; b=w4sf2CYdwxKQEaCDEjgLFnM+IyRUoyKvQzuCn+7c0BmkCjGcAJCIQ40PWRC00KxjznnrIF zHvzz2aAGiYWoFO5HfSwjyUwCd7mO2NpP1r6M0Had5sPZRYMtAATvMq6/74nW+UBpomF5p uz5Sy+M3GCRq+B6nn4tHFgqjbp8Z5I0= Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-720c286bcd6so2313017b3a.3 for ; Fri, 08 Nov 2024 12:18:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1731097121; x=1731701921; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ButruIjsp+N12e25KkiSE9SJF/4i/qG/vJeDN9gjSEQ=; b=lQ/cQhhVMxTlOqD5uzBALap77cF5u6MH5O+25/ayW3LC2CFfNDBq8Gqx+OpwONm/fb XgblAJgwK67VIEL83IA+rl6KmMqeWiwOQbNG8ata+GpjgUqrOGAJphF/7yJXRWQchGBz wOzzRJGw21kBg9oA3R8egOGN0TRvI5eHpn6MZTjbrLdeAdxqe/UVexT9Rr6OSDjs+fQV Krd1ctu/4IFmsOKvCAb2ZIv8bUNvBcvyq4B21ESbtCJUiOFX2pBLqTpo7CkiFRNHBPdo GGujUQwJA6hUfD9WXucKzbnkJb82NGclVoF4nuvgIdavVnVkfEHZEK2bDi9YV2art5yY 6rlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731097121; x=1731701921; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ButruIjsp+N12e25KkiSE9SJF/4i/qG/vJeDN9gjSEQ=; b=w2LJ0zhWzLVGHkxx7q8yCsvVofb67IMmMJjyTN6qWI68kitvMfhTgmasro533LkZ3O dHQjIW29VhuwODdmBunIPX1PDZnNjOLij8iFcsgEUFHRMl40y7klxJwm2Ix1WhVBcys/ 7HaVOduJiITf2XZtwGq+0PzWqU8fR7eunTWGVBAdeuw4RIgdvfl2v0JuKx3m47iTOh8j vM/flwDMYEfr2xlpvdVLUKw3chpLtV2f8XXZMe+rYfZ4IVzDeqrdjImg0Ky1vTpYEq4B Dgxhe5XHTCKCqRaPwHsIdbbIbpgTZlYlQuDYXVTuhiOl9EKyiemBHsC3+XcQ6VM5QwvZ 6yZw== X-Gm-Message-State: AOJu0YzcJmmg5iHr7Jp9ET+Nq+hOMeaM7FiW0HC6xVtGxGcVcQ5R5KX9 S+FgoEf0ORqSGPyO/66eWyMZ7t/pZV2vlTHs34V1YAWS7zmyj/ZQZ45BclGKmrM= X-Google-Smtp-Source: AGHT+IFLmWi9D/02ZHOGsiKNUZIejllZA3TE1dM/x2+sf2uL7j+2l7Scl+cOm+alMwnqVVLvVvizEQ== X-Received: by 2002:a05:6a21:32a1:b0:1db:f087:5b1d with SMTP id adf61e73a8af0-1dc22b94a7cmr5051588637.37.1731097121568; Fri, 08 Nov 2024 12:18:41 -0800 (PST) Received: from [192.168.1.150] ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e9a5f52d4csm4023444a91.7.2024.11.08.12.18.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 08 Nov 2024 12:18:41 -0800 (PST) Message-ID: <00b97317-610a-4ae3-8d97-f5871972a401@kernel.dk> Date: Fri, 8 Nov 2024 13:18:40 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 11/13] iomap: make buffered writes work with RWF_UNCACHED 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> <30f5066a-0d3a-425f-a336-16a2af330473@kernel.dk> Content-Language: en-US From: Jens Axboe In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: 5FEBA1A0012 X-Rspamd-Server: rspam11 X-Stat-Signature: 5uj19ib8ht6pqaupyjfbjcf4rhtcqpmm X-HE-Tag: 1731097079-12668 X-HE-Meta: U2FsdGVkX19z2bFcidpBy2qx7ziYJw9pXepTp1QMdP7x27gfc+Id+imiXf0TZTdNsdctu/zuWWxF6c7sPz6OT87LGcg4aA+zmcmTz7haKiJenLBrJX+HyUR4TBYrYmkmYbwYecst/x/y87HNIpGcXIVsYKkw6xrtsf6/PXLrZN0pVpM+jKK6/cKjVTka1xwCfaYIffmjAYFfx0JZiHM3xV1nOMfSiHT/YRA8bZpUzIkRBBrV0oprn+fqQ0pi6unGfPMFe3de0vHoZrBno1u7Kkc226qgCPj2LKsNf22lGpoJBNjfOuwZCyaSps5cb2GvkmbZi53PMNRwub40EgumAOMA8p4zDhRILIdUYcnAsQSfUZF/YiNB1x1P6MJcmIiDHrDJoQr9fBknaysOLoB7Qn42McICTzAFpChE1qpdqX/BhKnyR1OaeHfaYpeTUsAt8zgbYKNtKbaCCkpiy4Qmwzb4IGaZIumr1fODhntdM4Tekoy2DuOarAMBqXw4FK8dUsDC9xgMIPnjhY/WhoS5LfJG9+PBVooZhamBuDCXw25qSGDp1zdb4wX7E79sqqNqV8elocjYDfWrjRX1xAccg81fwhivU6k8ZdYJGhjs4IgU7WMZwEOXjmFxlKONHmBnxufrWAVmwY8fbxB/B14zUll0ZM+xbZFMXEwM0Ldoii/r9AIhM6lzI3p0bX0Nr4UjMeZv+ZUo3+NzVlLZbHvDu+BLtbMqFMWUbGBKdp4VfudzKyVzNe/MPLIwvA5uL4QNm7JIwLU98K1NyxyodEdIYCxRf6ApWAPrxou4RTZeQ1SDAsMfgTQHvSc7x84XhLCn+ycxg3YBefHO5Q1QnxaBgqiC1cZl49Ak35Xwgf/9iaqTqladWh8u+JkUfDuXtAf/ppJ2zynwjpc3/O74J1mILwtoVPyGkeTgPiDibqm8Oxpuq8Fl/j0pJkEZd+e3Kv8FN50xaboZ/RF7+WLch2N +D5avYFy 70lpbEJvjGFYEeN1L3n1yYEVP3zIOtPAYLFMqLF8aqm2+tBwaLIzFCWn+q9qFXNPgLLJg68ywAfC7szXp94PfT2+EwJ/VtYUfCYUPhHTiOJML4lhm3sTWLS/m2KMc0jAQ+WRdHJ5akC0AobbWBt6viTOWCbkpYAXR68izp3qfHO5Irb7EvGzlZdx6YMVwhoT2rV4fC7Wx2UcIH26KQqzeWmxzCIdTIrVJLWdq/AfNdZAsmm82TZ+UFWCmhcQmcJsaSNTn7Mf8m0LWnRQ7OUMEOgA1mxXkLW3x+Cnu9Ioc20fd+NlYs3+Ia3TXfV2wpjzWGupO9R8dbxXpT8YG9LYFvtD7dY9Eh3sKgS9F7wIEZEqdoJfhaI5KCc4hppowv+/NRui3RMv5EVsMcpUiYogmnrYo4g== 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 1:07 PM, Matthew Wilcox wrote: > On Fri, Nov 08, 2024 at 12:49:58PM -0700, Jens Axboe wrote: >> 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? > > Umm. We can solve it for iomap with a new FGP_UNCACHED flag and > checking IOMAP_UNCACHED in iomap_get_folio(). Not sure how we solve it > for other filesystems though. Any filesystem which uses FGP_NOWAIT has > _a_ solution, but eg btrfs will need to plumb through a third boolean > flag (or, more efficiently, just start passing FGP flags to > prepare_one_folio()). Yeah that's true, forgot we already have the IOMAP_UNCACHED flag there and it's available in creation. Thanks, I'll start with that. -- Jens Axboe