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 87A1DCD4F5B for ; Thu, 5 Sep 2024 08:12:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 17BD46B0347; Thu, 5 Sep 2024 04:12:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 11AD96B0349; Thu, 5 Sep 2024 04:12:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EEFE76B0348; Thu, 5 Sep 2024 04:12:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id BEE676B012F for ; Thu, 5 Sep 2024 04:12:46 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6F919121A0F for ; Thu, 5 Sep 2024 08:12:46 +0000 (UTC) X-FDA: 82529968332.11.7197D82 Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by imf16.hostedemail.com (Postfix) with ESMTP id A64D2180016 for ; Thu, 5 Sep 2024 08:12:44 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Gk4L8/3E"; spf=pass (imf16.hostedemail.com: domain of amir73il@gmail.com designates 209.85.219.44 as permitted sender) smtp.mailfrom=amir73il@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725523867; 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=m3SsnMubAx7ks+m7hwax9bgPg/0iqPmvzx2xQPBauzc=; b=sLGXrVQqnlt3OgnAtUh9Lw3KDgbHvdGnMxgWApPWR7jmRiMfANDkw/f/hDdPoWnRVe4/fp U+7nM9zFfIOdhSOtp5l1p9GUM4PwmAJnjhhHn8LChPkdnQA5IM0rBTXd7++ZWNOnMZN6/5 k7UXf4DoNYj0/IwxHA3oBqQdCfI25EA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725523867; a=rsa-sha256; cv=none; b=EZTDfpnHq3Sjgwb7VXaKkFcUTQc0E2Y6+s/eeUUKJjK6Z77j7QMJ1N69ePD+h3jh4llIsA DfCvzlVvNO5PMeCnSTs41IJTIcu16MFeV2Wt2uBIa5nCp9VZyfBw8boLvjqtwSSF08FgN/ x5+3fzm6mXH3iXL9iYzrknV5P3yNU6U= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Gk4L8/3E"; spf=pass (imf16.hostedemail.com: domain of amir73il@gmail.com designates 209.85.219.44 as permitted sender) smtp.mailfrom=amir73il@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-6c524b4f8b9so403576d6.3 for ; Thu, 05 Sep 2024 01:12:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725523964; x=1726128764; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=m3SsnMubAx7ks+m7hwax9bgPg/0iqPmvzx2xQPBauzc=; b=Gk4L8/3EgLNsI9iiTqpel7TNHg4uTwudPPQNno5vqQdGIYDtfHW6YwDoozJtd1LeJh TKa9X3+6KrfeDy5tM6H4O2oz1bmA2WZIXzZXYirrBSw+hfEeeqcesNFlBWhb6tnSGqe5 3vWx2kjRpiI5Y4M8P18vMlOdGp4ASBiWg+PJegN0c3iGzlj1IBU5oJ8L/mujpltIR3VD ZGJC6RVvsaPwLDhBJJ5X232xBFglefWzOhINXs/EC2ddEiQ9wpQFLeNUMqxhTaRuOwbC Gx9yqAVm0L2Vh648bKm2JDLA4L1Ne+mrIyR0eVFrdGxbbVdrpLIGnvgopFft2Z6P/rva JBfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725523964; x=1726128764; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m3SsnMubAx7ks+m7hwax9bgPg/0iqPmvzx2xQPBauzc=; b=wN+bcTR64G1zSrT4I+9OGJvAjTT/fnmw2sFCQKJsEUrPuNHj4tu2x+Jo1LwIUyf2Qk HnbJUx3tR9skszqKh8EHnMwhn69sFTqtTvi3p2Yrf/LibEiW2Cl3AQ5i6EcMCS1jjUls DhDpqn5wy/jtgeKGQjq7bfnGMjXuzTWJimjaMnd71TL02CmQAUt9g5ODXN5+DKnvnP7z 3xJTEAuy3D1upK5qZ8coMyv58c43dBFvXFzWjQAYC0zsP46lju6Z1B/YnHxNsQjZ8iHs BBPBQI4EJjjwxZ4eL1Ncam2Ug0YZAqUNaG7Wty4Bp3s8xjoJaIHD4RJztH5CnwN3O55I M19Q== X-Forwarded-Encrypted: i=1; AJvYcCWtnGrHjg8lMKYX0amdNVvC1n7HGMUcxQjP87+fshqvlTGt/P5fBeQEsRkNA0pg3Bo/C5XJafmN6A==@kvack.org X-Gm-Message-State: AOJu0YxdDKnj1qGh+g0wUAP5wfHq/PFFvWXxTY51amIUKCxA1NPIIuE8 bp3Oggxb2EESy1r9Hs+/jDOWC6qAuv6/xRKAHtcmRAHcHOOV76xigbMR+WSLg3xh2nZ4EWVa+UG lXAnFq7TxyqCUgWA/Qtw5TVUq6PY= X-Google-Smtp-Source: AGHT+IGpsh3hRiHMo/jg+9RwgJObWYVo9AdnDu3osuPLsfVQq777uJY75mzVjOr5HllSJP/la4CHxUAkjHezWUa9CIc= X-Received: by 2002:a05:6214:5f0f:b0:6c3:6a89:37e7 with SMTP id 6a1803df08f44-6c3c629bfa5mr109908126d6.22.1725523963630; Thu, 05 Sep 2024 01:12:43 -0700 (PDT) MIME-Version: 1.0 References: <5ce248ad6e7b551c6d566fd4580795f7a3495352.1725481503.git.josef@toxicpanda.com> In-Reply-To: <5ce248ad6e7b551c6d566fd4580795f7a3495352.1725481503.git.josef@toxicpanda.com> From: Amir Goldstein Date: Thu, 5 Sep 2024 10:12:32 +0200 Message-ID: Subject: Re: [PATCH v5 12/18] fanotify: disable readahead if we have pre-content watches To: Josef Bacik Cc: kernel-team@fb.com, linux-fsdevel@vger.kernel.org, jack@suse.cz, brauner@kernel.org, linux-xfs@vger.kernel.org, linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: kunhw8hjcsumw54ihpsuq36ufonx86ee X-Rspamd-Queue-Id: A64D2180016 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1725523964-415016 X-HE-Meta: U2FsdGVkX18KoIzsJCK1iAe3Bjj4T2pBmW18/YtiXq9MMK50tJMxvitzXMbZOiUaeSghFvrO4UGdbNwi2IJiZIYeDZBV6zY0jC6PGxNr+GNvFTxEfL/cryJiXsFGR1ye82op3HN/kXo9vgQNQ17Bxj+/odUOafCRvdWjK3crxdzA5SDj55XarapdEfcy/xgwPlPTouFBirtdbdbemsbyJ3sqV5xE/jgoF1I0znAs014gOpSuWdUi5KQml1G/dlIlX/J/X/UWgYAdbA8RwtCvDGDg2tLFaYko/Gqt0IkfHOLDfZiCrNKcaIgMHqjmSKvajAvGybnRnR8ckC/Z5DYPtRLutMISTdCYpD/eD424l6/UL856GokMDKA6BQJFXSYq8f6/GeBE8StRLqib1pdOAGDqB/lEzf6z1X6AOOx2NFSg55x9aHNETZc4ekbvElYkrYR4JktMo9byo4Nj5LpjH41+6WRzBW3z/iyZgTZBseybSutMexwLEM8F4QfNuD1zcZ3Bk24Q9jKqWOYBi1+uScC/GdnJgmNwjYhu+7glRESdXQ/u7YkRIVKjf4R7REC9YejdYKJ4atbb6Eff7oR5q4rfrFbUsNrNt4GKDGwv+uKqIH8hThA1szZ+IHvjb6gvyAJC+M2TW3Va2GZu5k4HIcvY3W+nZeLvbz4NUGlOvW8bRMS+e0vgMRK8z3xS5pf1Fhm7QPxqRQh+j8Z5OEhR8+uhmcKxG+toVhzlubw5kZkbgMAsAWaU92uivaCbO5JAFOT40eeGU6Y9CXk8MGdrrUxqJpJG0ZdtHN8T6eK8ktO0/fhO61vcR538lRCeZ/27EGX/9kqBLpwrZetw/dNfQHAnkwr206HKLL7mCFF2Bbm947Aeml7BKUaeIG7ir+uzbPMTwtemW2Y0qdyz7RQsDlqyS36Tgaa313+Hsoy373zUKPFZD7m6BtvXzkoTbKnfkEjqiyXA286ynqlOMXe 7+ARa5ja Rz6kOh+BV7pUVeh3u/DhLUMpIuGZ0FZbHXZUsjtMPcfE3mTaagtjN8sYjNfeChpHaBlaWeH5tcFsHPVPfSfD1R2ZE/wurOsutd0Eo8ri0O6ccFOViyjnLKODmwN8wHv6RwDfU+XYhHOxGxspu3q3c65neYAYzZdrO2mT8F+mUMeB9+d4WGeNBEdUKE1m53inmPYFp55PdfSqDj84lDB1C6jiB5RJlNAMom0QgUWtFhWHSLSricDAMkOJq4y+iIOh9jEpMtQ5bE7YvY+68LQRtdJlSUwt3Ksv3GXpBSyLKZ54OBSKQ9NVD6CQXD0OdktOjggCV/jd7Qloj/fvAxj2UM3LDgvgs4tRi8S2ZhJxNDruh4uPcH9t5wwzt2LRDivnAqsCjmbIcvTFIfvXvYe7wy4CraWb0+LtQU+duJTJjnVp7XR0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.002373, 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 Wed, Sep 4, 2024 at 10:29=E2=80=AFPM Josef Bacik = wrote: > > With page faults we can trigger readahead on the file, and then > subsequent faults can find these pages and insert them into the file > without emitting an fanotify event. To avoid this case, disable > readahead if we have pre-content watches on the file. This way we are > guaranteed to get an event for every range we attempt to access on a > pre-content watched file. > > Reviewed-by: Christian Brauner > Signed-off-by: Josef Bacik Reviewed-by: Amir Goldstein Thanks, Amir. > --- > mm/filemap.c | 12 ++++++++++++ > mm/readahead.c | 13 +++++++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/mm/filemap.c b/mm/filemap.c > index ca8c8d889eef..8b1684b62177 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -3122,6 +3122,14 @@ static struct file *do_sync_mmap_readahead(struct = vm_fault *vmf) > unsigned long vm_flags =3D vmf->vma->vm_flags; > unsigned int mmap_miss; > > + /* > + * If we have pre-content watches we need to disable readahead to= make > + * sure that we don't populate our mapping with 0 filled pages th= at we > + * never emitted an event for. > + */ > + if (fsnotify_file_has_pre_content_watches(file)) > + return fpin; > + > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > /* Use the readahead code, even if readahead is disabled */ > if ((vm_flags & VM_HUGEPAGE) && HPAGE_PMD_ORDER <=3D MAX_PAGECACH= E_ORDER) { > @@ -3190,6 +3198,10 @@ static struct file *do_async_mmap_readahead(struct= vm_fault *vmf, > struct file *fpin =3D NULL; > unsigned int mmap_miss; > > + /* See comment in do_sync_mmap_readahead. */ > + if (fsnotify_file_has_pre_content_watches(file)) > + return fpin; > + > /* If we don't want any read-ahead, don't bother */ > if (vmf->vma->vm_flags & VM_RAND_READ || !ra->ra_pages) > return fpin; > diff --git a/mm/readahead.c b/mm/readahead.c > index 817b2a352d78..bc068d9218e3 100644 > --- a/mm/readahead.c > +++ b/mm/readahead.c > @@ -128,6 +128,7 @@ > #include > #include > #include > +#include > > #include "internal.h" > > @@ -674,6 +675,14 @@ void page_cache_sync_ra(struct readahead_control *ra= ctl, > { > bool do_forced_ra =3D ractl->file && (ractl->file->f_mode & FMODE= _RANDOM); > > + /* > + * If we have pre-content watches we need to disable readahead to= make > + * sure that we don't find 0 filled pages in cache that we never = emitted > + * events for. > + */ > + if (ractl->file && fsnotify_file_has_pre_content_watches(ractl->f= ile)) > + return; > + > /* > * Even if readahead is disabled, issue this request as readahead > * as we'll need it to satisfy the requested range. The forced > @@ -704,6 +713,10 @@ void page_cache_async_ra(struct readahead_control *r= actl, > if (!ractl->ra->ra_pages) > return; > > + /* See the comment in page_cache_sync_ra. */ > + if (ractl->file && fsnotify_file_has_pre_content_watches(ractl->f= ile)) > + return; > + > /* > * Same bit is used for PG_readahead and PG_reclaim. > */ > -- > 2.43.0 >