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 CF43AD11706 for ; Fri, 25 Oct 2024 06:56:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 65E686B007B; Fri, 25 Oct 2024 02:56:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5E7316B0082; Fri, 25 Oct 2024 02:56:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4608F6B0083; Fri, 25 Oct 2024 02:56:19 -0400 (EDT) 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 261596B007B for ; Fri, 25 Oct 2024 02:56:19 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 024D7C0568 for ; Fri, 25 Oct 2024 06:55:57 +0000 (UTC) X-FDA: 82711215426.02.DC89E09 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by imf03.hostedemail.com (Postfix) with ESMTP id A7CC520014 for ; Fri, 25 Oct 2024 06:56:07 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=bKz2ExqT; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf03.hostedemail.com: domain of mhocko@suse.com designates 209.85.221.47 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729839337; a=rsa-sha256; cv=none; b=6ob0JmWBAAgstI3z2B1hxd1hJvHdJKUadSQATJ2TZI3ldyjJMpqd/lkL3BN/SM8EhLvto/ oIhURr7yAmtNWWdqOQM+6s+twUPwjgJTjh5baMGRVPYYe+0Uz5931MUZnnqZGWI3WBF/AE zkdlFgddjHHAvRjN3JW1nryPw37Jim8= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=bKz2ExqT; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf03.hostedemail.com: domain of mhocko@suse.com designates 209.85.221.47 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=1729839337; 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=sTe9mW5h/PuKAECzVf3PYOF2hJitcmVtXP47DBZfOlw=; b=qgE1JnJ/gcb86uw9h5SaFrPpx/wbUAMd5UfTlo9aCcmIQHX0agGMENTX2MqaC6k0ErRTc5 1fSl3qYEa3PedWWnbd4NQBkIhrXqP6tnwfPnoIX/ap5mQRC2a8J7BwBHOtFFmw1ktlxvXy CsV/YEYNRAlcKVtwUsVhAaEO+jObwx8= Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-37d4fd00574so1039509f8f.0 for ; Thu, 24 Oct 2024 23:56:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1729839375; x=1730444175; 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=sTe9mW5h/PuKAECzVf3PYOF2hJitcmVtXP47DBZfOlw=; b=bKz2ExqTJuoNaqHzESCLyM4XIXg8zfrvxsSDbAC2r98hlLOqcuYipfW30z6GgbdABP MA963hPQY+QchkuLxZUPr/p7c8+qzVcnol12b12Cl0ZZSoSw2Csm7qsp7Ph6gkqIyXbu qzDUaqf5l2GsMYeLo4TiliT4D+NydI+ykO7l8SswosdDz66ugEv8U7biY7zZW+UF0wPm rNDqSSU9YUTBYKxeMsQ4cRu0uUFD5+Xfogh8Kgah3NWnS10z3gz8co5kbp0xR6laR3Vm fVzl/9lW5FDqGyfBsjlwrshZ59et7xO59CpIdf6ugdpSz9zo338VhWWQRl5EKvbQnfv1 Z5nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729839375; x=1730444175; 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=sTe9mW5h/PuKAECzVf3PYOF2hJitcmVtXP47DBZfOlw=; b=fjFjGe/Wbkc+9F2XBj/r10ke/uZtwjTKqUYWKonV6nNdBmkOYnn02H4CCZwD69VLXv LlGCzKthnfpxVjktzreBs5KEKwUT4eWUfgeSRcGLlU9PWR3a1aJq+mGpA4jp+XEdxI6V 2qFKG//O07UFgT7T+RR3WMJhmFoQezcpMisRILcB8gMv8CXVDPKqo7ME0t33HzTlbLJe 3pfutZzGiOEZMseXdX60BtDdAg7G/o9WuBsCkm/18uDD0ybaIrq0xMm9m/q8+mKnKw66 /J/SszP2I8tVr/2RSnlNFj4EREFs/gmQuTNEv72sNZAHn1va3FNEZhF/UG7Upct48ssP V7LQ== X-Forwarded-Encrypted: i=1; AJvYcCWwo2EcNfJNueVJBpEyrFVgswcJDh1JsjrhYJ6KFFKD00cwnnSdbiVRaoCxNj4HCTsmRMHGHTaoEQ==@kvack.org X-Gm-Message-State: AOJu0Yz6PDtbRFDiS66B+j1whXapd6XZklE1pGSjQmh6XhZ/sBBFppZz EcZs6sDNCFku3IvW/IHjsZrk3PBWhZJzPQhqYq2HuvxB9OD4R+0VuEu0rIlVSDo= X-Google-Smtp-Source: AGHT+IE0m4dKzQ0gdgNM1YMMDkWjtRcILPbXQDIuhEVhrT0m4N3QefoLH4rvCAehNcVFfiNMs0Kh8Q== X-Received: by 2002:adf:ec42:0:b0:37c:ffdd:6d5a with SMTP id ffacd0b85a97d-3803ab6710amr3757362f8f.6.1729839375159; Thu, 24 Oct 2024 23:56:15 -0700 (PDT) Received: from localhost (109-81-81-105.rct.o2.cz. [109.81.81.105]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38058b70e0fsm745692f8f.73.2024.10.24.23.56.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Oct 2024 23:56:14 -0700 (PDT) Date: Fri, 25 Oct 2024 08:56:14 +0200 From: Michal Hocko To: Shakeel Butt Cc: Andrew Morton , Johannes Weiner , Roman Gushchin , Muchun Song , Hugh Dickins , Yosry Ahmed , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, Meta kernel team Subject: Re: [PATCH v1 3/6] memcg-v1: no need for memcg locking for dirty tracking Message-ID: References: <20241025012304.2473312-1-shakeel.butt@linux.dev> <20241025012304.2473312-4-shakeel.butt@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241025012304.2473312-4-shakeel.butt@linux.dev> X-Rspam-User: X-Stat-Signature: 3hb6nypgciztk4axzxj5u3tp3b6kjx6c X-Rspamd-Queue-Id: A7CC520014 X-Rspamd-Server: rspam02 X-HE-Tag: 1729839367-853289 X-HE-Meta: U2FsdGVkX18jqmqKD+M2lduXmhn9R9i3P6VZlnt+MTOj4axexHX+PHLsOGD1TjfLNptQWZA0ijNgb96XPn8W216cGV0wsYMkBVGxP8rVxF/O4We2AfNs0pgxrABr4t9vjroeyxor45DsAPZdrJlUVxYco7JflZGx2wQldV3P1Iu8i9WokiKiZQ8bwBCRK9eF0z3aPS+HNeb3ipZ/VfBHZDLqquwAsbPwSPytdDH2PchUZbQ+gB2H3L3H80Cgoc2ZtksdYCHy9+yfgTEwZIxXcLvG3XbduUgHt608PJQIH6VDEApG5oJXQ+blrEYtpD96XxJTvZfLIythcKWh8I6ipEvt3QYvGUcUZ1M1jgL2NVZD0rFH46woNw+IoSm0yrwlsrSKnhuy7rPvy1w2/5mvvUhzc+LJAzJl2fqESua9tiy6dnUg6Q5x4njEz2D/F5Qqe8rl+qiJ+Q/HN6VJiPRTEA0BjnhxB6eb64B25V3uSbfIXFE4AMuIl+9xjIDiwMMiauEccaTgRMDK8v5P7GAT/ckKG5/f3+mFdxb71K9Xvms/EHsBVqUUXA3Fn0Xy/N5GRmRrJKqKlMmCgZfJRy78ydi7ciaXrIvUJT7zjzO/RgmThIGhONud2R79yT8gwheXJumfu9/1EMlpUV9r0ALhHKqDk1o45y/gD9WSeeuIgwK3E0v9TycT1UGoAwWD6s1w8PFMZaTgaZnEdUTvChu3aptN+ujHSzDmhLfkIFT6K6CbzWY5MffKvhThg5P3f9ofSn37lVF2BcfqPwaK09gnudCT55UYd8laN1ifYBoaTOriZRc9eSFk5YWvEY2f7EZ0j4TZc0h4cFrTcmTZ1A9msqwkJjp93hax5AIMswhp2UWpWt7Az/U5diWYoJPPIXX7EL5Mt3rTmFOyb5G9O7i2WKYEc69x7THdegBECSLEyIOBEm7F+YLSIauTv2r0Y1paKcEzPVvof3F+LIvxIGk JxbaF0g9 h3MG8CEWlaV1vv6tCEmEVx4T6AltlacW6SzZExskACgFw1EpUfYpMw3H6P7TromzFo8ZPjhKqq9oNXhavk279ZS1/HULMr8sgbUhyCgUAYww+46u+uNAdwbCDCY4ofnnnhRGQHckrK8NyhqT3cQI8Do16pWtgTlKqcXGXt2Q77qmYGLAc8Hdh4RBAEf1mp6+CH67vmtT7bNXYGHor2CO+zAriVVs1XQbjtB72jsTIzVoTbR6J703oPJuq1Lqlbi1hjgY6D2+kjkaZjaTeNagHh9nEoFISWnYvh584qXme3UStDXCU8vR6wG4DSXvUVY7QbLVn5GQgHavEQi0fU34Ee5sOYl7AAJYBzE6lVZdz92m2MJ25OTcs1YU+vw== 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 Thu 24-10-24 18:23:00, Shakeel Butt wrote: > During the era of memcg charge migration, the kernel has to be make sure > that the dirty stat updates do not race with the charge migration. > Otherwise it might update the dirty stats of the wrong memcg. Now with > the memcg charge migration deprecated, there is no more race for dirty s@deprecated@gone@ > stat updates and the previous locking can be removed. > > Signed-off-by: Shakeel Butt LGTM otherwise Acked-by: Michal Hocko > --- > fs/buffer.c | 5 ----- > mm/page-writeback.c | 16 +++------------- > 2 files changed, 3 insertions(+), 18 deletions(-) > > diff --git a/fs/buffer.c b/fs/buffer.c > index 1fc9a50def0b..88e765b0699f 100644 > --- a/fs/buffer.c > +++ b/fs/buffer.c > @@ -736,15 +736,12 @@ bool block_dirty_folio(struct address_space *mapping, struct folio *folio) > * Lock out page's memcg migration to keep PageDirty > * synchronized with per-memcg dirty page counters. > */ > - folio_memcg_lock(folio); > newly_dirty = !folio_test_set_dirty(folio); > spin_unlock(&mapping->i_private_lock); > > if (newly_dirty) > __folio_mark_dirty(folio, mapping, 1); > > - folio_memcg_unlock(folio); > - > if (newly_dirty) > __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); > > @@ -1194,13 +1191,11 @@ void mark_buffer_dirty(struct buffer_head *bh) > struct folio *folio = bh->b_folio; > struct address_space *mapping = NULL; > > - folio_memcg_lock(folio); > if (!folio_test_set_dirty(folio)) { > mapping = folio->mapping; > if (mapping) > __folio_mark_dirty(folio, mapping, 0); > } > - folio_memcg_unlock(folio); > if (mapping) > __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); > } > diff --git a/mm/page-writeback.c b/mm/page-writeback.c > index 1d7179aba8e3..a76a73529fd9 100644 > --- a/mm/page-writeback.c > +++ b/mm/page-writeback.c > @@ -2743,8 +2743,6 @@ EXPORT_SYMBOL(noop_dirty_folio); > /* > * Helper function for set_page_dirty family. > * > - * Caller must hold folio_memcg_lock(). > - * > * NOTE: This relies on being atomic wrt interrupts. > */ > static void folio_account_dirtied(struct folio *folio, > @@ -2777,7 +2775,6 @@ static void folio_account_dirtied(struct folio *folio, > /* > * Helper function for deaccounting dirty page without writeback. > * > - * Caller must hold folio_memcg_lock(). > */ > void folio_account_cleaned(struct folio *folio, struct bdi_writeback *wb) > { > @@ -2795,9 +2792,8 @@ void folio_account_cleaned(struct folio *folio, struct bdi_writeback *wb) > * If warn is true, then emit a warning if the folio is not uptodate and has > * not been truncated. > * > - * The caller must hold folio_memcg_lock(). It is the caller's > - * responsibility to prevent the folio from being truncated while > - * this function is in progress, although it may have been truncated > + * It is the caller's responsibility to prevent the folio from being truncated > + * while this function is in progress, although it may have been truncated > * before this function is called. Most callers have the folio locked. > * A few have the folio blocked from truncation through other means (e.g. > * zap_vma_pages() has it mapped and is holding the page table lock). > @@ -2841,14 +2837,10 @@ void __folio_mark_dirty(struct folio *folio, struct address_space *mapping, > */ > bool filemap_dirty_folio(struct address_space *mapping, struct folio *folio) > { > - folio_memcg_lock(folio); > - if (folio_test_set_dirty(folio)) { > - folio_memcg_unlock(folio); > + if (folio_test_set_dirty(folio)) > return false; > - } > > __folio_mark_dirty(folio, mapping, !folio_test_private(folio)); > - folio_memcg_unlock(folio); > > if (mapping->host) { > /* !PageAnon && !swapper_space */ > @@ -2975,14 +2967,12 @@ void __folio_cancel_dirty(struct folio *folio) > struct bdi_writeback *wb; > struct wb_lock_cookie cookie = {}; > > - folio_memcg_lock(folio); > wb = unlocked_inode_to_wb_begin(inode, &cookie); > > if (folio_test_clear_dirty(folio)) > folio_account_cleaned(folio, wb); > > unlocked_inode_to_wb_end(inode, &cookie); > - folio_memcg_unlock(folio); > } else { > folio_clear_dirty(folio); > } > -- > 2.43.5 -- Michal Hocko SUSE Labs