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 1368BC71136 for ; Tue, 17 Jun 2025 15:44:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D39746B00A6; Tue, 17 Jun 2025 11:44:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C9B836B00A5; Tue, 17 Jun 2025 11:44:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A05966B00A8; Tue, 17 Jun 2025 11:44:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 838F86B00A5 for ; Tue, 17 Jun 2025 11:44:12 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 2FD9A1D3DF8 for ; Tue, 17 Jun 2025 15:44:12 +0000 (UTC) X-FDA: 83565313944.17.68B0D62 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf07.hostedemail.com (Postfix) with ESMTP id AB3B040013 for ; Tue, 17 Jun 2025 15:44:09 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=KjpcTBeQ; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf07.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750175050; a=rsa-sha256; cv=none; b=QeD+yc+AhtgdfdnG49Ig5CabBpss05yvOwTYVPifvZLfc0Xarrytf5RV74BVZul6NpEa0R PEvuijR2wFH0bW6Ujb1sn1GWJqvh3uEPz2BEg1OPQiZc9D942qoaZ/23PjKew6+THWJn8T lZcmFiMkseYihtTxrSvBZvwc7CXw4Pg= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=KjpcTBeQ; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf07.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750175049; 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=gs4285BVc9AdSpQGnU9ous2Jq7UzfwNWKMh/gkXW9pc=; b=j0y4oaz1Z55mn0IAM3/2jRUVh1t1BUSA12mfv1Rmib+HHmjz3zseaZjoPmOUKD/2eufmsa viWjH8rlDklwjpOXQ6k39CwZFmx7iER7Yl87mdt8J9sEQb7kpuhPkpa/KsJExAVxQk86uj 7nie6JLslHZYvUdyaP6sGZ9qrILFvG8= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1750175049; h=from:from: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; bh=gs4285BVc9AdSpQGnU9ous2Jq7UzfwNWKMh/gkXW9pc=; b=KjpcTBeQsx29XHSwKn2/HTzAIiqXmHNm94wNU/cdsJa6qVvu9w3q0dOQHJmz14wrLc4Vi0 2qNocN/Rpj6JDEC2HUr3bo3JQ9UYwT3WJGb3M4f9vdfDXPzvbtDaepolTNSHdNJm2GKJ7I kk12v5UDbY6NtylldcDF7NTbG4UVe68= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-518-snn5Gfy8P-2FTkNiPibV5Q-1; Tue, 17 Jun 2025 11:44:05 -0400 X-MC-Unique: snn5Gfy8P-2FTkNiPibV5Q-1 X-Mimecast-MFC-AGG-ID: snn5Gfy8P-2FTkNiPibV5Q_1750175045 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3a50816ccc6so3278105f8f.1 for ; Tue, 17 Jun 2025 08:44:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750175044; x=1750779844; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gs4285BVc9AdSpQGnU9ous2Jq7UzfwNWKMh/gkXW9pc=; b=LyTT8LnGbN2fwdBlWFjA3twcJQ8I59aVk+llyXiZYesVDwMmOafzH2kaPE9zWbjwen c70yek3SNhOb0ZgXrdPaooUpusTLA2QHmjaw17gcnlryc5ZBHCgglFBIuDQrv6QVgYOw DUJfc9gyv0OMr0FT8R4f/7F4l5baSYjr2NpKvAuyoZHcyniyKdxo6tARWmANaRsC2oj9 H5gDQdqOebQCGgFD0pYcwEU1frsvz3whZk6Qle36rQjUmTISPQq4iDi4ZFuCHzeNp090 5QpKdjHfoc4QbZlIw0mpGgzTCwWXTT5SgMVU6xZWkFcWGmwtSeE/b5XQ1ZcFxnu7LZxz GZYw== X-Forwarded-Encrypted: i=1; AJvYcCVHO/nyu6dueeAo2moIsJv2R5qybAtsuxU//Dzova7MqLO5zB7jNbaNhjmavsd+8F61xK64JDxxow==@kvack.org X-Gm-Message-State: AOJu0YxfuGJ/VsO2f/gWrNNoZ5GL+wg/6NH/FBaVbJJJyftsC948NOpj R80O1COCUsDs1LyXvdGkgtxYhXi4VtoPUeZxWTHmq1fmg247OGdWmDGIW5H8Yslnz6rtmINiMCc f7m2X68gbUE38O064Ny2siotSALCR+u5gWQbjc9kmeEp4hLtBp0px X-Gm-Gg: ASbGncv0tFrcJxI4FDtCMPaeLkcdbsyuwjs+SsBQyk2jhdCloQDyO3Qh6fJiCgaxx7V K9ih1T83HJWNcQwjgWeVPVwnsUg0b7lEMu3KUOOzIpVVbMG2Vd4Cf288EFcxuDYMVYmPyiv1eP5 d2MoOZXJ61IIoFXz3l03QAVYouPlvGI26u+mP9QC6SUfhL2Cr1gonQvpDgpOSw+ctymvYcZ03nK bDWXH5MUzWvH5LnWPmOi+hzoDg4GWJT9maPyTm8oQsu9Oaq3Hp01ALz58vIJ5/YeNEV00fQ9Ufy VFIYPcUrovksjnUzAB4C48SE7KkRjie/M0lI7s5OSvanl4i7/t09vQ7IR8e1L8GZDPKaCc8TYnG dAOFu7Q== X-Received: by 2002:a05:6000:1acb:b0:3a4:f038:af76 with SMTP id ffacd0b85a97d-3a572e886ddmr11868368f8f.53.1750175044559; Tue, 17 Jun 2025 08:44:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFo66SwAdCOqzoQeskB1+JNa+FajMdh1o2TiDbiY6YeDDtEJko8k8Xcyqba8MVeHhWH2HTahA== X-Received: by 2002:a05:6000:1acb:b0:3a4:f038:af76 with SMTP id ffacd0b85a97d-3a572e886ddmr11868335f8f.53.1750175044129; Tue, 17 Jun 2025 08:44:04 -0700 (PDT) Received: from localhost (p200300d82f3107003851c66ab6b93490.dip0.t-ipconnect.de. [2003:d8:2f31:700:3851:c66a:b6b9:3490]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3a568b28240sm14420724f8f.72.2025.06.17.08.44.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 17 Jun 2025 08:44:03 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, nvdimm@lists.linux.dev, David Hildenbrand , Andrew Morton , Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , Dan Williams , Alistair Popple , Matthew Wilcox , Jan Kara , Alexander Viro , Christian Brauner , Zi Yan , Baolin Wang , Lorenzo Stoakes , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Pedro Falcato Subject: [PATCH RFC 07/14] fs/dax: use vmf_insert_folio_pmd() to insert the huge zero folio Date: Tue, 17 Jun 2025 17:43:38 +0200 Message-ID: <20250617154345.2494405-8-david@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250617154345.2494405-1-david@redhat.com> References: <20250617154345.2494405-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 2SGJSC2gQYIhoURFMB9dEiFZYIbYq0ezPaH9-8boT7A_1750175045 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: AB3B040013 X-Stat-Signature: 1rsqy47hkuhmbgcipgmka7sbmptusfq1 X-Rspam-User: X-HE-Tag: 1750175049-637702 X-HE-Meta: U2FsdGVkX1/sHY0VCtEYdZK2oHDq5gv92CuFkoB6KerX2LuINOAyEedyYBW3LKmhjC4vRpfW10ePSm/SPvLT8JgKRJEYIdm8k4n1eWdbI6la7ZqqrhOYdpPwzDzOjbc1r8nKI/sQlY9/LNczS1KvixdqRv9nzeWV28xiKcmtayMXNzW2P01c0MVO0Tx6JJAJy3cKwTHOzwHumKBpBO2A17H6ms7C8DJGJY1pBQzTb2AZqcTNKZaKIHexOFuryqQvBEFz983qh/0LpXQiNvhcPFTPMjB+lklAI05tp8lz61aOlnSmSnLganutkrb+AWxFk8vD9pN7TRlaz2vI09BezHRBKOsjQq1UoOX9xNOY+Vt6WW3JDOPcYSxx+MojYZE2b+xC6S0RjbdvLmFvoNhuc6zfGwfeE0lVvy3zesEwfnvmQDzHo5ml1NiO3rHr/xa+xu8Dm/y/vF3qRQHk75Ot14H5D7Wvt9CuQOY09Km/tlAHjwwWZBpQMiNmywLdlx97rV5UQI+/bCB+ItX4xO/1N8tdOMYK+4y+OkqGNXzuf5flF3FE+lUKL4i4Vcz/dlANX0ceU8Du17/oZZZLcezcRhdP2HRSVlHykRqFk0Hmm2wEFGysYeY4l5xVoZU2Pmk4LKGhT9FADiLO3sKR+/aRFq4dityW2Eko6ZSIdPdXeJ3F2fe7a4BfdSaHDOoGRsSpZjTcmWf8QYnBEs+PaSiQmk5B0Hq0BDJGbUGVKnAOo+B7qidublFweTH5xkXngjM8Ac0k4stBLGoSD5d6c5ELh2D7U/Mm93hxpc1d67rlfrvivH3OUNGzuJHLBHzkvg2ClS/O4pvkrizpk5IEhQunUkDF87Jifylw5mWJ2yOKw0W/yxSMdga4hXnYPq9s6XOXmyZxIPWqEfjc5ZJ8rBpQz3d41XvNwk0xSuzjexaJilzCFuLz/smYO/ptNGtUiST/VyaBro/jNOK/5vP4f42 o4Xi92cM YofEV61r84dUrdBknIyUlG1xlqlWZ65fnTS7OhxcUXhOPXbRsmtJU5/yaKkAD9ktibbzqHpV2UsYN4npzIG030x3u9lQpD5yY7E6+woQWL/Y/gAS8099SY7/BjeMOPV3MGadFONzjuD+946ZxViuISIvjNdfCERD3ELYT/cStK1I5AgfL5YYDpC4A8m5QEINFyjC8m2ek0IYSlOd9n5f+0hRPGSzh1m1bl6nq3a9n2/X5XXY+kzSwRDgMAI7I2rNECpVVPCfnAAjr2hAOByK5bsmmCD5d/AAU03QfFAy2l79ygREJycA8UJ0YHv16frkQHkLSnHl+0Lu6M7LNE0L18JK3hXiAWVE7oY9hHB4QnZx+QJr5rrn03QUn4RM1HRDVIBBPBLP+Uajqubrz20kfFfGIVUsHG208kzI9t0BjHiZ5Tdkv7pQCqpKxvNUwtLThkS5Ncv2hwJw4SgGEltI8Z/yIRqPyHqqV3vkCQhiDXJGb9N2XSyWZr3/dci0Hxl9la1BvyiByvO6ztjOL/lif0OsCyZzsnFvGz5ei 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: Let's convert to vmf_insert_folio_pmd(). In the unlikely case there is already something mapped, we'll now still call trace_dax_pmd_load_hole() and return VM_FAULT_NOPAGE. That should probably be fine, no need to add special cases for that. Signed-off-by: David Hildenbrand --- fs/dax.c | 47 ++++++++++------------------------------------- 1 file changed, 10 insertions(+), 37 deletions(-) diff --git a/fs/dax.c b/fs/dax.c index 4229513806bea..ae90706674a3f 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -1375,51 +1375,24 @@ static vm_fault_t dax_pmd_load_hole(struct xa_state *xas, struct vm_fault *vmf, const struct iomap_iter *iter, void **entry) { struct address_space *mapping = vmf->vma->vm_file->f_mapping; - unsigned long pmd_addr = vmf->address & PMD_MASK; - struct vm_area_struct *vma = vmf->vma; struct inode *inode = mapping->host; - pgtable_t pgtable = NULL; struct folio *zero_folio; - spinlock_t *ptl; - pmd_t pmd_entry; - unsigned long pfn; + vm_fault_t ret; zero_folio = mm_get_huge_zero_folio(vmf->vma->vm_mm); - if (unlikely(!zero_folio)) - goto fallback; - - pfn = page_to_pfn(&zero_folio->page); - *entry = dax_insert_entry(xas, vmf, iter, *entry, pfn, - DAX_PMD | DAX_ZERO_PAGE); - - if (arch_needs_pgtable_deposit()) { - pgtable = pte_alloc_one(vma->vm_mm); - if (!pgtable) - return VM_FAULT_OOM; - } - - ptl = pmd_lock(vmf->vma->vm_mm, vmf->pmd); - if (!pmd_none(*(vmf->pmd))) { - spin_unlock(ptl); - goto fallback; + if (unlikely(!zero_folio)) { + trace_dax_pmd_load_hole_fallback(inode, vmf, zero_folio, *entry); + return VM_FAULT_FALLBACK; } - if (pgtable) { - pgtable_trans_huge_deposit(vma->vm_mm, vmf->pmd, pgtable); - mm_inc_nr_ptes(vma->vm_mm); - } - pmd_entry = folio_mk_pmd(zero_folio, vmf->vma->vm_page_prot); - set_pmd_at(vmf->vma->vm_mm, pmd_addr, vmf->pmd, pmd_entry); - spin_unlock(ptl); - trace_dax_pmd_load_hole(inode, vmf, zero_folio, *entry); - return VM_FAULT_NOPAGE; + *entry = dax_insert_entry(xas, vmf, iter, *entry, folio_pfn(zero_folio), + DAX_PMD | DAX_ZERO_PAGE); -fallback: - if (pgtable) - pte_free(vma->vm_mm, pgtable); - trace_dax_pmd_load_hole_fallback(inode, vmf, zero_folio, *entry); - return VM_FAULT_FALLBACK; + ret = vmf_insert_folio_pmd(vmf, zero_folio, false); + if (ret == VM_FAULT_NOPAGE) + trace_dax_pmd_load_hole(inode, vmf, zero_folio, *entry); + return ret; } #else static vm_fault_t dax_pmd_load_hole(struct xa_state *xas, struct vm_fault *vmf, -- 2.49.0