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 7BAD3C7EE2F for ; Tue, 6 Jun 2023 23:35:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 827728E0002; Tue, 6 Jun 2023 19:35:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7D6C38E0001; Tue, 6 Jun 2023 19:35:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C6638E0002; Tue, 6 Jun 2023 19:35:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 5DC668E0001 for ; Tue, 6 Jun 2023 19:35:57 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1F1851C7DA8 for ; Tue, 6 Jun 2023 23:35:57 +0000 (UTC) X-FDA: 80873933154.30.18CB326 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) by imf18.hostedemail.com (Postfix) with ESMTP id 642D11C0013 for ; Tue, 6 Jun 2023 23:35:55 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=lRCGsNGX; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of 32sJ_ZAsKCIknpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=32sJ_ZAsKCIknpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1686094555; 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:dkim-signature; bh=nrm4KWzvI342qxUWuFoP1xZ+ALX9wFb7Mi+LynEpxsg=; b=Q/2l4dfgJACshi9+XZ9YYUb5RIsd/wav2S4q13Z26VLCeL8NBSQvP/iDDjn3QZyKHFxSMn Jb/1TDoGFeBFm8R2A4k2X6bykyjUhwzcFmyloDMrgKGJxpGM65zX0KbGI6UGixdE8qgHxg MJSs5/ePCFuGKv2bHW4QEyzOb3+Ixrs= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=lRCGsNGX; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of 32sJ_ZAsKCIknpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=32sJ_ZAsKCIknpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686094555; a=rsa-sha256; cv=none; b=8TfgIv6F9qofxxEreFHOW5PeiVTyfrHH3Bq1a0t7owNigTj76TvMR0t8zFtSCOZto6Hkfy K9w+jeiU5jo+2QS/BV3VDeekf89q12TNIFsZv/dP/1oeWVbk2flXhVs48XOFztG7IsEuxx yEFv4ESo2rTCN47JVlRCrseMyTiy9qM= Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-1b03f2663caso25820945ad.1 for ; Tue, 06 Jun 2023 16:35:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1686094554; x=1688686554; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=nrm4KWzvI342qxUWuFoP1xZ+ALX9wFb7Mi+LynEpxsg=; b=lRCGsNGXPqKlpaXsU05AWd1fUlOlpAhGfQeW2fCgsGKt5P8UgaTIvq74hHLSEDnmFY +7WoYf1/H9mJXa9Y3NM9wdCTD2kojewkwZsY4f75ldI4+Yvjm4IKeICdeAqf9l/05UUv gkwT9FzAv/JXMuxbLwBS7DNXojYnnP4SOlJmhpuqxCNAwTGQJq+Z3V9DoOjaUM70J2N2 os0qkC4e0s4lGAV78hRYpekQ7tUGh5r+lkmhtTkcIwLxQ+Hq/fg47HpBHm6OTw54JV/Y LrbW5uOB2w2l7+Zr91Z7OdmZWnyuZeinFkEAZ5SuMf5RC8IhdC/OisFZdHmA6LUYiA1A VTdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686094554; x=1688686554; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nrm4KWzvI342qxUWuFoP1xZ+ALX9wFb7Mi+LynEpxsg=; b=FqR109QxaokHzf0G5AgNJMZmVPpJhnK+5f0+bOt92lb1CGd1meIHGvORM1XN2fFGb0 Wie1rQfE/kv6dlxqaGk0jbLd10j5AftWLtYlWSCW5cm0qoSQvIxG6lIebnwYBU+2NuOD J8gdnIUpYDqm3k/QoROVtfQ07i+u7cpIoCUVHbpYRUnIboNV9GffHWRNgmQ/WlYU4UPb hX3lcp1tJymHFPgct+tsaQuyB1buFVIbGtOjhEB/ZLZDKYY1HNlz8iQ6do8GePTmEPBz vc5iMYlZoewc9FcQHmOJU2HPQc7pGwaZihZEB4n9Uoo1wGjQZEMmKtORmPSnDKK4XcQi AHAQ== X-Gm-Message-State: AC+VfDwUtIG7PAjtQ8TMtYE07S6c+pqKBut8cjv4UyJOuuFTyRHwSK21 BN5cME0l5fMhpPQI04w+Hp/WYCBoGAH7p+tTxg== X-Google-Smtp-Source: ACHHUZ7q6E1gWJ3kbY1dNGCYsjTabqZQbdrfT4r5LiLkPjIIR2hW6wwf+79ekz+zCEWvGvRp9xg+zuQatRldWVrX9Q== X-Received: from ackerleytng-ctop.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:13f8]) (user=ackerleytng job=sendgmr) by 2002:a17:902:cecf:b0:1b1:86ad:332d with SMTP id d15-20020a170902cecf00b001b186ad332dmr1191476plg.12.1686094554168; Tue, 06 Jun 2023 16:35:54 -0700 (PDT) Date: Tue, 06 Jun 2023 23:35:52 +0000 In-Reply-To: <20230606224101.GB4150@monkey> (message from Mike Kravetz on Tue, 6 Jun 2023 15:41:01 -0700) Mime-Version: 1.0 Message-ID: Subject: Re: [PATCH 1/1] page cache: fix page_cache_next/prev_miss off by one From: Ackerley Tng To: Mike Kravetz Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, willy@infradead.org, sidhartha.kumar@oracle.com, songmuchun@bytedance.com, vannapurve@google.com, erdemaktas@google.com, akpm@linux-foundation.org Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes X-Rspamd-Queue-Id: 642D11C0013 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: k4cym1fzyhuz4ozeifwbezkg6qazoja7 X-HE-Tag: 1686094555-3714 X-HE-Meta: U2FsdGVkX191MfHIdjNKX/K3pgeTCT3Rsg2No+jmYynkRjUKS0sy51ansnrtY+JdOq2nbU8rjPRZyc9INEAOEX0A/kkOZ7IEUmdlNjLLIHsGxseIfHOlHzXkYWM5BZHBK9T5VQ4DC2gm4XNDDr6MgrGjZftgrzGUoOvXu9A6WLzpjkMrlW8rvp+vf+xIbJyQuzaVhg9hmu/TKCCDISTtaOVoenmHCkmVnvHqa+xjPYE9ugonXVL4gdS/dS7/KHxpNnf+hV0LJkVgLZe1lG7L32OROuWze5+0GkU29CqykOCX/ZO8yPOFXofpONOF/gfTq19R7tNDDWPpz29Wvxou7pna4pGLx65q5v/4zzS156bzWOZZyWMm5Mpwj4K3pgXkPKJo332zh3fpMGBCVQPfQXqmrbPvagBKKJkBoGET53FVgHxPNmLcNaGYrB31PVEnCgdyscV63fS+2QPDy4eZwBGTui6RlndZiLyeUGBbL2j/DYbjvWfhl5BebIDhXR4LkiECnykA37lBc1Z8K+fgeFZFOrSsuyRrBTPu0/YSMbYG36QKMEfuJz8TcaEU8q8ecpZTV5dhxjUtbvX5agDzlH9llb8wjj73QGlBAxS5jxPF+apgfgEbdzBtJJRbmW8cW2AHvSgloXqb6lEv8M7tCn95jxRZkiz0A+I1dxav6anmC1U80iF9J2c+9b7m6nNcB7ClcUEz/G2vtKTKC6DWqN46PJwxVfwdMTY9B22gOaDAKt5Qb5/A00G6OZ3nUF10QymhXMaU2x5aFZc0PQRYWu48e96rLQgzmBV2PtJNQpy+KKAuktDupn20/qep3kcHuOGUxvmGKjfCTwSGHFEQKoqVvIF/psK83259u+5MFNnCUk9Gb2bS8vNN7fv6F/VU+d8MKOj4OaLC6nUn7CVpXY4ceMNRt8jCHkZ6pMrQPfrQy5QntWj3rXAs4xPAmXMGpTSSInKweREBoevuQkF 5Icl0JFN Xd2PymmEjMByY/yrTdrtWOrxyzdFOk7METzKdwOMyXEWDK9ot8akkVcR+RX1rOU/E/AbnHr3329c3m30sApjcTN7GN7GAii5AGUB3AWWpPFLhHiKcA6FYhyKxm+p00He1OXyAN4/SQ3pZbia5B/DPFLYkSBvGF3eekeV4MJWustCcH8DGDPqXal84ZOmKskbrP3GZn6OdVTgTPbbTCk3lut42Yzya5UnfjR02S9i+iozMMU8lxXkKerfTFvqxnSIr6H7AcOnkkDOeyBPx+UBaHCIUjYKO2bZ+3gwALTNT8CbA4/e2EhJIZBMnLT0xCiV7At0ondq2dyV4iNbLROyQq/4fIktnArC5NPxxTKiu4pZzJCmqOaJCtO4g6CmcXQq5R82CdL6ymQSccPxo2Frtr+4YpV7PTKoL9AN0Ut8vx30GQDR8iPUud4MLqB8vkQqvoNKXvDMDmMI8bmdn7C3TFEP2SZ+heQq8+cdXInQxzzXP3tRhj4p3xaQMY2XnOehtelBOD/JcAtRVWca457M9MwoD622E5KDH0fUTD4HiUGBzPClYBJ4aFvOQNV7XwSt4K6gepBWtnc7KpVcaxrzetKgblZgAZShsQ3LVBZSp8lc4i0VOCdLsVUuOk+xWxfBIX0Z+GkQ0xXyd7wT/heBO7QH3ktAvqK1vt7O5cCcrb1HxUqU= 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: Mike Kravetz writes: > On 06/05/23 17:26, Ackerley Tng wrote: >> Mike Kravetz writes: >> This doesn't seem to work as expected: >> Here's a test I did >> ... >> The above gave me: page_cache_next_miss(xa, 4, 3): 7 >> But I was expecting a return value of 6. >> I investigated a little, and it seems like entry at index 6 if we start >> iterating before 6 is 0xe, and xa_is_internal(entry) returns true. >> Not yet familiar with the internals of xarrays, not sure what the fix >> should be. > I am NOT an expert with xarray. However, the documentation says: > "Calling xa_store_range() stores the same entry in a range > of indices. If you do this, some of the other operations will behave > in a slightly odd way. For example, marking the entry at one index > may result in the entry being marked at some, but not all of the other > indices. Storing into one index may result in the entry retrieved by > some, but not all of the other indices changing." > This may be why your test is not functioning as expected? I modified > your check_find_5() routine as follows (within lib/test_xarray.c): > static noinline void check_find_5(struct xarray *xa, bool mult) > { > unsigned long max_scan; > void *p = &max_scan; > XA_BUG_ON(xa, !xa_empty(xa)); > if (mult) { > xa_store(xa, 3, p, GFP_KERNEL); > xa_store(xa, 4, p, GFP_KERNEL); > xa_store(xa, 5, p, GFP_KERNEL); > } else { > xa_store_range(xa, 3, 5, p, GFP_KERNEL); > } > max_scan = 3; > if (mult) > printk("---> multiple stores\n"); > else > printk("---> range store\n"); > printk("page_cache_next_miss(xa, %d, %ld): %ld\n", 4, max_scan, > __page_cache_next_miss(xa, 4, max_scan)); > if (mult) { > xa_store(xa, 3, NULL, GFP_KERNEL); > xa_store(xa, 4, NULL, GFP_KERNEL); > xa_store(xa, 5, NULL, GFP_KERNEL); > } else { > xa_store_range(xa, 3, 5, NULL, GFP_KERNEL); > } > xa_destroy(xa); > } > This results in: > [ 149.998676] ---> multiple stores > [ 149.999391] page_cache_next_miss(xa, 4, 3): 6 > [ 150.003342] ---> range store > [ 150.007002] page_cache_next_miss(xa, 4, 3): 7 > I am fairly confident the page cache code will make individual xa_store > calls as opposed to xa_store_range. I tried this out with xa_store and a non-NULL pointer, and it works as expected. Thanks! I also checked that filemap/page_cache doesn't use xa_store_range(). It only uses xas_store(). Reviewed-by: Ackerley Tng Tested-by: Ackerley Tng