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 C478AC433FE for ; Wed, 12 Oct 2022 16:02:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 001066B0071; Wed, 12 Oct 2022 12:02:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ECB836B0073; Wed, 12 Oct 2022 12:02:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D1CD06B0074; Wed, 12 Oct 2022 12:02:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id B759B6B0071 for ; Wed, 12 Oct 2022 12:02:51 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 690B4140CF5 for ; Wed, 12 Oct 2022 16:02:51 +0000 (UTC) X-FDA: 80012765742.07.2DD4935 Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by imf20.hostedemail.com (Postfix) with ESMTP id 141851C003A for ; Wed, 12 Oct 2022 16:02:48 +0000 (UTC) Received: by mail-yb1-f178.google.com with SMTP id y205so20506686yby.13 for ; Wed, 12 Oct 2022 09:02:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=asbHjkVq5tGvEOMEjV9ZiHWtFmPxbiR4kRuKse54pkE=; b=GJCkUj45ysR5PWKAoFVSiykTGzMPnLo7iIm8PQBiKkSGIpAoY8z3lLZ7VqcT3Q/4DE Rx9e1c8nASOlA9vhaSUFnpuZofVkB2rBNxaVDUcpzQNGm8zaVuok6R2L6NcyptC+Rw5C l0QW3g+F2e5dCyMe48zNt+Nh5FbWtFm6V/rpC0yAQ0EOJzdcKsaCprhr8gXxNr6354pX r3TLirMhw4R95vm9CbnKmFlb9j+kN9yYSyg9FkMRxEn7oJdM+JeAQIDm0VeNmHAzgUOJ 2xpKoUhiDEa4OSXc6UKNG1SijFamYZcMSdml0A15iuQ9r55XPMHGV+URaTpuRm8k0vEf Kt8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=asbHjkVq5tGvEOMEjV9ZiHWtFmPxbiR4kRuKse54pkE=; b=FvSEk6UGi7JWVAdGFXbRSSizIRN79pLMomVGVehB+bAl/aCeb3j2uhOIAwYIUwqsVn VZQ1C3RdysdfRIF3WLAShIUx413tBJXkGaQKuTIdQ3DaNmSBmqggSyn3kwHXnZcsP3QA xV0MRJLZvBnFU4CuA/JEoInLehkVBWHrfz3KWO5fNEE4IzTsgBBBgHQeuI9xRhcKl9NP Byl2E2jZ894TUI7uTcMFIbKlEmo+Pux/qfScbNtxfULMIhVVE7K2DywxyBbzbWvlvc4B KW0orb4NiM8kisrQLt88w1AMsfpyaLRDlYF7o85c+Nsd/7qXwPdwtIXgsaCFf+nBienc Nkdw== X-Gm-Message-State: ACrzQf2GNTY2e6BYe26itHagrFd/XjI7YlNib6SnbNd9UHI6BX8B25vI BA3o97BfugVykoKinMCyq4PFqDFiJtKcetqXz/U= X-Google-Smtp-Source: AMsMyM47Z2EbVh2iAoH30O/3krbN+Ms479nxBxsgawEUtxRwaa8PQ5hRU6FGwSZQr1W5HWSzIoghIof7HdTQwu72lcQ= X-Received: by 2002:a05:6902:150b:b0:6bf:4752:eeb1 with SMTP id q11-20020a056902150b00b006bf4752eeb1mr25996044ybu.323.1665590567936; Wed, 12 Oct 2022 09:02:47 -0700 (PDT) MIME-Version: 1.0 References: <20221011215634.478330-1-vishal.moola@gmail.com> <20221011215634.478330-2-vishal.moola@gmail.com> In-Reply-To: From: Vishal Moola Date: Wed, 12 Oct 2022 09:02:36 -0700 Message-ID: Subject: Re: [PATCH 1/4] filemap: find_lock_entries() now updates start offset To: Matthew Wilcox Cc: akpm@linux-foundation.org, hughd@google.com, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=GJCkUj45; spf=pass (imf20.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1665590569; a=rsa-sha256; cv=none; b=o/eJK/wwlv+FadCZWqi22aNChv0zZsbKlqmeIp9aPtUb9ATA96c0A3pVIh8abmG37OSJ/X ScxyXt2UOQlSWAh1+WdG1NPaDD1mFG9oTzyj/GwYlaCA10B4g7mjeXraFB/ZXqe76VHbTb iQXnpmU8FW2Kms21ApJzzYOesmWpQD4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1665590569; 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=asbHjkVq5tGvEOMEjV9ZiHWtFmPxbiR4kRuKse54pkE=; b=LJossOSDT3xVl5ROEzfFcWKK4W6eWd5aEgf6PcnVUGXKydpWlsR4UZH4t6K3oclV/B6ViO Pfy531cw2avzep9miQPi+Kc3w6qcwa/ZkmYpw5GuqKpOAuryJXMrIbZycjFeZOnyBmN3Ol 8DaPLP3CIgTZzpCSdMVU1nglxPG5dZo= X-Rspamd-Queue-Id: 141851C003A X-Rspam-User: Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=GJCkUj45; spf=pass (imf20.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam04 X-Stat-Signature: 6otzb6tjh1x7gadmgj3oxcuu9b4aqgnk X-HE-Tag: 1665590568-403648 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: On Tue, Oct 11, 2022 at 7:10 PM Matthew Wilcox wrote: > > On Tue, Oct 11, 2022 at 02:56:31PM -0700, Vishal Moola (Oracle) wrote: > > @@ -2116,7 +2118,16 @@ unsigned find_lock_entries(struct address_space *mapping, pgoff_t start, > > folio_put(folio); > > } > > rcu_read_unlock(); > > + nr = folio_batch_count(fbatch); > > + > > + if (nr) { > > + folio = fbatch->folios[nr - 1]; > > + nr = folio_nr_pages(folio); > > > > + if (folio_test_hugetlb(folio)) > > + nr = 1; > > + *start = folio->index + nr; > > + } > > Hmm ... this is going to go wrong if the folio is actually a shadow > entry, isn't it? You're right! I missed that. > > +++ b/mm/shmem.c > > @@ -922,21 +922,18 @@ static void shmem_undo_range(struct inode *inode, loff_t lstart, loff_t lend, > > > > folio_batch_init(&fbatch); > > index = start; > > - while (index < end && find_lock_entries(mapping, index, end - 1, > > + while (index < end && find_lock_entries(mapping, &index, end - 1, > > &fbatch, indices)) { > > for (i = 0; i < folio_batch_count(&fbatch); i++) { > > folio = fbatch.folios[i]; > > > > - index = indices[i]; > > - > > if (xa_is_value(folio)) { > > if (unfalloc) > > continue; > > nr_swaps_freed += !shmem_free_swap(mapping, > > - index, folio); > > + folio->index, folio); > > We know this is a value entry, so we definitely can't look at > folio->index. This should probably be: > > + indices[i], folio); > > > @@ -510,20 +509,18 @@ unsigned long invalidate_mapping_pagevec(struct address_space *mapping, > > int i; > > > > folio_batch_init(&fbatch); > > - while (find_lock_entries(mapping, index, end, &fbatch, indices)) { > > + while (find_lock_entries(mapping, &index, end, &fbatch, indices)) { > > for (i = 0; i < folio_batch_count(&fbatch); i++) { > > struct folio *folio = fbatch.folios[i]; > > > > /* We rely upon deletion not changing folio->index */ > > - index = indices[i]; > > > > if (xa_is_value(folio)) { > > count += invalidate_exceptional_entry(mapping, > > - index, > > - folio); > > + folio->index, > > + folio); > > Same here. I'd fix the indent while you're at it to get more on that > second line and not need a third line. > Turns out I had misunderstood what a value entry was. I now understand why we do in fact need the indices array. I'll fix the first 2 patches and drop the last 2.