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 ED761C83038 for ; Thu, 29 Aug 2024 10:51:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C5A16B008A; Thu, 29 Aug 2024 06:51:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 475716B0095; Thu, 29 Aug 2024 06:51:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 315486B009A; Thu, 29 Aug 2024 06:51:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 131696B008A for ; Thu, 29 Aug 2024 06:51:33 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id A07A7C035F for ; Thu, 29 Aug 2024 10:51:32 +0000 (UTC) X-FDA: 82504966824.29.CFDB131 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf08.hostedemail.com (Postfix) with ESMTP id 65E5B160002 for ; Thu, 29 Aug 2024 10:51:30 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=2VVaeWGG; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=TtlYOp1I; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=2VVaeWGG; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=TtlYOp1I; spf=pass (imf08.hostedemail.com: domain of jack@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724928620; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dBaair/wHrQp3Y/P6HPYN/L5d+w2KmoifNX/toWOhss=; b=BgoYaM1gNAkF6nV3Ef1C4pheanuOqc5J1k2dWtbro56gLBl6Y5Wa53N6BnhxfLMBhlPY9T FyO/eTK/MFIYIx8n5+/WGFDjcjKuMsp1QajWQzHqRlLomZT/Zo2z2z/txHmt4F3bvM9KuU v1m+GPyt6hYseFCQWZWwKForI/TEask= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=2VVaeWGG; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=TtlYOp1I; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=2VVaeWGG; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=TtlYOp1I; spf=pass (imf08.hostedemail.com: domain of jack@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724928620; a=rsa-sha256; cv=none; b=mc+QncY7Z0IeFLEGHtilteKIcopsNNvwrqtJAqsded64bfOwDXQrGt444cwwT3aUz/y5aR FYE7EWYjFMk0XT5xRz7TFM1ce0iOjmJMC5pjyJsuT+/kr/hQF6zElJ94wQwtVM/1QkAjbt tzu/O9M0MS5tyU9D4OcwrT9pf5tocwU= Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id ACA3C2199E; Thu, 29 Aug 2024 10:51:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1724928688; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dBaair/wHrQp3Y/P6HPYN/L5d+w2KmoifNX/toWOhss=; b=2VVaeWGG5IEPKcNTi63cTUadBQfPsnAjfSueCdNZc9KWgwv7+yFf9z7eiPMkVq1FEPy5ia y8dGEa7Y42OXfWj0aNhVCf+hwYHZX6gSXWlZUWweAjpQR8cq09WrMIOABhqUZ2fCinK5N2 L/hP0WATN4SBuL44notwfM5fa6/Dbro= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1724928688; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dBaair/wHrQp3Y/P6HPYN/L5d+w2KmoifNX/toWOhss=; b=TtlYOp1IPjbdYKJG6suOMFuXGnHG0+rbW5n+ojie67qk7vhkMLOE4y9bYP8Hn3MPUDX92l KnmNwUGcnVepE5CQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1724928688; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dBaair/wHrQp3Y/P6HPYN/L5d+w2KmoifNX/toWOhss=; b=2VVaeWGG5IEPKcNTi63cTUadBQfPsnAjfSueCdNZc9KWgwv7+yFf9z7eiPMkVq1FEPy5ia y8dGEa7Y42OXfWj0aNhVCf+hwYHZX6gSXWlZUWweAjpQR8cq09WrMIOABhqUZ2fCinK5N2 L/hP0WATN4SBuL44notwfM5fa6/Dbro= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1724928688; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dBaair/wHrQp3Y/P6HPYN/L5d+w2KmoifNX/toWOhss=; b=TtlYOp1IPjbdYKJG6suOMFuXGnHG0+rbW5n+ojie67qk7vhkMLOE4y9bYP8Hn3MPUDX92l KnmNwUGcnVepE5CQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 9CA5F139B0; Thu, 29 Aug 2024 10:51:28 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id kpD3JbBS0GZ7DQAAD6G6ig (envelope-from ); Thu, 29 Aug 2024 10:51:28 +0000 Received: by quack3.suse.cz (Postfix, from userid 1000) id 5639FA0965; Thu, 29 Aug 2024 12:51:28 +0200 (CEST) Date: Thu, 29 Aug 2024 12:51:28 +0200 From: Jan Kara To: Josef Bacik Cc: kernel-team@fb.com, linux-fsdevel@vger.kernel.org, jack@suse.cz, amir73il@gmail.com, brauner@kernel.org, linux-xfs@vger.kernel.org, gfs2@lists.linux.dev, linux-bcachefs@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v4 12/16] mm: don't allow huge faults for files with pre content watches Message-ID: <20240829105128.zvczpadmdoaarau2@quack3> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: 5dqd1b1c6w4fti5gdntk813gt1qoftrb X-Rspam-User: X-Rspamd-Queue-Id: 65E5B160002 X-Rspamd-Server: rspam02 X-HE-Tag: 1724928690-930517 X-HE-Meta: U2FsdGVkX1/PhqurY9/J7/7PNxCehvx2DFR5R8sBfSVbErgQrElDmO/Iv3OtOLKdqmWvYnXav2oER9IwBarOjIgAz+XjGSO4Gwho3lShYZLE+l6j5vw04MQJNMGYFZ+yppN9UzA52BBYDCo0uN65AVRPIH5wIIqS5fGOiuVlwvJ6dn9XOMt+7GrBhS/Zk2GlIsXD6tTzolw3uIbiAmjmT4Joi5DyQIL4oVbduEXJ/+gavz+O2NLoQ4pWv6jlpvibFZof5DVOQ4l9dBYpoMVcOiiOJrmc88NwFzokfkCYHAFuhMbGszv/vxbpJKv4lt2Rl6DPV1dFXm7L+2Pqu5x9S/agY9Gcoh2R5tnAqI9qObDo6HRKiBbIO3yOo6u5l849b4Smp2qEImQ5iHQ9stMihanWECvKh8tPFDP/0cz0ViU/e55c2zoEhGko5fTOwVsnQgT61zRkilWrSq5odX0XK3ogw/4thVYRFxWvM+UPHBeDcB5D2Gp0W9Wnv5H5VnRsk6jHnX9xLHAWifwq+9Tfyv2cVma5+1hWrhIggLWLj+KETnH5/FF202FnkDoKKTMN1K9N5ryoiccWX31tV+y06i+UnYcgjNsHWkpVhIH47GhzV4OZKr9EzfEEuljA4iQBy2I+I7hLvsS9vfHhamzODfVZ/JFYDNQMEo2H1cQpShU5bxKcX60rLDDwO+UBi9T1OZceCmg6KSGdANupwy0xDaWnMiYuC3+0liG7FmVM3irudljW1Xm3cJWsNo/CJtjCVEBGwjsXJFvulh1Mp5Ka8PRxU7TAb00wM7tCvqp6wC3VMEcMPl9wP+SXaGVzTX1M5KX2xxTczW0sR5QhQzfMp2lnC9ax/BN4eWELZnTTjAubhXJ2u/5wAjAxZW5ymR6tA7+R6LiGFeEeXmsNkikEJKIggJ8swqJdxteHkHqtqxL7wojriESusOQLz65m5T9gk43tNnyt2gIFMcCELH7 pWB4V4/L ghtPMp9haoyaI8PTURx3cJmytK2ltmaKviVykitVR0H26p+9BnqVts+AlouaT5KtIPLHLJf2FS8d4pM1E6EFsLpU1iNqvUsjq9Zq9ONWzrwTaHCztd+q4KUcLOsrHFUPW7XoSQui/zyqEj0OsHaAR80y/5044I5++haJNXLbNTTLTqsb7pnUR5xfkHrVqhOPx5gAtZmhacwi8cfgsWSD1jpNykpe06f9G7JpScTLywTaPTeZ5tbKO68cckts83luOsSJWxdoj/lba7skGlEsa3JtiMPmflVu76mEpCHKkgHvrhRVFrMxZcX0F/gJq6uIyecd7dPuEC7Z/2HcSBfik3nrZf7JiiN4/kiUQ8FSzky2tfcNqg+t5RDBJaBzYU1FXiz6p9Ym3zhyt/kTT6dnkrj3xm6cKCvD+gfE4RiszQfs1xlH1bOhu26LrNVlW8K/GuG1tEywCsbewXxE= 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 Wed 14-08-24 17:25:30, Josef Bacik wrote: > There's nothing stopping us from supporting this, we could simply pass > the order into the helper and emit the proper length. However currently > there's no tests to validate this works properly, so disable it until > there's a desire to support this along with the appropriate tests. > > Reviewed-by: Christian Brauner > Signed-off-by: Josef Bacik Looks good to me. I don't expect this to be controversial but let's CC MM guys for awareness... Honza > --- > mm/memory.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/mm/memory.c b/mm/memory.c > index d10e616d7389..3010bcc5e4f9 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -78,6 +78,7 @@ > #include > #include > #include > +#include > > #include > > @@ -5252,8 +5253,17 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf) > static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf) > { > struct vm_area_struct *vma = vmf->vma; > + struct file *file = vma->vm_file; > if (vma_is_anonymous(vma)) > return do_huge_pmd_anonymous_page(vmf); > + /* > + * Currently we just emit PAGE_SIZE for our fault events, so don't allow > + * a huge fault if we have a pre content watch on this file. This would > + * be trivial to support, but there would need to be tests to ensure > + * this works properly and those don't exist currently. > + */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + return VM_FAULT_FALLBACK; > if (vma->vm_ops->huge_fault) > return vma->vm_ops->huge_fault(vmf, PMD_ORDER); > return VM_FAULT_FALLBACK; > @@ -5263,6 +5273,7 @@ static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf) > static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf) > { > struct vm_area_struct *vma = vmf->vma; > + struct file *file = vma->vm_file; > const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE; > vm_fault_t ret; > > @@ -5277,6 +5288,9 @@ static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf) > } > > if (vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) { > + /* See comment in create_huge_pmd. */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + goto split; > if (vma->vm_ops->huge_fault) { > ret = vma->vm_ops->huge_fault(vmf, PMD_ORDER); > if (!(ret & VM_FAULT_FALLBACK)) > @@ -5296,9 +5310,13 @@ static vm_fault_t create_huge_pud(struct vm_fault *vmf) > #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \ > defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) > struct vm_area_struct *vma = vmf->vma; > + struct file *file = vma->vm_file; > /* No support for anonymous transparent PUD pages yet */ > if (vma_is_anonymous(vma)) > return VM_FAULT_FALLBACK; > + /* See comment in create_huge_pmd. */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + return VM_FAULT_FALLBACK; > if (vma->vm_ops->huge_fault) > return vma->vm_ops->huge_fault(vmf, PUD_ORDER); > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > @@ -5310,12 +5328,16 @@ static vm_fault_t wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud) > #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \ > defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) > struct vm_area_struct *vma = vmf->vma; > + struct file *file = vma->vm_file; > vm_fault_t ret; > > /* No support for anonymous transparent PUD pages yet */ > if (vma_is_anonymous(vma)) > goto split; > if (vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) { > + /* See comment in create_huge_pmd. */ > + if (file && fsnotify_file_has_pre_content_watches(file)) > + goto split; > if (vma->vm_ops->huge_fault) { > ret = vma->vm_ops->huge_fault(vmf, PUD_ORDER); > if (!(ret & VM_FAULT_FALLBACK)) > -- > 2.43.0 > -- Jan Kara SUSE Labs, CR