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 F2C86D1039C for ; Fri, 25 Oct 2024 01:56:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 726C66B0095; Thu, 24 Oct 2024 21:56:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6D6706B0099; Thu, 24 Oct 2024 21:56:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 59E036B009B; Thu, 24 Oct 2024 21:56:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 3C8D36B0095 for ; Thu, 24 Oct 2024 21:56:14 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7FEA140295 for ; Fri, 25 Oct 2024 01:56:03 +0000 (UTC) X-FDA: 82710458880.10.E515187 Received: from out30-97.freemail.mail.aliyun.com (out30-97.freemail.mail.aliyun.com [115.124.30.97]) by imf24.hostedemail.com (Postfix) with ESMTP id 0376F180013 for ; Fri, 25 Oct 2024 01:56:07 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=VZYyhKog; spf=pass (imf24.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.97 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729821294; 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=JXc4Oh+KXKinub95ckQcMbW8B7vWBlit/eXWPuy9/uk=; b=oKpCL1vsM+9UUOYy2iUoDciHURmn+e5xIWaXH4UvyqUzHySKREb0C8faROh7e25AfTvqwy nojYgsheBKSmV+YrNrr+RCU12VpoIm36WQgbcCPFOIAlknxSQ1f3uJHB+4C1ns+eROOPlz VE5dv4fJq5PjWH4GvcR+hFbX4Z0bVgE= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=VZYyhKog; spf=pass (imf24.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.97 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729821294; a=rsa-sha256; cv=none; b=CM/owMmvEQ/HO5qf8YsP5hkOdCWoQry1sBHcVJd9b/PeYrjsoxdONFBYaitef4p9aztJar Grbc/wzFvhj/Hz5X/pvCc5V7Pp7OqIFUYtNe78ingJ4Vnq3qzbUEXRblndY8pHp6NUE4kq URNG48nt7sqtE6TWd/2rQUuTmCIxg4k= DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1729821368; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=JXc4Oh+KXKinub95ckQcMbW8B7vWBlit/eXWPuy9/uk=; b=VZYyhKogmTVTv1YUC2846j3WPb7CSW38Q30ayuUwvIaRF2DecNnYwFxsXQ4UT3Oz8O+3FZQJ6RJExWmVmKYZcoRUKmyM4HHzOj0/ORG2B/sbPcZVowBsejm2RdekFrxNHzt7p1yBqsZDtjOFf63BwKqWuOJ6FLBbRBTx/yZqS50= Received: from 30.74.144.130(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0WHqcrzD_1729821365 cluster:ay36) by smtp.aliyun-inc.com; Fri, 25 Oct 2024 09:56:06 +0800 Message-ID: <8c77c582-262a-4419-be9e-45ad76bfd36d@linux.alibaba.com> Date: Fri, 25 Oct 2024 09:56:05 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH hotfix 1/2] mm/thp: fix deferred split queue not partially_mapped To: Hugh Dickins , Andrew Morton Cc: Usama Arif , Yang Shi , Wei Yang , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Johannes Weiner , Barry Song , Kefeng Wang , Ryan Roberts , Nhat Pham , Zi Yan , Chris Li , linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <760237a3-69d6-9197-432d-0306d52c048a@google.com> From: Baolin Wang In-Reply-To: <760237a3-69d6-9197-432d-0306d52c048a@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 0376F180013 X-Stat-Signature: eq5kffto359eqkpmcxgprgiujng73prj X-HE-Tag: 1729821367-757548 X-HE-Meta: U2FsdGVkX19rxQgY0t62JLHMjZ3VyXqJo/dGZ57UAuDPmrcMDQ4uNBdZDdIluaWSJk/CDG7zJTsED7Bb/xUmmBFWsddC3g8bIkjPFfpbH1vkKFSEZS4NZVQ0DEcFgbZYXQCZAC1FelCEaUSGqxeEfYcYG7CC9M5YAvtK4oBvVeB+R9WbwSAsKh4ROsu+w4r7cTy3jUcHLZIV+RNoglybiUqsPnt1dfpKZnL+jfkTNJl39W+S+Q0JILBuvRTw2iIePBRLKeGVKocK3X6wHqUuMWb69NUTFZmGUxbU8uDC2BKw5QA5DT+/anx93mbzbgOQe4zBUbF+ub5V63iIO0QdN6xbG+cfuEYB1UevEI0vIoTgVoYMpnUhaGDlOkwDGDIXVv8o8V87qaMCofFz3PCBxBhoHqfrdtSs4ckbEus7kWwvwcVDRfJpPCNB8a/rcjjOIoJFNOpOMCqRNw8xhcGsBasse4wsZ3S6pNGQsmGdNgYmya3JtZpzw0OcwU/I/lxEaxVgVLATulxa17zgfVEOltHPm7U09jKShab1kTBEmymmPLV3VwU7JOam10kQQC2hUFRbJYLIsC9XUMfiKUME3y5d8huVj7dVAYB1G/FDa8sYyifigdwjEM5AgdSlaMRDZq+EGSRiMV3LVWbH/UEkteQZq0PJFlGskEoEwsN/Z0ODAYepJJ8Y1vhOJJEj9Pa5mj+cmdhikAjynNWIwfBhiWCqrQy3veGOQcQR8Gax84OKJHubZySvpG5mFwmWDDyyJf4kX6ZpXUXI6/lK3ktOujCtcxGk95evABync/mmuNSvil7HEuW/SWyXAauEDaOeoR9aoRuOxVfyevGMcmtClJuJA2Z8Oulj9DIvE296OkzhyDmqiQScBvORFL+Cr/tq5P5q0wUE2dasF7bjvB52gjnUed/8essDQjT7K63nfniEqTQ+/7VxTktDUdWoOBRVszh3oZ1ayA7wHsVAowX gdhnU5B5 sxAIpv4mU2fxGD/c0CvGzeWq6xpFHofhLPZ/HeZRiNtL+ifx21mfJ+NvkK1WAuO2DNaVOYAZ4+OiIWL7krnjaxNkRBfihg/BM+ngBKHtnjNgl7ivS+XlAZWljT6uVUdOc+JQYyGeZdtK173ndE61wQ9dSbO3WhFnDvIjpMlALbDLSAMP8OILO8yGQL3UGMYM5304VuI7Oncsp9WAIjCoEhCAoiWx0TGLCLh7cNR7akxItJPFaoyatLnl+/FgLQ//FyGrcE0wSYfSXPltobl1ZAhZeDqq414wU8o7qUZaFkTcj+KzgrDTAvggiVVZvgY8lYnbeR0XGpF28cWbzx55UIkZP1NLBe/5fCOZyXTXdWYzNWCFslbbY+qG73AIjPKVtWO+kB9iGUTRMdvt9htQ8gY2/7YlobOt3WMMv 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 2024/10/24 12:10, Hugh Dickins wrote: > Recent changes are putting more pressure on THP deferred split queues: > under load revealing long-standing races, causing list_del corruptions, > "Bad page state"s and worse (I keep BUGs in both of those, so usually > don't get to see how badly they end up without). The relevant recent > changes being 6.8's mTHP, 6.10's mTHP swapout, and 6.12's mTHP swapin, > improved swap allocation, and underused THP splitting. > > The new unlocked list_del_init() in deferred_split_scan() is buggy. > I gave bad advice, it looks plausible since that's a local on-stack > list, but the fact is that it can race with a third party freeing or > migrating the preceding folio (properly unqueueing it with refcount 0 > while holding split_queue_lock), thereby corrupting the list linkage. > > The obvious answer would be to take split_queue_lock there: but it has > a long history of contention, so I'm reluctant to add to that. Instead, > make sure that there is always one safe (raised refcount) folio before, > by delaying its folio_put(). (And of course I was wrong to suggest > updating split_queue_len without the lock: leave that until the splice.) > > And remove two over-eager partially_mapped checks, restoring those tests > to how they were before: if uncharge_folio() or free_tail_page_prepare() > finds _deferred_list non-empty, it's in trouble whether or not that folio > is partially_mapped (and the flag was already cleared in the latter case). > > Fixes: dafff3f4c850 ("mm: split underused THPs") > Signed-off-by: Hugh Dickins Good catch. LGTM. Reviewed-by: Baolin Wang