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 006B4C19F32 for ; Wed, 5 Mar 2025 18:51:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D085828000F; Wed, 5 Mar 2025 13:51:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C8F6B280006; Wed, 5 Mar 2025 13:51:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B319428000F; Wed, 5 Mar 2025 13:51:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 92596280006 for ; Wed, 5 Mar 2025 13:51:46 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B5976809CB for ; Wed, 5 Mar 2025 18:51:48 +0000 (UTC) X-FDA: 83188391496.23.EF64B44 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf18.hostedemail.com (Postfix) with ESMTP id D54151C000A for ; Wed, 5 Mar 2025 18:51:46 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=g1sIXQ0J; spf=none (imf18.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741200707; 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=ezOs1RA2PMdRaE8a2I0woDGQvoaxmyX96aKleIL4//s=; b=gCeMFB8QCpl1AsI4iyOaAv2W/Tw3Ui5ZQB/npSSq7leQtCr8EJ0jEg/l4phunPbxGfJhiW 57KNdEuNO2RRk73BGOHOPiBM2DDqRXLrB751cX2gp/6m92cllQoAUvXIsTfD9Q4pv9oC/r rBPg7wXap7k2H/kIOPPA0V7I/hA36qA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741200707; a=rsa-sha256; cv=none; b=ORXf5XYLKpjIFHLRv9b6s/VU5CG36P+iH+6FBIMPrz2oRKvJJjMgPW6+KRGjLRR5d9/vU2 KWIw5Jvet5jhorUkroJkmv5196aYt369OWCV08Kvb2gCMKC2Xfo2/XYJjdRJQzovU/InAY 9Jyb5BgkzB31u3zMBoaK+DgOu0r6FU8= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=g1sIXQ0J; spf=none (imf18.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=ezOs1RA2PMdRaE8a2I0woDGQvoaxmyX96aKleIL4//s=; b=g1sIXQ0Jf8DI6ZYbvF038gQjrB cp/c8KUBs+7VxZDugWYDbTZIOpUTwfRzDyUrlOP2RnM4tkHkVmCHNksqwmn78NQ4fKU8ynMUftOG0 IJQd+474/XV5udfbijLYOw5Z41frOj6cyNMg2TctzvIgSRqMdcbRd3weXyUE2UjbSidapyhF+zMFc pO4n/PTwDIR5R1wR58wOn8BhP9g62+Fvtzov+oGQsG14A5tk0S236A6Wujk4S6mst55ecpZ7Q1Pug ldsCdMEg8xzIafE8LA2rSxAmITBMfeBsL7mw39+fEhxKjOQS/+X+wp8mg7wyLJgg3Qom39xAPIH75 fN5tRq+A==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tptqG-000000062MY-3Hw2; Wed, 05 Mar 2025 18:51:41 +0000 Date: Wed, 5 Mar 2025 18:51:40 +0000 From: Matthew Wilcox To: Zi Yan Cc: Baolin Wang , Liu Shixin , linux-mm@kvack.org, Linux Kernel Mailing List , Barry Song , David Hildenbrand , Hugh Dickins , Kefeng Wang , Lance Yang , Ryan Roberts , Andrew Morton Subject: Re: Softlockup when test shmem swapout-swapin and compaction Message-ID: References: <28546fb4-5210-bf75-16d6-43e1f8646080@huawei.com> <376D50C9-6DC8-4F58-9C43-173EDCD412DD@nvidia.com> <3812C3CC-DC05-46D2-9A87-920797227105@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3812C3CC-DC05-46D2-9A87-920797227105@nvidia.com> X-Stat-Signature: yu667fib5gx3bos1x59cuieyjds1awsu X-Rspamd-Queue-Id: D54151C000A X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1741200706-695862 X-HE-Meta: U2FsdGVkX19OTXKjjiOA7ZSPySZPYvjLJ3xmf/RWKWRMDnSVDsivfFzE6M//Lw880F7XX3vqcUyz6f26lcoTT0LO8Gh4HV/jycGxrPf+sJjOIKmg0/p/kSDZ6vke27uzQp86LM3pLk99GNA8ULkVfOH7Y1DtZXNzDNp35GT9TCDOmNlzSr72zfDqvTi/nsVI3rXhPULGGHlV7sVFrgGxjRtl6Lw5EkTi0m87h3/XNKrAEvdUgYQsdwqAdGaaNOhe9i9PSQFVfCzz6IRz733DLXZ8wadRsDqqEDXyVfZcN/WDrH5fHHiGTwmAQ7vkjuqqNQZxtvsy3lPEWgoOtEKRN5BvlWWjaRar6zaWKR7y9ZknqWom3rASraH3ozOFwM5TiHoxHRbwNKy7HpTtMu5TW1kapr57HUy6f/YGCGs+gwiqDDauAB4tB2WvLQk7YGLVZC80oKRNpKRaffcKuKEB1EsDJIahYwYPCTsyeym160YKs/aQdGtZD5yRhnDSLlvN5xjOWWrP2PpCujknepoqfXh/BqoEyHcAVN+8UCcCTsJBjRxDcAeXXGIga+gYEVY0irYd/59QVdBBYiolqF8U9QUXH+p72tvTPs4i0u0Or3RM15HXqYrfztos+70VMxuZOiNp39bysUe3PVGPwZutN6R0ODt2Y92gHEn5PtZiE5GOx2ZRdApq0JOtRnadq409O4IOZMZAzfNF3nVeAJyaThOBiaOzwJEfCBLmwPc/lDL7Ikz3fMgxl/lqfEMasQG6e710TCxiRUCbCkXZpPJA5qc4fRxVmbvrRodcA6aDL+9dCjmnzl26zyXVGOM2/pXDYzEgnQWO9/OdCPouhKu78zXUVFJ3/RRoi5fKhj5w7THFsD5yJ6+Reb+Prve1rogu6+dHOA2xqIRucu8HQE/xh2DOG+T7+cBnBufHA2WkiZ925jpIWzly6O+LQyQnQ5PByQspPQgw2b61T9Zz4Op C4WGrQTm +/htrbP+DEszmRa9wsstRYi/mZdI/YRP5lccmGNUX4J7KDOOSSbX4CL8FuijrQ1x6ccrQyPdjy010CNRI1ufNzZ3C2GLRkLJdItfxx7sOwM6AOGefX0Ey2BtOT1LJ98VKmnFJnUIlB9Y0JbMRgo/UjhLxBH+Uf9RrM/9klbAXRpzyxDooXtqmTaQYZhs2Yqb+3LHDfFoRJaMbtNa7YImY5voAshbe4UZlWcrgBLMri1vsoRw= 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, Mar 05, 2025 at 01:44:29PM -0500, Zi Yan wrote: > OK, it is probably still caused by the __folio_migrate_mapping() bug, since > writing to sibling entries of a multi-index entry breaks the multi-index entry. > Thank Matthew for doing the experiments. Here's what I did: diff --git a/lib/test_xarray.c b/lib/test_xarray.c index 0e865bab4a10..4f38db416ff6 100644 --- a/lib/test_xarray.c +++ b/lib/test_xarray.c @@ -645,6 +645,26 @@ static noinline void check_multi_store_3(struct xarray *xa, unsigned long index, xa_destroy(xa); } + +static noinline void check_multi_store_4(struct xarray *xa, unsigned long index, + unsigned int order) +{ + XA_STATE(xas, xa, index); + int i; + + xa_store_order(xa, index, order, xa_mk_value(0), GFP_KERNEL); + xa_dump(xa); + + xas_lock(&xas); + for (i = 0; i < (1 << order); i++) { + xas_store(&xas, xa_mk_value(index)); + xas_next(&xas); + } + xas_unlock(&xas); + xa_dump(xa); + + xa_destroy(xa); +} #endif static noinline void check_multi_store(struct xarray *xa) @@ -724,6 +744,7 @@ static noinline void check_multi_store(struct xarray *xa) check_multi_store_3(xa, 0, i); check_multi_store_3(xa, 1UL << i, i); } + check_multi_store_4(xa, 16, 4); #endif } The xa_dump before shows sibling entries: $ ./tools/testing/radix-tree/xarray xarray: 0x55b2335be180x head 0x516004c75b82x flags 0 marks 0 0 0 0-63: node 0x516004c75b80x max 0 parent (nil)x shift 0 count 16 values 16 array 0x55b2335be180x list 0x516004c75b98x 0x516004c75b98x marks 0 0 0 16: value 0 (0x0) [0x1x] 17: sibling (slot 16) 18: sibling (slot 16) 19: sibling (slot 16) [...] And then after shows them turned into normal entries: xarray: 0x55b2335be180x head 0x516004c75b82x flags 0 marks 0 0 0 0-63: node 0x516004c75b80x max 0 parent (nil)x shift 0 count 16 values 31 array 0x55b2335be180x list 0x516004c75b98x 0x516004c75b98x marks 0 0 0 16: value 16 (0x10) [0x21x] 17: value 16 (0x10) [0x21x] 18: value 16 (0x10) [0x21x] 19: value 16 (0x10) [0x21x] so I understand why this took a long time to show up. For most uses, you can't tell the difference between these situations.