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 763B4CF856D for ; Thu, 3 Oct 2024 08:16:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 919226B0107; Thu, 3 Oct 2024 04:16:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8CA4B6B0371; Thu, 3 Oct 2024 04:16:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 769A76B0372; Thu, 3 Oct 2024 04:16:38 -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 4BCC66B0107 for ; Thu, 3 Oct 2024 04:16:38 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9DC431212B6 for ; Thu, 3 Oct 2024 08:07:38 +0000 (UTC) X-FDA: 82631561796.14.5C9D9A1 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by imf18.hostedemail.com (Postfix) with ESMTP id 8D48A1C0006 for ; Thu, 3 Oct 2024 08:07:36 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=bflERYHI; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf18.hostedemail.com: domain of mhocko@suse.com designates 209.85.218.42 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727942714; 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=IUXT90gNIBX5IvviqObIkp/Cv4Bsq10uYsHWhjiiAh8=; b=Xv6h3lVq4qshB3Bo2zrI4j/ulQMsdVc8Ez/wQsTWdYS3Dp4Ol4wIuQmugWbUvS/05TEl+v THf+/ySsXSQxJMOC9rrbZNcq8QfZrxvAoq7HqJMJHhOKE51y7Yfp6xYMUdbywgAD3C6j9g 8pLNhEmQz6kB3z0hroNAY/2gukb6qZo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727942714; a=rsa-sha256; cv=none; b=q1KjXPfVRwEmRhODmcx0CZKsWvSesgBlHHwpXyGE6qXsMl4IqMJvaMioOEoPvxW4sd3AfW ezuflVW9Ka99BnClnTFP96hTOX+sUhLTLE+EF/iz02hxk2A8PmXQ1yaSuOe71sbEBWgiNY HTkvB55QFOAGGYpE9i7AT6rn3awIhmk= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=bflERYHI; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf18.hostedemail.com: domain of mhocko@suse.com designates 209.85.218.42 as permitted sender) smtp.mailfrom=mhocko@suse.com Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a8d2b24b7a8so330092066b.1 for ; Thu, 03 Oct 2024 01:07:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1727942855; x=1728547655; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=IUXT90gNIBX5IvviqObIkp/Cv4Bsq10uYsHWhjiiAh8=; b=bflERYHIMk7pXYUeZJAXwIFLG4ODW3lMYo+i9KcrfRwXCC4dhQ14BSHFRC3nx8/yoR g4GQqm1L+s23KtIewm2jHGzeU7vKHgdz7Hd0st8IGGxXBPFysRUmSFWSpiZ3SrQX3u2X 0khylTcix8TAsezauOg+gmkJsXxRs54jvFi9wPnS3XL7tu/IxFpjQ3DNG/37J+6x+iBD VOGgoik7tEggoORBQBePySmxmhor+G6R9isLgsyvIUuGb1DGvM3CEm7aXno9moLAy5An O4dW3nYraNHO6K6Q2RYkaFqp23wkEeGWv+4ooMMH0XI3tq9j3LVDqdzsom/prxqv4TW1 CrKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727942855; x=1728547655; 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=IUXT90gNIBX5IvviqObIkp/Cv4Bsq10uYsHWhjiiAh8=; b=Qq5fp/ZrlOoJniKoPgIz5IgXDPiBaXbvtY1FPibhBEMC74a6/XoiO8pndwVpTD3DZn mPSqd5IBjz3lZTJnX+FIIz4WK4CcZyBYxaLAUHggC/61LaMkq6P/XDQJu/TA1YPJ+ZYD gNHxmlMRlFX88EEdvWWQuLIwIIkLanOe25M13aFGDynXRYHEQy0E+oMKLj6psqapO8dJ YuydA2Yoi+LCr0TPhJHfTJduy/ZV9kDW+IZ9Sx9ZoGaq6fr4V3NV0f90N3GtSTz9k5zv AAi/NeqfF1WQv/m4d8CkQOfJPKr/qEC7TgBLDV6MMwfDvsszvx3qEr3OOMONdwGaNDN9 obXg== X-Forwarded-Encrypted: i=1; AJvYcCUYa1UipHbMOR+mgIy0w7LoSg0P50h1byKdarjhKEHIjIHpKmc8OZWJZGAoIj/ez/sao5GwHx5lkw==@kvack.org X-Gm-Message-State: AOJu0YzH0nGT2t8rTSPKj6hf4RYPlnT1dK0pm5NHSSqIONvscKE7lzG0 aHOWw7Dy+HUUyJABecP9TFDilm1SREVGEkTVRr2wzKK81QM57uaQBcXj2H0YCn4= X-Google-Smtp-Source: AGHT+IH+xvuIkjlVxcoyVHYgYNBpVDt7/vBi0ADchIzadfJi4ipmZdVHHgZySHB9FKOCUfMQwLBbLA== X-Received: by 2002:a17:907:97d1:b0:a8a:6db7:665d with SMTP id a640c23a62f3a-a990a0692admr240084566b.17.1727942854821; Thu, 03 Oct 2024 01:07:34 -0700 (PDT) Received: from localhost (109-81-85-183.rct.o2.cz. [109.81.85.183]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a99103b5c90sm48663966b.115.2024.10.03.01.07.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Oct 2024 01:07:34 -0700 (PDT) Date: Thu, 3 Oct 2024 10:07:33 +0200 From: Michal Hocko To: Christoph Hellwig Cc: Qu Wenruo , Qu Wenruo , linux-btrfs@vger.kernel.org, hannes@cmpxchg.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, akpm@linux-foundation.org, cgroups@vger.kernel.org, linux-mm@kvack.org, "Vlastimil Babka (SUSE)" Subject: Re: [PATCH] btrfs: root memcgroup for metadata filemap_add_folio() Message-ID: References: <5d3f4dca-f7f3-4228-8645-ad92c7a1e5ac@gmx.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 8D48A1C0006 X-Stat-Signature: jkyp66gfnetshtk6gxrofsyift6budpz X-Rspam-User: X-HE-Tag: 1727942856-922818 X-HE-Meta: U2FsdGVkX19bvcYHU39tv7CNrPw/zJjiq05mkScS5T5DXkKkc1ss0/oZUdNqYLIMcNOzVcarhHRqBtJXcg9yrrBpXMlS4TudnN9VY21wUNZg3aNnY6WaiJJ7Cq5KrnVlJ8JUHwngmXfU1fCS2cUW/ZZvTDhMnA2O5vgUAuv4G19ZclsFcMibLlgl3lnS8nN+1deemqPhcBLOAEqNzjda1wpM5jopN0CrM7Mb+BqaKgjeVTc+/jZMaYMUjW/pED5U+ftZ/zFu6KmR3ANkOOn/Gw4X3E1Q83yiCOpigbswpjmhIxDMd926kpiaHrbKUsXO/sYKcze/iLBR0KiZpITw/EsaocALfwTMvcmiShQUfyIHsVW0mVgUh57HVP+ZxFM738kkzztJ9V8sAPuBbhVBlJChDW5woPfnPRE04+1TxBxUVUUdPUuZ5YxpDgNg3y4gyHxJrqUcM/DPu4FYuhDrIyCRwUH2AlZHdZUEu7IItcBKpWfRaAbRENms6hzrt4wCqqmk4FMtl0RckSpKGjQhWEMkt6/cTutxwNWWx91SVwDGzmOorr0QCnk4rE9aKwtefVj5eOCawSCJsoWynB60vR+pjduTiqW2aX3NQ6JIKpA2wzNc1DTszApS7rVk/SxLtmEzB5q7CmZYTRmi62S0Ufgjkh1dLIYIqTEqmdTdLzWZODMvc30K3421Rd3uNuhlfnn5sRsDQqEZHHCkg2jKVJcSaFmKt6UoPuOAaSVJ37TblUGbA6QmvIb1BBNeodqXD/l11/zKDva1sGnVdSgRFUB2RjCbf/8OXS/mDKCgR13jllLTGc2E2G+M1EWLXDlwGg0DUXPOHOpphtWAaG2JXEAxpRkZ76wIkUSM9jBNBlf+nuErdv2MWx7E7XKkqhSfOucE9ItN3lc+1c5A8RUOYcrjOk0mq5EF0BSN7MKb0HFpbRox/s7kCS0qNHorem8ucUVCi1bWgIwUu1xeXgE V4RGKqKB s674PpOyDv4ILrvOM1HUxsdI3Iab6ELJOWN2YWDY2v6vkHAPPOn/N35X/+52jqmmK2p+xoWKZvdcWTTHmyWdaALXe/M8G0bxJ2+Z+6FZ/zJUxKtZCc/+fCavbQkHP7Ie0E69FuQ0SV6guKW264hB9oLZSBRizBLemv0hnGLRLYJi/xBvCUz0SzUOjngVjBUZPEE+9ybPruJYIf8a1YPVtqM84aJWF11mDQskznXkEbi0mhE7S1M/Tj4dCc48Ut4i2X0UU1KMiKDXQA8L5EBMXcK4msYfoJ3+dc34RXJW3Zm00apg3pieSRkN1wFLLzgLMYuG7OrbbAgtaTuH0NhTEOfmBoRBv90B6hD35yik1qBzqMak= 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 02-10-24 00:41:29, Christoph Hellwig wrote: [...] > What I'd propose is something like the patch below, plus proper > documentation. Note that this now does the uncharge on the unlocked > folio in the error case. From a quick look that should be fine, but > someone who actually knows the code needs to confirm that. yes, this is a much cleaner solution. filemap_add_folio_nocharge would need documentation explaining when this is supposed to be used. > diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h > index 68a5f1ff3301c6..70da62cf32f6c3 100644 > --- a/include/linux/pagemap.h > +++ b/include/linux/pagemap.h > @@ -1284,6 +1284,8 @@ int add_to_page_cache_lru(struct page *page, struct address_space *mapping, > pgoff_t index, gfp_t gfp); > int filemap_add_folio(struct address_space *mapping, struct folio *folio, > pgoff_t index, gfp_t gfp); > +int filemap_add_folio_nocharge(struct address_space *mapping, > + struct folio *folio, pgoff_t index, gfp_t gfp); > void filemap_remove_folio(struct folio *folio); > void __filemap_remove_folio(struct folio *folio, void *shadow); > void replace_page_cache_folio(struct folio *old, struct folio *new); > diff --git a/mm/filemap.c b/mm/filemap.c > index 36d22968be9a1e..0a1ae841e8c10f 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -958,20 +958,15 @@ noinline int __filemap_add_folio(struct address_space *mapping, > } > ALLOW_ERROR_INJECTION(__filemap_add_folio, ERRNO); > > -int filemap_add_folio(struct address_space *mapping, struct folio *folio, > - pgoff_t index, gfp_t gfp) > +int filemap_add_folio_nocharge(struct address_space *mapping, > + struct folio *folio, pgoff_t index, gfp_t gfp) > { > void *shadow = NULL; > int ret; > > - ret = mem_cgroup_charge(folio, NULL, gfp); > - if (ret) > - return ret; > - > __folio_set_locked(folio); > ret = __filemap_add_folio(mapping, folio, index, gfp, &shadow); > if (unlikely(ret)) { > - mem_cgroup_uncharge(folio); > __folio_clear_locked(folio); > } else { > /* > @@ -989,6 +984,22 @@ int filemap_add_folio(struct address_space *mapping, struct folio *folio, > } > return ret; > } > +EXPORT_SYMBOL_GPL(filemap_add_folio_nocharge); > + > +int filemap_add_folio(struct address_space *mapping, struct folio *folio, > + pgoff_t index, gfp_t gfp) > +{ > + int ret; > + > + ret = mem_cgroup_charge(folio, NULL, gfp); > + if (ret) > + return ret; > + > + ret = filemap_add_folio_nocharge(mapping, folio, index, gfp); > + if (ret) > + mem_cgroup_uncharge(folio); > + return ret; > +} > EXPORT_SYMBOL_GPL(filemap_add_folio); > > #ifdef CONFIG_NUMA -- Michal Hocko SUSE Labs