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 652DDC64EC4 for ; Fri, 3 Mar 2023 14:59:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9D7876B0074; Fri, 3 Mar 2023 09:59:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 987E76B0075; Fri, 3 Mar 2023 09:59:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 84F046B0078; Fri, 3 Mar 2023 09:59:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 755056B0074 for ; Fri, 3 Mar 2023 09:59:21 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 46F0E809FC for ; Fri, 3 Mar 2023 14:59:21 +0000 (UTC) X-FDA: 80527895322.04.912C066 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf17.hostedemail.com (Postfix) with ESMTP id 4442C40012 for ; Fri, 3 Mar 2023 14:59:18 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ZKuiy8qi; spf=pass (imf17.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677855558; 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=WWWXXqiDyIc6Rr6qCB3dXr2H5ZRa+ZVUM0XNMHhCm9k=; b=VygjeMjelTQgsgKuQz5rXtFOIqww1LnecEVJ2NNqPHhrhb23k2WSE6w6TN+frd8jsQuqZ7 v6DjpDtymMWnWIYfJ1pzc6l21/4LbEDt77P638y/00DPr+mXLY26iExPYPFmX7U9uOb+wY HWjWMyzBJGnOT5fbW3AKYxwyrfWP05s= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ZKuiy8qi; spf=pass (imf17.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1677855558; a=rsa-sha256; cv=none; b=8XZADEXzAV5T94x0QUAkTERz8zQF2ki8JE1iNnAcKjvfvQz4tgBLRgERlNbTLqRi4Wu2j/ Rt/rCeYjGACgPEWlhAvXrV6V2WEHk2LeVv5+6M55N7D25ahcVw5CjYbe3nnTf8BAQbvAvL 2qEh620ZZXSxVZWQ16/v/m4QPRtZFXc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677855557; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=WWWXXqiDyIc6Rr6qCB3dXr2H5ZRa+ZVUM0XNMHhCm9k=; b=ZKuiy8qi01waGUVUrw0STRx6K9GO26ilZk9Uqfyo3aXk39i3hc6T189TmicDrvaVk1u76V rtbaOEAPAD5eHaycHxvjQxXjkPh5IbQGiw0wUujxCpPQMi9nK77tvqsUT4V6lgRNvUtunh qC9I6KvZ/E4ADLj0DGSN+ZUXsnjTT/U= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-508-0uVzC_J_OrWqfjM8AsV_Fg-1; Fri, 03 Mar 2023 09:59:16 -0500 X-MC-Unique: 0uVzC_J_OrWqfjM8AsV_Fg-1 Received: by mail-qt1-f198.google.com with SMTP id w16-20020ac843d0000000b003bfe50a4105so1608772qtn.10 for ; Fri, 03 Mar 2023 06:59:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677855556; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WWWXXqiDyIc6Rr6qCB3dXr2H5ZRa+ZVUM0XNMHhCm9k=; b=Q0Hh8eIFmG8vxpK6vYjBahdHqxrZ07tkek7jcTp9taD2LR6fd7XOfnIzEx/mn//t2A m7cZOkc2s3NtSLjt+gnuJp58UvzSqUE9ltYT+YPYqHi294I4TtcxC34oYSvszaGPswu1 P3J1GRls9kCYdbWij3Q6xIbNYHhAapS5WyHbL4rAdaR/2vE6iWJ0uuXxkkwmFOh7ZpDJ rEKYzG4/TzBDA/Esu3tXrszFICR2ITh6560jru1rGlmG/FQ2PIgRdYa8SCehdQTnTPhR TbtxrHfX0sjrb2uxXePT7h7PKUfuPt+jOZbkM6XsT8/S5GnTnQtaKtI0F/Zhs/IpgkMx WSxQ== X-Gm-Message-State: AO0yUKUo6P0pFIbqugVQakT0rFtR6aVNxgrZfAZOSSLHLcKbLUbmx3Ml XcHRPEj3MSP+RqmDaYlp6yYqzl36yDo+viRqYX4INNdisZ4h16moHHlF+9fZ7NdO1nJEfCujh1F jZ8Ap9QRZN90= X-Received: by 2002:a0c:f251:0:b0:56e:99ea:966c with SMTP id z17-20020a0cf251000000b0056e99ea966cmr2512251qvl.4.1677855556048; Fri, 03 Mar 2023 06:59:16 -0800 (PST) X-Google-Smtp-Source: AK7set+ZeM2sghlJ2Lwmz8RHXDFH1s49AZ4Mnv5nWJG26/AZtTAFptUUX4noZn/0olp3Qqjd2BrzPw== X-Received: by 2002:a0c:f251:0:b0:56e:99ea:966c with SMTP id z17-20020a0cf251000000b0056e99ea966cmr2512232qvl.4.1677855555777; Fri, 03 Mar 2023 06:59:15 -0800 (PST) Received: from x1n (bras-base-aurron9127w-grc-56-70-30-145-63.dsl.bell.ca. [70.30.145.63]) by smtp.gmail.com with ESMTPSA id q79-20020a374352000000b0073b27323c6dsm1757032qka.136.2023.03.03.06.59.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Mar 2023 06:59:15 -0800 (PST) Date: Fri, 3 Mar 2023 09:59:14 -0500 From: Peter Xu To: Zach O'Keefe Cc: Yang Shi , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , David Stevens , Johannes Weiner Subject: Re: [PATCH v2] mm/khugepaged: alloc_charge_hpage() take care of mem charge errors Message-ID: References: <20230222195247.791227-1-peterx@redhat.com> <20230302232150.vvmszlrdzqm5ndjq@google.com> MIME-Version: 1.0 In-Reply-To: <20230302232150.vvmszlrdzqm5ndjq@google.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4442C40012 X-Stat-Signature: oi5rwksbqhbdwwgpray6gk5rob5eqkwd X-HE-Tag: 1677855558-993125 X-HE-Meta: U2FsdGVkX1+0DQPqFj6ompS/JPJURuB7HFIUQxYOU61LolJ2HmgzenTRqGCnZGdKk0u/cNKGjgnBh4VwMIGBdntUGNRPnyeDnMMhIf1jXgLTAnB6cIgVFh0OfrThc35kPGp5QVcn+Z3Jy1JWdVneV/AkSDzDvSTL65zlSmTFwDnSWSO7ygQd0yUVTcCpVc5V6V74u1oV77X9yxXC/nhLKlh0xCNKk4ROw0NtLqj6K7jlyiddwlyG1wn5KNIejETT+DQL6uuHw0NqPWhD1al64ANWiYBe7RU+OXGWp4m2yNCBaAfqg9DoxpaXrUH+BX+W9sOwB58eYQpngLPp2o9EpRSGBmkYMTXu4HXEeYuG++8HsTYUgKT/NnDVJlULBJ3mv5MQax1DJX2UObWPBPRDB1RKM65QyKTXO3Tw3NrAlMsAb8OPV8SUkFylJruqE0/lZkJcHYwDGyZjGjhPB7MktQXJtZPWP/JaEoHbU5CJA2PX4LoOIINGdxe2Jj7u0E43jbr0jOsu4tq+Z0VjPVVKWMDZA04QMBrnbb0JZPkbD+FCZmF2wQYXxktv9rYfYw8joubDOBbAO5cesaR/RsgJEZxkZrUFdOtB5SaZJXgaE//b/MO+bf15rd3D8YrCsfo5DOWQUXSTOqeynKAD1K1YjBp3zXZDJC4Y0K5VUR/XL+F898Em9xsAxpEvD+HmA69TbjwLjk1GA0tX540Qze0XoB8lwrx4aFpP1J8AMJ8RVLhilPU0LWo86/59NNXaCJ9xLQSXwwn4dO2xSHZN+DQjbAO41bf/kGsSxvRhk+WwD/7G8hhXANbYFuGulwWt3wVKuHKISKp6WpokCh094HA8gV8IcYpI+AZo6F3M19PX0/u8+Oe2qcJkHXtPy4WaSa/CwgzzzQ7mZbVSi7LQI0in9fLEkMPI91iAPK5A21bkCfALKDk9QoPzvvaMMwUoy1UdSxn8VCtaDv4WqV9paOz PqecfkNQ GTi6leuZ1A9qBvV9jQ7gofr8h5mEDYgpzLi4OlEADGZ56F/n+gdJJHcLGEZ5oaDdN+DfAl0DrLsEy96t5eROVuHp27UM9wHaFYTP611oUo2GKSm2qbqKMBkdQORmba6AmgRqkjjksfauoL1d0shS+FbUnNtkKsZscyHPEuhTEgnmAcPmjoGeZmjOea04ql7AYB9CIr08losKVvCZNJn3hMfwGpiXfCk0IhJLr3+OqLl1Jun+7i9Zz1S2e25iJ47Amm0kvccEx4keTYuCifQSo1wAW4GNYu0lGvC9xY5uHkkvSHM0maEENdwPsYR6C3P22nysSq7i4CDbdZ2MzE3hHn6EXGtbRJjgtGUByUD533YrkH36Adz5MKJ54E63dybtzUEbAzKEoAZdOhHg/2dKXn1rE/J0Ld/i4MqILL20phduWKwBzCccyU5e792wiw1qVW6VpR2wvSsXhystCxKW5hxIO6J9Hf9Q1xXcPKWl+9cJFpGtU6DZP/VUC6cNAG2anMBeyyijpU/hESAnFLnXpYsALCakaoiqSv0qM9nG1RV0PBQxVwAJlr64WSPd7SsPomgNODc/4tV/lYf6eEwFSWe60VZQGgPgfNe8EyFF6fCKvQ8A= 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 Thu, Mar 02, 2023 at 03:21:50PM -0800, Zach O'Keefe wrote: > On Feb 22 14:53, Yang Shi wrote: > > On Wed, Feb 22, 2023 at 11:52 AM Peter Xu wrote: > > > > > > If memory charge failed, instead of returning the hpage but with an error, > > > allow the function to cleanup the folio properly, which is normally what a > > > function should do in this case - either return successfully, or return > > > with no side effect of partial runs with an indicated error. > > > > > > This will also avoid the caller calling mem_cgroup_uncharge() unnecessarily > > > with either anon or shmem path (even if it's safe to do so). > > > > Thanks for the cleanup. Reviewed-by: Yang Shi > > > > > > > > Cc: Yang Shi > > > Reviewed-by: David Stevens > > > Acked-by: Johannes Weiner > > > Signed-off-by: Peter Xu > > > --- > > > v1->v2: > > > - Enhance commit message, drop "Fixes:" and "Cc: stable" tag, add R-bs. > > > --- > > > mm/khugepaged.c | 9 ++++++++- > > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > > > index 8dbc39896811..941d1c7ea910 100644 > > > --- a/mm/khugepaged.c > > > +++ b/mm/khugepaged.c > > > @@ -1063,12 +1063,19 @@ static int alloc_charge_hpage(struct page **hpage, struct mm_struct *mm, > > > gfp_t gfp = (cc->is_khugepaged ? alloc_hugepage_khugepaged_gfpmask() : > > > GFP_TRANSHUGE); > > > int node = hpage_collapse_find_target_node(cc); > > > + struct folio *folio; > > > > > > if (!hpage_collapse_alloc_page(hpage, gfp, node, &cc->alloc_nmask)) > > > return SCAN_ALLOC_HUGE_PAGE_FAIL; > > > - if (unlikely(mem_cgroup_charge(page_folio(*hpage), mm, gfp))) > > > + > > > + folio = page_folio(*hpage); > > > + if (unlikely(mem_cgroup_charge(folio, mm, gfp))) { > > > + folio_put(folio); > > > + *hpage = NULL; > > > return SCAN_CGROUP_CHARGE_FAIL; > > > + } > > > count_memcg_page_event(*hpage, THP_COLLAPSE_ALLOC); > > > + > > > return SCAN_SUCCEED; > > > } > > > > > > -- > > > 2.39.1 > > > > > > > Thanks, Peter. > > Can we also get rid of the unnecessary mem_cgroup_uncharge() calls while we're > at it? Maybe this deserves a separate patch, but after Yang's cleanup of the > !NUMA case (where we would preallocate a hugepage) we can depend on put_page() > do take care of that for us. Makes sense to me. I can prepare a separate patch to clean it up. > > Regardless, can have my > > Reviewed-by: Zach O'Keefe Thanks! -- Peter Xu