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 B2B6EC25B78 for ; Wed, 5 Jun 2024 01:18:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C6346B0089; Tue, 4 Jun 2024 21:18:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4747A6B008A; Tue, 4 Jun 2024 21:18:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 33CC56B009B; Tue, 4 Jun 2024 21:18:23 -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 16AA16B008A for ; Tue, 4 Jun 2024 21:18:23 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id BAC47120E0B for ; Wed, 5 Jun 2024 01:18:22 +0000 (UTC) X-FDA: 82195074444.17.5577E2A Received: from m16.mail.126.com (m16.mail.126.com [220.197.31.8]) by imf10.hostedemail.com (Postfix) with ESMTP id 1F6EDC000D for ; Wed, 5 Jun 2024 01:18:18 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=pFoh1fj5; dmarc=pass (policy=none) header.from=126.com; spf=pass (imf10.hostedemail.com: domain of yangge1116@126.com designates 220.197.31.8 as permitted sender) smtp.mailfrom=yangge1116@126.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717550300; 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=XqtLqw5329DmSQfIZ97wQcsPfrI3RrJ1xo0vGF5vAKA=; b=F9tlXGXIGPHoVmxl9AmECOdSlqXpGqY5XE/oX8XMDexd3RGRlXac5o9PUyk9VT6Cb2pTRv 0gb1o4k/Ff7z8I074PSEco9S2pxW8+ffeeP5SG0+gZ4pO/8ablak967POucf2TRClZswHy UQ/f3n5/hY9NDW54IApLa9tQHThfFeI= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=pFoh1fj5; dmarc=pass (policy=none) header.from=126.com; spf=pass (imf10.hostedemail.com: domain of yangge1116@126.com designates 220.197.31.8 as permitted sender) smtp.mailfrom=yangge1116@126.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717550300; a=rsa-sha256; cv=none; b=xsEDvwZVYr6yZVQh9PmSGpyX1yO9CKFhO8O5XPp2WSu7eRaMPm0rIg89rR8uHy1Wvrdp+a 2q5YsUZXrc40sd5sr21RSt6XUWaQNtRjLfz5oirfHxIz//oEXtAZz4y1RVUyvNO2TE/CVH yCkjDe6PMKtYnaod6+0vN0HcqJPiIwM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=Subject:From:Message-ID:Date:MIME-Version: Content-Type; bh=XqtLqw5329DmSQfIZ97wQcsPfrI3RrJ1xo0vGF5vAKA=; b=pFoh1fj5y+mAh6u0Re9hvnRfG8mQP4A+VCS8o8oatud3SM4lxHVK3p4jtVdAd/ f7Ba/2Z+uPIbY6qa6Q0u8xT7K604BYH80LaTjSD3lcN13c2dp2xPC7uN4SnsP5Q4 jVQ1XcBBQpTtrwWjkK2WTCMrpTECtuO4thb8W2uGJwQss= Received: from [172.21.21.216] (unknown [118.242.3.34]) by gzga-smtp-mta-g1-1 (Coremail) with SMTP id _____wD3nzTOvF9mJD+PAg--.13775S2; Wed, 05 Jun 2024 09:18:07 +0800 (CST) Subject: Re: [PATCH] mm/gup: don't check page lru flag before draining it To: David Hildenbrand , akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, baolin.wang@linux.alibaba.com, liuzixing@hygon.cn References: <1717498121-20926-1-git-send-email-yangge1116@126.com> <0d7a4405-9a2e-4bd1-ba89-a31486155233@redhat.com> From: yangge1116 Message-ID: Date: Wed, 5 Jun 2024 09:18:06 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <0d7a4405-9a2e-4bd1-ba89-a31486155233@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-CM-TRANSID:_____wD3nzTOvF9mJD+PAg--.13775S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxJr1rCrWxuFyDJry3ZF45GFg_yoW8XF1Dpr W8KwnxKrsrKFWakrZrX3s8ZryFy3ySyF48tF13Wr129FsxXw1jkr1Ika13uay3Gry5u3Z2 9a15JF1vvFs0vaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07boDGrUUUUU= X-Originating-IP: [118.242.3.34] X-CM-SenderInfo: 51dqwwjhrrila6rslhhfrp/1tbiWR70G2VLajynIwABsV X-Rspamd-Queue-Id: 1F6EDC000D X-Stat-Signature: zmrx3x4yaz8fyn5bn54x9bkegrxymrge X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1717550298-187497 X-HE-Meta: U2FsdGVkX18GLCgob2TDJo1P3H6QShP1wXoV096yViw7IINuSh8Q2sFnHNf6VBKwHwddME0JqE06LFIjnt09BsoJlDQ6USQP9p5XMEfwYhKsCCNRAgkr3mLaT6z/jgYnZvRcuLQbDVlCik68BRcvxzIdwjczEzc8f6SLpU8KikMbRJwTpZ0cOJofxct+1grd5dpn/AaY2Qibdpuajmm9Vu1mnYHPtryFT6c69KuyJ5JZzYqQFKOoKjJAmTe/s83JoAa69gOUoOOfBpEjjsPTIPZJSSgqyPDzLlg1HsDKPIQ2cpXni2bGXQn1ga0ZzFrA3ECY+5RKuoPO3vNkQ5RNRQBks3nh3W7eX3z4OnVdNbqa9S5er+gfxLmnAbj+WFTGbf2scndBLh7i3uGahVTclLb6v8A0xgpD8yHDe2nKelUjtaV/RYuMAIcu46l2gOC5XQeijulf/bmjDZtAgFbRqFqJAUi7yHR/8XhIYbxHc0Kd2MtXdipDPzgH6E2v2d48pe8jq+AWy53ApuH9kiV1F5bQH0rLMTH6H/9OD+BL9ZAZqWhyMe++Rmu5mYpHrH8vraOJOYggTZqWHo16sfkd9EEce5F9KsN+/IKLCvEPF/gAY192npWgM90j7ApIRe5HeE68GM2ZmfZilq5mEyXe0dKu+8WXpeDq89vpFUuL73eyFH+JVIYyRQDhlGfCRdbMyn92Spkr42W5emXmhpOKxlCkA/XX/GlXWpv3GuDe2D8nZA+Epy+6VtQmzYlKPT9A9weqUDv4U3N8Dsfw9qp0vr1ebLgauiTtDWxxBFxp2+KcyCk5EXvf3qqzy9je0Fm6wISgTvaR9s1lCeBWsasH/Of92DqVY1sn9eRcoZYymCgdAegFDrpchReOv3CgLCJmfHL/koXzy4q1hzalHAhyIZyJ1uspQE6w98KI3hVULe6kNCS72KpUS4zsaTGeGI9wcdUtMceJ9uQF7Agfjec 1up9kJ2t zWw7RyqiNjQBImN3YJKo68CemBX1JDcVYAYqN2E+ZS+cV/ZeBPEV2XwroqUn2d+TGrhOyBepF3DbvUBpVGpB0qNYBnSHR3hbMTRCDmiIHKsInFlTZ1tVvOZV1SCg29nPPvbweXiYx4mt6qimJSlJMpRFtha+3VdIN36IyGOCYxsXx6ptMXwQfSddJ9rmBGAuIxzLubfJ11jJN81lDY509X1dQ+c7Xv3D53Lm5B4YRcBxBg031lQ1H2wDzJRwAluNlG6Wtu6+4Z2MpWXls3++Of0xkLufHskeX8DBOTSq+/pcAEX9hqGR+QKVaFLqv3o02oetShN64DTtIpQE= 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: 在 2024/6/4 下午9:47, David Hildenbrand 写道: > On 04.06.24 12:48, yangge1116@126.com wrote: >> From: yangge >> >> If a page is added in pagevec, its ref count increases one, remove >> the page from pagevec decreases one. Page migration requires the >> page is not referenced by others except page mapping. Before >> migrating a page, we should try to drain the page from pagevec in >> case the page is in it, however, folio_test_lru() is not sufficient >> to tell whether the page is in pagevec or not, if the page is in >> pagevec, the migration will fail. >> >> Remove the condition and drain lru once to ensure the page is not >> referenced by pagevec. > > What you are saying is that we might have a page on which > folio_test_lru() succeeds, that was added to one of the cpu_fbatches, > correct? Yes > > Can you describe under which circumstances that happens? > If we call folio_activate() to move a page from inactive LRU list to active LRU list, the page is not only in LRU list, but also in one of the cpu_fbatches. void folio_activate(struct folio *folio) { if (folio_test_lru(folio) && !folio_test_active(folio) && !folio_test_unevictable(folio)) { struct folio_batch *fbatch; folio_get(folio); //After this, folio is in LRU list, and its ref count have increased one. local_lock(&cpu_fbatches.lock); fbatch = this_cpu_ptr(&cpu_fbatches.activate); folio_batch_add_and_move(fbatch, folio, folio_activate_fn); local_unlock(&cpu_fbatches.lock); } }