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 79A70D1AD22 for ; Wed, 16 Oct 2024 08:10:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9353A6B007B; Wed, 16 Oct 2024 04:10:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8E3BB6B0082; Wed, 16 Oct 2024 04:10:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7AB0A6B0083; Wed, 16 Oct 2024 04:10:04 -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 5B1916B007B for ; Wed, 16 Oct 2024 04:10:04 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0EE47141A9A for ; Wed, 16 Oct 2024 08:09:54 +0000 (UTC) X-FDA: 82678742076.10.DD431CD Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf25.hostedemail.com (Postfix) with ESMTP id 20FA0A000A for ; Wed, 16 Oct 2024 08:09:55 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=Fyevhnyy; spf=none (imf25.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729066128; a=rsa-sha256; cv=none; b=3I5ZpxDC+DFxVp5My0I3SE50/CZfYbsLtZuPxKT3H1d1Fs0TzKf2gC3XK99u/wOURJWfom hejEek1oSgu8WojbZmRY0sU4t8kShI8aeB22by7q5wbit0anEnN5h7Q90rGO1B7qjEvd0+ odFKsVVIE7r8h/zKgKGss2u0ItGafjg= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=Fyevhnyy; spf=none (imf25.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729066128; 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=mK4b4AlE950gM5FjMV716a/AzZMPsu/yGbdrW2xHaLE=; b=a/BIzUXfbEw6TdICg58i94csBt262WQJbSqFSAGzIWsKDoLY9bSaQSkBS1j+nEaTdLZ3br +aL2RJKsms3SLhm/BigDvV5F9SZ/M7tGAMRQa/NqDGbzz+JlEkmc7e/JckIJu17DlvMUJe bFbXYULQNNq/I5n3x8KKilIY6y3qmjc= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=mK4b4AlE950gM5FjMV716a/AzZMPsu/yGbdrW2xHaLE=; b=FyevhnyyC/sxxwDy3NqIRpJlPp ox3RUGP6It8MRZbjhXoqlpQLFueLUIfb2wzY6ZMYinCBExXABqgiHoD4Ad7fQxVoVqTzV0Cf4UWXR IWL6BYagtlRUMkODBHnkyrMYVCf8ZcghhhggVHkdLfpP8uAFVER9k4idINoyGv5/rQ8LIhsTTgHCS red+OEwOqm71ViLwW4v9ed/6eMWfT44oa4BxTnvv3toUDolgEJ80QLG2zV24gn399tJbMVDs8cUNy NJB0iJgK92gOajA1+GJFEXsTsh6vDV+uozgXd9P2z++FHOQ4Epqe0nZ5z0jBgSBsh0D9Ge1+f8E9a PPwNe6pQ==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by desiato.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux)) id 1t0z6S-00000006kxM-28N4; Wed, 16 Oct 2024 08:09:56 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id A8EAD300777; Wed, 16 Oct 2024 10:09:55 +0200 (CEST) Date: Wed, 16 Oct 2024 10:09:55 +0200 From: Peter Zijlstra To: lizhe.67@bytedance.com Cc: mingo@redhat.com, will@kernel.org, longman@redhat.com, boqun.feng@gmail.com, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [RFC 0/2] rwsem: introduce upgrade_read interface Message-ID: <20241016080955.GR16066@noisy.programming.kicks-ass.net> References: <20241016043600.35139-1-lizhe.67@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241016043600.35139-1-lizhe.67@bytedance.com> X-Stat-Signature: ukn8odqc4y5tib3efaezbyiu76dxat8h X-Rspamd-Queue-Id: 20FA0A000A X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1729066195-708367 X-HE-Meta: U2FsdGVkX18nZnJ9rAIE3jpL7H2mUyTDs4ULju8vzm1XsPFcU0OBv/kmwUUCIIsTrlsQhzYyZ3U1UWtl/qZ7u0sKv9i+dTyAu9Qi5WnH93TQrfuy3YE96RYNC+XVLArKj/G85dgcdXHnL20qTu6wRIPAL7Vx60GEHoJG+KZ0grar8hoEkZVA1eGxNmi92X4DLnwIqch4+P9gRks6od0BhXFS+YSf6HS5/q0NeEYH4bsY4TdNI4imiAYIADQXgBfsYiWmjylj7woilhdzdg+vTkB7qKS0jB32wVzGoqomsK7NUKCoU5WCjM3TafwFvLX9XRlma5Pzdrk2Ag67qzCnwbMWCy58OcjkmdSDLFhdumMiVbWZOiVlIvFHqBObyd2MK77uCWkEtHI9lwdc2i8xFM8FaEjQoOSKncy3z7WzTZZku6XM127fN3+m+oAmWSYSfBEOjfxXzyxsGrRzr3ShKIjKb1WG1zSVJDh6jxeePRjABB96GP00GDaPGDKk5EDmVhIqCL7G5/mGcFZxgCuQis/hH/NIydt3Lm+C0iV52038ykDdHwCi9ry7l5+1eLA6urQUqzmILXi1OjpWpbrnsP73fCdH9gmWdTqfDpo+4oT3W5B8ZyIivAdue023d0GHYQIu+KGDVI1avciKwjYrMCKxJhhgTUxF2fEG/tw3zLEcVAEbRxMF0bHBZ9eoI7p/oP71tQYYrmwDk7PKZ8l8XbicNpjmQ7PCnDScubvPgZJSI6FDFBCBBC69z/0PkNelDFEgcqCFE7ZkeIo6YJiie7Msspq7V0W4pf+/tvyy3gq2wJTuWy+Rpg3/qpE1O4oIdrpWXapPI6aK6FFpg/5dIOW5Sfi0km37Tm8fPUQIcgf7KzRcS+5PPT+ZS/RJerBcn8zSakxh4Uhkk/KrdVvb2GWnf6Ai24loj40l0KAdLUA3PicGBvXhR1H0mo6pS9xbh87kXxB4SepZd8IHddm Ub6aEYgq QOH2iqdXdBogbkXvkrJCaBIdV/tXbQPTj49X1gj+hiYTm/xo1Ga2xvAZywowOf5wzljh9WOQv6Hz4NZSvX5O/h0ChRxgbUNEwEg5EuGgRrieVtf60El+10UQvEpx2QWJPon4BzG0EWoRketQ37EmwCqdaY/oPeViFywbFVidfQAFmTr3plF4eaAnEd1mBYG1ns7UKR/bhqEsZtv08shH76TRoXw0KjUtvHCxTmaDgIboXEHPJt0YTj6HCYYl/G0OkSfG3Er+LFtoi21FpcP4i4RfEkxj6xlLSc5dOso0ZZVkTkygx3xasgGIOMF0Q+gK7vW0hBQ3Lg9FW2p4= 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, Oct 16, 2024 at 12:35:58PM +0800, lizhe.67@bytedance.com wrote: > From: Li Zhe > > In the current kernel rwsem implementation, there is an interface to > downgrade write lock to read lock, but there is no interface to upgrade > a read lock to write lock. This means that in order to acquire write > lock while holding read lock, we have to release the read lock first and > then acquire the write lock, which will introduce some troubles in > concurrent programming. This patch set provides the 'upgrade_read' interface > to solve this problem. This interface can change a read lock to a write > lock. upgrade-read is fundamentally prone to deadlocks. Imagine two concurrent invocations, each waiting for all readers to go away before proceeding to upgrade to a writer. Any solution to fixing that will end up being semantically similar to dropping the read lock and acquiring a write lock -- there will not be a single continuous critical section. As such, this interface makes no sense.