From patchwork Thu Sep 7 17:47:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13376736 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 AB30EEC8742 for ; Thu, 7 Sep 2023 17:47:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0979D6B007E; Thu, 7 Sep 2023 13:47:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F3B2A8E0002; Thu, 7 Sep 2023 13:47:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DDBBD8E0001; Thu, 7 Sep 2023 13:47:29 -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 BCAFD6B007E for ; Thu, 7 Sep 2023 13:47:29 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 8F2EC1A1005 for ; Thu, 7 Sep 2023 17:47:29 +0000 (UTC) X-FDA: 81210533418.22.1330113 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf09.hostedemail.com (Postfix) with ESMTP id D9ACF140005 for ; Thu, 7 Sep 2023 17:47:27 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=jAKEfKsh; dmarc=none; spf=none (imf09.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694108848; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LLFJT9lhOndsodIHfPQ9LEtDlXX6YGclPNMO2t1USgU=; b=iRFlADJGqXVETJiJo7s2uvQ+2nDcvFCes1EHckfkCAviDpKxhXAj990PyPMFLW4CSeFpv1 01zw5xHy919ZUidmJOSPTZvvLtMqD9sJTG25oSnNWMEcPPhNeZb3yBh8a3leFo4FvCe02e c7Q/JLyTaH9ppUnoM24NUG0j++3SZ4Y= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=jAKEfKsh; dmarc=none; spf=none (imf09.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694108848; a=rsa-sha256; cv=none; b=NCylGJioUfIbk4+n7KwpfE8dlO89cJ/ksTduSyNhcZ1T9rffGwR86RZhK6905VW6ZsS1GF Q6b7y5C1TE1oU3+Bv9yAy0kDpdgKdtiMo304nCAeEXsSd34R+WfMbusTR+iDK3730jboR3 mBqLpZ2wABrTxyI/JHO0oN5j60P6Fkg= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=LLFJT9lhOndsodIHfPQ9LEtDlXX6YGclPNMO2t1USgU=; b=jAKEfKshiWNUs4KA27DrmnJak0 fotEfuCnFgJxrpNUy54FTDDByW/E9sBz1SE2zakIlZJhp1hvXQ/JrczFhZlH5vBtzyTCrBEViEZ1r rD2XlLJb/lmeXQvvhgAR1iFsykO9s7L/WtUzp4faEt4pLZWRXY68YIibxqDRTv/VmZzG6Z/HQjVcK WuDOyAggJnPFYDxeVSPWQmtmGsGIvkM67ia+qMuyl1Axj3bfOOoVGq16Elsg7Un3O2gVO45V950KH Cs5NbUja00oSR1Ep8FiYLK7eeJGKRtDPUrjGr35KP12gtU4KJaIFuyWbCHsCgPd1jB3NrkeDddkYO lp9gc8kQ==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qeJ5v-00CUFJ-Uv; Thu, 07 Sep 2023 17:47:07 +0000 From: "Matthew Wilcox (Oracle)" To: Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long Cc: "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Chandan Babu R , "Darrick J . Wong" , linux-xfs@vger.kernel.org Subject: [PATCH 1/5] locking: Add rwsem_is_write_locked() Date: Thu, 7 Sep 2023 18:47:01 +0100 Message-Id: <20230907174705.2976191-2-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230907174705.2976191-1-willy@infradead.org> References: <20230907174705.2976191-1-willy@infradead.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D9ACF140005 X-Stat-Signature: 3oquhfbywrmh9ghnfm4aoksm3k7hc3bu X-HE-Tag: 1694108847-528856 X-HE-Meta: U2FsdGVkX1/JYZnDX+Z5H2rJb+ieWICwuBh06eGqhmLrugEiswPdFq4rgtQ5CHWPyfvqHFqic8OLA2jUh++k8Ap0N0AuBFjqufS6fNePa41e9gEtDDk2FFRMF1YYgYRflPq0PEqwrXRdZNHDnz2+1m34P19SDamd5sK5pLnIa336Zx7T6YmNdrlhsphuEXcgt2aluZYKrSX+/9J9aTBRoWAC2jDQkBoA5oQdgA6ceRrNoL3/enMrrVo66PKa9VlyLn10LNvLGi9ANzeZnMCQljLYKSV8OpBTdcGZoZZ1YVoTa5CzJKS1OTIocKrgv6lObDVTUSPNuJE1A3W/z35jme3bGWAEav3gFDEvHyzlDsKUpcu6+qKBNocQoC1xiFWwh3jdbkQjg2kF5/xOvOo0Vac9S9JgEHgZfOjHKzaKPHbiQ2ClfhqzObfETOn9OdQS7DR0K/blSK3/xkgLL8ZWIFJ90fITWJrbcRzvU4VRJ5+4y1fxX3NesrW6GWYVP0a3D5Kc6bo0kjvwDlp6LvlGNh9koOEmkkaVNoxjGjdUD6ePs4dTzbSYkvmOEuccAAw2nXbkMcsmLLOLv1J8iV5TstqmeMeobSG5QArWNy0HScFU/y1+JShDGybFE2tCwSkhQkKh7A3xrGPMbfAC1iieb4xacIZFU4dTEH05QQVW6zfGcoyoh4aj6wpCOvR8c3WD3kwP5X/UjVYDnlEeaPrxbdOwKbWyeySw4mVWX6ZFpb1oXPOrbIEKHmH+R8wO+33p6uNuKPasBW9ctYgUK4+tv0Xij7JTPeOxKDc+Bcbv7oJ8Aw2DyE+wn9cJK1AjmrMdlXCUJmyHwAFvcL9rdsDnXDJQnsj8Sm+W5LnRAwOy9g48YUcUqGKkoR+yBDHH3MoYWImHF19cAfF1xQeJ5ATfYYdbQed0Cn3L1kAVj858wXs3F72IaCLgZOvypIn7lcxFWAgxWZMuxjqxpog3hB7 zTF4ybo+ Bq18b/EKK56/TYm0yKWaw6htdYt8G3L9ezI1tYI/wb/+GLehk4bv4O/tH+nAsVAOLwx6n3CXeXY0aMT0lMhxBdk+BVzi5rvo9tVKaJIA4R3CKm5AG1NZs5gs39W2+WVRLPnAWRupgzjvi7X2r5euk33kqO/xe/PEBcmJwQu3Vpr3LCAjy/ejsWQvbLVoqZu7vPdEVoKgoP5U73+C90Vz4yme5JZN/S7473Tnm 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: Several places want to know whether the lock is held by a writer, instead of just whether it's held. We can implement this for both normal and rt rwsems. RWSEM_WRITER_LOCKED is declared in rwsem.c and exposing it outside that file might tempt other people to use it, so just use a comment to note that's what the 1 means, and help anybody find it if they're looking to change the implementation. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/rwbase_rt.h | 5 +++++ include/linux/rwsem.h | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/linux/rwbase_rt.h b/include/linux/rwbase_rt.h index 1d264dd08625..3c25b14edc05 100644 --- a/include/linux/rwbase_rt.h +++ b/include/linux/rwbase_rt.h @@ -31,6 +31,11 @@ static __always_inline bool rw_base_is_locked(struct rwbase_rt *rwb) return atomic_read(&rwb->readers) != READER_BIAS; } +static __always_inline bool rw_base_is_write_locked(struct rwbase_rt *rwb) +{ + return atomic_read(&rwb->readers) == WRITER_BIAS; +} + static __always_inline bool rw_base_is_contended(struct rwbase_rt *rwb) { return atomic_read(&rwb->readers) > 0; diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index 1dd530ce8b45..0f78b8d2e653 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h @@ -72,6 +72,11 @@ static inline int rwsem_is_locked(struct rw_semaphore *sem) return atomic_long_read(&sem->count) != 0; } +static inline int rwsem_is_write_locked(struct rw_semaphore *sem) +{ + return atomic_long_read(&sem->count) & 1 /* RWSEM_WRITER_LOCKED */; +} + #define RWSEM_UNLOCKED_VALUE 0L #define __RWSEM_COUNT_INIT(name) .count = ATOMIC_LONG_INIT(RWSEM_UNLOCKED_VALUE) @@ -157,6 +162,11 @@ static __always_inline int rwsem_is_locked(struct rw_semaphore *sem) return rw_base_is_locked(&sem->rwbase); } +static __always_inline int rwsem_is_write_locked(struct rw_semaphore *sem) +{ + return rw_base_is_write_locked(&sem->rwbase); +} + static __always_inline int rwsem_is_contended(struct rw_semaphore *sem) { return rw_base_is_contended(&sem->rwbase); From patchwork Thu Sep 7 17:47:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13376733 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 CA302EC8743 for ; Thu, 7 Sep 2023 17:47:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 10B7F8D0002; Thu, 7 Sep 2023 13:47:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0BBC58D0005; Thu, 7 Sep 2023 13:47:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E7B538D0002; Thu, 7 Sep 2023 13:47:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id D88E38E0001 for ; Thu, 7 Sep 2023 13:47:22 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 83946140F83 for ; Thu, 7 Sep 2023 17:47:22 +0000 (UTC) X-FDA: 81210533124.12.9B565C4 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf28.hostedemail.com (Postfix) with ESMTP id 7ABA2C0014 for ; Thu, 7 Sep 2023 17:47:20 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="DV83kF/e"; spf=none (imf28.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694108840; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VXFBeiZYZLxdE1EgCNB8C70Cr3AOFx9IwJaa1llihbg=; b=R+F9+lY3liakNlaNjjG99BNJm0t2M8c59+P/wemffRAWmLErhWFwjAhldCgVrXDOWXJ1kM jSBaWdpPtfMEj7xVhNxeUmocWRQ7AHkVh9RSAyxQ9GVpnv301GL1N9tCnm2+YkZvjSbfot Q04tFTxOWAaRstSBMRqsEF628i6uYSM= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="DV83kF/e"; spf=none (imf28.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694108840; a=rsa-sha256; cv=none; b=vZXJwS2Y2478fVv34mQUOoMXamotFir84gUiv5/d7FZs8pSpEv8+clJ6EKae1hN1Isiazx q3g+QOq9xWmTjtMEhNdfI5Zc5Rpvtc3WMl1XX/lFJu2zdDbDcXlvCkEBrNkNdyU9+VFonB aGJN8W1pztfornNOXBWHtQUinW/viaw= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=VXFBeiZYZLxdE1EgCNB8C70Cr3AOFx9IwJaa1llihbg=; b=DV83kF/eITv9Kv5OQQmtmcXh4s aLB2PI2hxlu4An2NjCFMYLMGM0Yuq/dEbT1Zmb9aJ4Xc9KSmRjqtBtstT/W86jThMfVSYimGMHEBG RpTPu//7Bm/ZI/jY6/+Mdekr4QY8VSy2YQChZKQFh3JEyNgS06MTdLvu4t4UQY09KSLfv7PsS6NoW Ksxmeb8/rMLRtMuq8/2lhgreBwJdoa1fxIrLHb51vg+QFQj2yu2nqRD025IPMcZM31nfpA53D+F8V A+5xrl872htBCCIDaIg+jApOm9GX39pCayQ6NfVTrWvrExjy2cfEd/jc5XIW3Rrih2yROq4N02YA9 LNCPCoDA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qeJ5w-00CUFM-0r; Thu, 07 Sep 2023 17:47:08 +0000 From: "Matthew Wilcox (Oracle)" To: Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long Cc: "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Chandan Babu R , "Darrick J . Wong" , linux-xfs@vger.kernel.org Subject: [PATCH 2/5] mm: Use rwsem_is_write_locked in mmap_assert_write_locked Date: Thu, 7 Sep 2023 18:47:02 +0100 Message-Id: <20230907174705.2976191-3-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230907174705.2976191-1-willy@infradead.org> References: <20230907174705.2976191-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 7ABA2C0014 X-Rspam-User: X-Stat-Signature: q18bhn8ft4t9wqgf9xugb3tg311a1bcm X-Rspamd-Server: rspam01 X-HE-Tag: 1694108840-739576 X-HE-Meta: U2FsdGVkX19tfLziwK7wZYWCDIYLrnbGe8EMQ1uLKIKqbvNu2quUElTrKNHIpdRx9On+djfhRx5vpvZAVYhUSYxG69L7zneQei3aKEhjtH0G96OpwO3tjyJ2c9Qo/QoSqptEP2w01E28U7rG7w/fxy5bZ+rpIDbxHKRHeL0ov11LfhrAbR6szthrZkmp0jnHFTXxwo/Mw1yi6UlPzurl7WYR2XIrZGTJsMipMUfD/pNhjYNTPfDzCPIyJu5fIi2ps6DxaxgiNnnsh/JrE/V02m3wNFE/TFboXDsGE1U/zUJqk/dzol+gl85zoqcpF11mCztF26E/hrn+QwDv+UN0iIk7pHvejGm4YoYj/gPu3C6reZY9QBPfapKZ3kve15Hq3f+qGVKeZd/EUg9Qei++diMEvvZPsAogy+bMeVdNPlmCY1cOZjF1cTMgKj61CvQS4Xhjhwa37bcWa06Z+kUObCoLOlUBfzLF0u/PoWSoOecGyHdx3y5XnnKhmbJ+aXfMOF5IO238NViTC8QpSuljw0cSaNq+89jv8nPUcYQrjpq9Uz57rrK23DUaSkrshEVyoI1A7BZx9RvCxYw8LnxtG8jnSkOpkbFL6o2vV+zvVEAVhChO8Nvb5OADYW6TOfbHw/S7tXwS8ZDKbsm2NyxxTGfINkSLJ7QFkpt6d7zKqzk75mU3lCkMWAL5XyTg7rYtTLG7Lz+ZYoPk7UXUVpG5YiQzgqJ5buryhL7LYQes6KosSxaYjgsIg+4W7Ho5PujdG2qdFeZjr2Wk80npWv8R7r4CCu8K/483Ata22nqOQHTGxBeOxAJF0M1WaIdRHU9nOPXiS47SD8GPfXSvYyPvjqF4SR7WLXYnSspXdKvgJ7dyU8b/wMUhh6gR3KhcgGg/W5KyENSNC8glSF/ksUkP/yxBOOuYQ5+S10fQC6pURP23yKzMoE2xcn4uaHiHHwktw7vusKhfICuZusZ4bGZ Z8rq1sMn NEMJ9/U0pT+vP3fFJvQGBslVDsUcnVgEF0mJHXNwfCAe0JOu+uEDIJKRKuj3Nk6IiQMB6ff7PlyTexQco2NWVvx0APrpNYlhf24F4NWNe6UJ4E+fUOsGpFW9d/Sx4J8qjVTK49WatKdXKHLhw+tp9jBMfKlARpjo7FAxfoPN2wbHRMm4rbgzn0Sfi460ROhKyMvfFxKyXndbc3O/QHLOKXa4bAWOsy8HVp9mO3moirHbHlxCfOIjpvVs1KKjjGRsZMKt/ 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: This slightly strengthens our checks when lockdep is disabled. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/mmap_lock.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 8d38dcb6d044..0258b06668e8 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -69,7 +69,7 @@ static inline void mmap_assert_locked(struct mm_struct *mm) static inline void mmap_assert_write_locked(struct mm_struct *mm) { lockdep_assert_held_write(&mm->mmap_lock); - VM_BUG_ON_MM(!rwsem_is_locked(&mm->mmap_lock), mm); + VM_BUG_ON_MM(!rwsem_is_write_locked(&mm->mmap_lock), mm); } #ifdef CONFIG_PER_VMA_LOCK From patchwork Thu Sep 7 17:47:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13376735 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 B32D2EC874C for ; Thu, 7 Sep 2023 17:47:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 467D56B0074; Thu, 7 Sep 2023 13:47:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F2726B0072; Thu, 7 Sep 2023 13:47:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2905D6B0074; Thu, 7 Sep 2023 13:47:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 14D396B0071 for ; Thu, 7 Sep 2023 13:47:26 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E8BF1140F8D for ; Thu, 7 Sep 2023 17:47:25 +0000 (UTC) X-FDA: 81210533250.01.8F4D12C Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf25.hostedemail.com (Postfix) with ESMTP id 5ADC6A000D for ; Thu, 7 Sep 2023 17:47:24 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=nF26xSCA; spf=none (imf25.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694108844; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wD6jndt8wbHj+DL+KkiwehRezl2XHcQmRoPgvfO+F4I=; b=O8wY0R1ua3BrgstlHFK1rilk5y0MpMX6gM9c95Xxzp7MhSeymAUSVhhmp8wNK3DYap7TMc xG/n8sDaSl6nxIEGhhv9Z20bN0AeU40MSONzFkLAPMk0AOqA2pjpg0dFuX9wkxWRteY3zm w/bfsQVjI+oMvFWSYHdFWRaqWA3docs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694108844; a=rsa-sha256; cv=none; b=3+HrKyvH2AUuXGmDRtyoq0JFGdH9r8tNa+Wu1Tk7HVvE1nMQtd+bS3rphX2JZFMnPr19Ca 9oXfrcqtPA6DacXVjhiy1EWL9akeC8s9tXdURi39FTuPmBdKKa0kg2w1ULxY8mFxN3yeIE Mp4n+Bxq0w5rSmOLATz9avw9h6gaEJY= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=nF26xSCA; spf=none (imf25.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=wD6jndt8wbHj+DL+KkiwehRezl2XHcQmRoPgvfO+F4I=; b=nF26xSCABiPufnNgK3G2trN8Zm 15ekZrNYw2ptW9dbui8bV+AHuMNUASEcvB5o1xmBMGDWlFSCSX0C5wAj/svU/64WCqMG5XQ9K+tvj EYN10+S4ZDVeKfrKGbK/HyNHnzL509E2KUjoiBr8rEyDoxk3s1ie3fda6OIL+WD7qTFg/2IxxjK7Q U/3tHfGX4klo3XbKbbvi/aFGhGAiO7HckY8AwXoRANtBsxk4K+scpYQJ4NYQIvbAe9ocTPbszSS1L kyQLCkX0txtmHtVJUcG6kiR4BCbB6Rj6griCoOTUOy1OoPPO1Z1zynUfx0vwTpeNi7JRe4nfQ0pN2 GEq9iA8w==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qeJ5w-00CUFP-3W; Thu, 07 Sep 2023 17:47:08 +0000 From: "Matthew Wilcox (Oracle)" To: Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long Cc: "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Chandan Babu R , "Darrick J . Wong" , linux-xfs@vger.kernel.org Subject: [PATCH 3/5] xfs: Use rwsem_is_write_locked() Date: Thu, 7 Sep 2023 18:47:03 +0100 Message-Id: <20230907174705.2976191-4-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230907174705.2976191-1-willy@infradead.org> References: <20230907174705.2976191-1-willy@infradead.org> MIME-Version: 1.0 X-Stat-Signature: ncsj6fugmb8jhafiefytnacxmq6rs1ko X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 5ADC6A000D X-Rspam-User: X-HE-Tag: 1694108844-23055 X-HE-Meta: U2FsdGVkX1/jhpyXv7lMwaFDW6sPtBvAviVDqeIMEjy0NUMdBECTQ1Zm9uPG7h3kXo9YOPgZbEG9y+qFEbhOViJkFE4RIJjAyZiZNIQTZpx036QA0ofaZxKWEdMB3vtFKKumk0GSIF3ha+poa8jfXSuJQMAmA90UE+t0EOFqLwk2aj1jy9CCMq2C2WKaMRFwB1fsvmA+OQ4ZqlRV1Pc+ZQkHzd311BdlCG6zgVcRCpNd3N29pLgomEClPdZqetv/nNlENDZUIiqhNa+JGqX3NGNKHJzlIGqZNcRiSYgzzICM02VZhpLNZ/blF5ArQ3sNTBACvHqoAZVHDS7Rt1vtRUjyVXQsbiTzya/pOYLZ5IXLS2IiQcgJkC0XtI8Phq60RlQTcPABXmBCikf+XLMsZBUQW7mitMOtENrE/NH3a1Npdt21K8f4yzxrp4xbSJm81TfVDyuYHOh1WOEauxF0NPJ+g91uLHVEUMZ1nN/zm3harpttS1IxjUJXDBMAEtdbDQfbUm9Ltz7dVyHl7iyOiXz3EsIWRnueCoTzzEntLmjdkpbcqtMgMwkHdi8+sonbhuvJGme643KGgf4onOV2S/TT9Mmq6E5PklnedxtHI/Hv0PG6NGzk+Apcxzv5olHg4l/XMCnPLVyjaSlp9HFpUAZwr6VQ9W+KEsQIqRqCOJDiYB3zHS+MbpPwDJaSg3GOZAl73brXkAfo/2ia+p1Qhxw/+WPG1PQm2ih10fiq52XBKORj0NMzVeq6Ub52SWF8K6R8k2xYqGmJKdTHOlSB0jTjennQkLt/5EdOIO6KF0PhgcmBPAOXaXp9YL+gSpf/h+GXPDNz7bb/R40b122SRv45GR4G6onpxhhGPsEWVMrgztsDLgfZPeTPDhisN8zV5y5c/7vmtQShGGUEpOt8HZpU26XXgZKdp5dndPetfEZYoeGJvI9mrA8yEi888vMAtqO0+LxUHz0pYTnoM8o SMlmgtLG HuRDg/qrFyCK/KYn7CRc6Datq1YsvcdDbPBhqr8XdbmmmqZ7/p29LSBAnFQ+tMf/OQVY+aD1i5GVJFsFBjJzDKU/jOH6dUURMwp5Ee0tSP7Kb8A4VJMzyVbVSwosAI8yMMeIamkr6N9qDOwikbboFtiGCA8rJ1hRSc9lta9o5t+8mATytbJUEmIlVLq4qMtSh4Pl8aFa2Vp38nfK1dbHDNWww93hXPmcBng+v 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: This avoids using the mr_writer field to check the XFS ILOCK is held for write. It also improves the checking we do when lockdep is disabled. Signed-off-by: Matthew Wilcox (Oracle) --- fs/xfs/xfs_inode.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 360fe83a334f..e58d84d23f49 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -339,8 +339,11 @@ __xfs_rwsem_islocked( struct rw_semaphore *rwsem, bool shared) { - if (!debug_locks) + if (!debug_locks) { + if (!shared) + return rwsem_is_write_locked(rwsem); return rwsem_is_locked(rwsem); + } if (!shared) return lockdep_is_held_type(rwsem, 0); @@ -359,12 +362,10 @@ xfs_isilocked( struct xfs_inode *ip, uint lock_flags) { - if (lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) { - if (!(lock_flags & XFS_ILOCK_SHARED)) - return !!ip->i_lock.mr_writer; + if (lock_flags & XFS_ILOCK_SHARED) return rwsem_is_locked(&ip->i_lock.mr_lock); - } - + if (lock_flags & XFS_ILOCK_EXCL) + return rwsem_is_write_locked(&ip->i_lock.mr_lock); if (lock_flags & (XFS_MMAPLOCK_EXCL|XFS_MMAPLOCK_SHARED)) { return __xfs_rwsem_islocked(&VFS_I(ip)->i_mapping->invalidate_lock, (lock_flags & XFS_MMAPLOCK_SHARED)); From patchwork Thu Sep 7 17:47:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13376737 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 35743EC8726 for ; Thu, 7 Sep 2023 17:47:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA2D28E0002; Thu, 7 Sep 2023 13:47:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E01B78E0001; Thu, 7 Sep 2023 13:47:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CA2DD8E0002; Thu, 7 Sep 2023 13:47:32 -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 B0F838E0001 for ; Thu, 7 Sep 2023 13:47:32 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 92E63A101A for ; Thu, 7 Sep 2023 17:47:32 +0000 (UTC) X-FDA: 81210533544.17.F0410D7 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf24.hostedemail.com (Postfix) with ESMTP id D5B2118002F for ; Thu, 7 Sep 2023 17:47:30 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=IUhGTa9X; spf=none (imf24.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694108851; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dLYM3HXjdvUc/PUnwBXHfAR8RDp8UcgjgxntIo4zvgo=; b=vpc1YzJj9FtrY2b7sAE0FDySBBx2CyeW0UhiDCqRnQh9tSolzhvsMoEjCO7CNc32YowLB0 U83jsBXZ2OtZ/zuT8T+m7w3PRGMQxC/10rpHvInPcyB9C989NuF/ZqvY3usYTEd66Tfy5Y rrBsnVN8rsprdrjCjlL4Ela3Dx/oDd8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694108851; a=rsa-sha256; cv=none; b=i6L5Sgqt0foXvtOleTK5yLp2xiK7ATBjpjWehvw+aEQi/Za+syz7832DKAbooCIzXIhNK/ UXE8QBXZxMqKa7z/gfZlgjN5HjYooPffh6H0QWRT4wlReTvG0sBBl2e7nLgdiFUa2yFqLc hg/z3lDhI+GcI/NR9RdKBcF1duBXaNY= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=IUhGTa9X; spf=none (imf24.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=dLYM3HXjdvUc/PUnwBXHfAR8RDp8UcgjgxntIo4zvgo=; b=IUhGTa9XHd7qtXmUgCIBha1owW sumH5DrguJTy94/25NAUDFeNSW5ijVnKvnlor6oG0tTRwRd1f4ddogPx2ZwBXXFsv1MCi4bPfMZ10 BiR9QgJlseF/ssmAd+mjYHXLebY/syL/0CGKCK2CoySItJ2TrMofGj4zYJHDku1zIvAVUcobcr8tG /q1td2ktz4JAqNne9wtQnAJUCEDaVoMqnlLRFetH47IRdETALDmMJ/2MCIOVEMtn77Uxok0/CoPKX J7Lkre49BxeCLfH7i1xc7GKuJK/RTpCXU1Zsg/MbtvaKv62N6naN49nuSeBinoLJhOoUN1Xijm38l gA8JfIzQ==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qeJ5w-00CUFR-5j; Thu, 07 Sep 2023 17:47:08 +0000 From: "Matthew Wilcox (Oracle)" To: Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long Cc: "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Chandan Babu R , "Darrick J . Wong" , linux-xfs@vger.kernel.org Subject: [PATCH 4/5] xfs: Remove mrlock wrapper Date: Thu, 7 Sep 2023 18:47:04 +0100 Message-Id: <20230907174705.2976191-5-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230907174705.2976191-1-willy@infradead.org> References: <20230907174705.2976191-1-willy@infradead.org> MIME-Version: 1.0 X-Stat-Signature: zsrmzz47bqxy8k8mhmjipety5hdj399e X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: D5B2118002F X-Rspam-User: X-HE-Tag: 1694108850-142719 X-HE-Meta: U2FsdGVkX1/UOl0PLA4+VG9AHD5+l+sxCheO85JUzt0HwAiRAA3Jbz4R8dlZtxHf/cJWXci2RNFzKUcvFwHeNLFQfUKvCJoY2fJ9XgWF4PU+cz7hniBZUPTvwPSQznrcQEVCb/yIPzxLer0Srp9gjRMEVq6h5jycDlG7qAc/ugYl1vBa1mJ2u2y2lo7rNq1XtIFbLvnQXAA3UpTQLJZjUKW6nVRW/tVVAEGYTD+9nOPyYkkY2Uu5tcEq/FPo66pZUuhiiNTfeomQhiMGyZrqpZsR0n8DByFGVFekv7oU6WIVAkjt3DVDuV8DQ1OlkDPD6YcCWFXfW9FTi/PoQK+/JGUY0OYU64AOha8wnUhdx89VZl7ZZ1+af2nt1qhF7ugfk4B8MOOP46j+tgcaucFUlef+7KSinTMfcXnPfxmVHZIt5+qBkxCJLDu4MCPOeWT3uXjlsSfN23bifOoyq4AuOPOjnCF/4q2qsYDdM54OSyckrNE3z9AIpIs7PaJzbIsTGAjZLt11jZv8SU6mY5ChcGQBWqNCY7uuOcEoggAUY0NWjNV0r/ED3aION0SLr7v3Ta/MM7KfUuZY9Y/UGPeP1C5kz9x3tTC/95sXfphKH0r/PqEBzuk0D5+xPfA8hdriRSRFj0uIdv/uKHIOsGYuNT0F582FOFM0NOEt0NYjxG2adIjZKJh46fKz7MHyqsGgHfPeA+0NO0cVpGPl29N3pbOMdjrRyqK2PqLOCUzdEzIYZ2IZR2TWiAfsJvSjA/p0akv1ndtny53z8LuchO0kxkxr2U5bAwLJhPCfS+I9WJAbHW4zcNjf/+NVeJrC6KxdNmJmIfMJPfxD0LGi2xH+5j676sTh0ZmeWWEgx6p/HaSY+/aO4wZSN3gYtKEzQ6amQarKZFUbBNg2zyIvDaKV4MgLnKfh2cipmSAOX3+JmaFSE/7hAiLSagmZ1BIOl+J6yGRrOjBJn3SYvLOu86k 5iCM+lSy 7i6Lsc4qdzrd9pWXQMhQ8G/GI7DvdHstQei+ugLWY32L6WJNUG1qlHdAqkUjhpwweQfZfaJ2ByJD1zbEUXVDrG4OCTkKsDnWL+w3ma0lRIx3trd0ga6Pi8az9PBhh85F0J9dulQzW5yHgsrs0ck3Psev5u2CD4e9Cz9NOZqHxB44gKCdvGdiM+kxWRm/P9+KIHImHuBQt/wIth7s= 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: mrlock was an rwsem wrapper that also recorded whether the lock was held for read or write. Now that we can ask the generic code whether the lock is held for read or write, we can remove this wrapper and use an rwsem directly. Signed-off-by: Matthew Wilcox (Oracle) --- fs/xfs/mrlock.h | 78 ---------------------------------------------- fs/xfs/xfs_inode.c | 18 +++++------ fs/xfs/xfs_inode.h | 2 +- fs/xfs/xfs_iops.c | 4 +-- fs/xfs/xfs_linux.h | 2 +- fs/xfs/xfs_super.c | 4 +-- 6 files changed, 14 insertions(+), 94 deletions(-) delete mode 100644 fs/xfs/mrlock.h diff --git a/fs/xfs/mrlock.h b/fs/xfs/mrlock.h deleted file mode 100644 index 79155eec341b..000000000000 --- a/fs/xfs/mrlock.h +++ /dev/null @@ -1,78 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2006 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#ifndef __XFS_SUPPORT_MRLOCK_H__ -#define __XFS_SUPPORT_MRLOCK_H__ - -#include - -typedef struct { - struct rw_semaphore mr_lock; -#if defined(DEBUG) || defined(XFS_WARN) - int mr_writer; -#endif -} mrlock_t; - -#if defined(DEBUG) || defined(XFS_WARN) -#define mrinit(mrp, name) \ - do { (mrp)->mr_writer = 0; init_rwsem(&(mrp)->mr_lock); } while (0) -#else -#define mrinit(mrp, name) \ - do { init_rwsem(&(mrp)->mr_lock); } while (0) -#endif - -#define mrlock_init(mrp, t,n,s) mrinit(mrp, n) -#define mrfree(mrp) do { } while (0) - -static inline void mraccess_nested(mrlock_t *mrp, int subclass) -{ - down_read_nested(&mrp->mr_lock, subclass); -} - -static inline void mrupdate_nested(mrlock_t *mrp, int subclass) -{ - down_write_nested(&mrp->mr_lock, subclass); -#if defined(DEBUG) || defined(XFS_WARN) - mrp->mr_writer = 1; -#endif -} - -static inline int mrtryaccess(mrlock_t *mrp) -{ - return down_read_trylock(&mrp->mr_lock); -} - -static inline int mrtryupdate(mrlock_t *mrp) -{ - if (!down_write_trylock(&mrp->mr_lock)) - return 0; -#if defined(DEBUG) || defined(XFS_WARN) - mrp->mr_writer = 1; -#endif - return 1; -} - -static inline void mrunlock_excl(mrlock_t *mrp) -{ -#if defined(DEBUG) || defined(XFS_WARN) - mrp->mr_writer = 0; -#endif - up_write(&mrp->mr_lock); -} - -static inline void mrunlock_shared(mrlock_t *mrp) -{ - up_read(&mrp->mr_lock); -} - -static inline void mrdemote(mrlock_t *mrp) -{ -#if defined(DEBUG) || defined(XFS_WARN) - mrp->mr_writer = 0; -#endif - downgrade_write(&mrp->mr_lock); -} - -#endif /* __XFS_SUPPORT_MRLOCK_H__ */ diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index e58d84d23f49..c3cd73c29868 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -208,9 +208,9 @@ xfs_ilock( } if (lock_flags & XFS_ILOCK_EXCL) - mrupdate_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags)); + down_write_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags)); else if (lock_flags & XFS_ILOCK_SHARED) - mraccess_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags)); + down_read_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags)); } /* @@ -251,10 +251,10 @@ xfs_ilock_nowait( } if (lock_flags & XFS_ILOCK_EXCL) { - if (!mrtryupdate(&ip->i_lock)) + if (!down_write_trylock(&ip->i_lock)) goto out_undo_mmaplock; } else if (lock_flags & XFS_ILOCK_SHARED) { - if (!mrtryaccess(&ip->i_lock)) + if (!down_read_trylock(&ip->i_lock)) goto out_undo_mmaplock; } return 1; @@ -303,9 +303,9 @@ xfs_iunlock( up_read(&VFS_I(ip)->i_mapping->invalidate_lock); if (lock_flags & XFS_ILOCK_EXCL) - mrunlock_excl(&ip->i_lock); + up_write(&ip->i_lock); else if (lock_flags & XFS_ILOCK_SHARED) - mrunlock_shared(&ip->i_lock); + up_read(&ip->i_lock); trace_xfs_iunlock(ip, lock_flags, _RET_IP_); } @@ -324,7 +324,7 @@ xfs_ilock_demote( ~(XFS_IOLOCK_EXCL|XFS_MMAPLOCK_EXCL|XFS_ILOCK_EXCL)) == 0); if (lock_flags & XFS_ILOCK_EXCL) - mrdemote(&ip->i_lock); + downgrade_write(&ip->i_lock); if (lock_flags & XFS_MMAPLOCK_EXCL) downgrade_write(&VFS_I(ip)->i_mapping->invalidate_lock); if (lock_flags & XFS_IOLOCK_EXCL) @@ -363,9 +363,9 @@ xfs_isilocked( uint lock_flags) { if (lock_flags & XFS_ILOCK_SHARED) - return rwsem_is_locked(&ip->i_lock.mr_lock); + return rwsem_is_locked(&ip->i_lock); if (lock_flags & XFS_ILOCK_EXCL) - return rwsem_is_write_locked(&ip->i_lock.mr_lock); + return rwsem_is_write_locked(&ip->i_lock); if (lock_flags & (XFS_MMAPLOCK_EXCL|XFS_MMAPLOCK_SHARED)) { return __xfs_rwsem_islocked(&VFS_I(ip)->i_mapping->invalidate_lock, (lock_flags & XFS_MMAPLOCK_SHARED)); diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 7547caf2f2ab..18941cd21b81 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -39,7 +39,7 @@ typedef struct xfs_inode { /* Transaction and locking information. */ struct xfs_inode_log_item *i_itemp; /* logging information */ - mrlock_t i_lock; /* inode lock */ + struct rw_semaphore i_lock; /* inode lock */ atomic_t i_pincount; /* inode pin count */ struct llist_node i_gclist; /* deferred inactivation list */ diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 2ededd3f6b8c..ba64c9c5d3ab 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -1280,9 +1280,9 @@ xfs_setup_inode( */ lockdep_set_class(&inode->i_rwsem, &inode->i_sb->s_type->i_mutex_dir_key); - lockdep_set_class(&ip->i_lock.mr_lock, &xfs_dir_ilock_class); + lockdep_set_class(&ip->i_lock, &xfs_dir_ilock_class); } else { - lockdep_set_class(&ip->i_lock.mr_lock, &xfs_nondir_ilock_class); + lockdep_set_class(&ip->i_lock, &xfs_nondir_ilock_class); } /* diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index e9d317a3dafe..15fdaef578fe 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -22,7 +22,6 @@ typedef __u32 xfs_nlink_t; #include "xfs_types.h" #include "kmem.h" -#include "mrlock.h" #include #include @@ -51,6 +50,7 @@ typedef __u32 xfs_nlink_t; #include #include #include +#include #include #include #include diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 1f77014c6e1a..d190afbcfe04 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -739,9 +739,7 @@ xfs_fs_inode_init_once( /* xfs inode */ atomic_set(&ip->i_pincount, 0); spin_lock_init(&ip->i_flags_lock); - - mrlock_init(&ip->i_lock, MRLOCK_ALLOW_EQUAL_PRI|MRLOCK_BARRIER, - "xfsino", ip->i_ino); + init_rwsem(&ip->i_lock); } /* From patchwork Thu Sep 7 17:47:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13376732 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 E468FEC8726 for ; Thu, 7 Sep 2023 17:47:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B92468D0003; Thu, 7 Sep 2023 13:47:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B426C8D0002; Thu, 7 Sep 2023 13:47:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A09E68D0003; Thu, 7 Sep 2023 13:47:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 8EC7A8D0002 for ; Thu, 7 Sep 2023 13:47:22 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 643241CAD3F for ; Thu, 7 Sep 2023 17:47:22 +0000 (UTC) X-FDA: 81210533124.16.FE7917F Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf21.hostedemail.com (Postfix) with ESMTP id 298F01C0021 for ; Thu, 7 Sep 2023 17:47:19 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NcXGBCh5; dmarc=none; spf=none (imf21.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694108840; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9FU0HDBbS9848C77tpg24Iv2uyZEtVXyAgpiQsjv/fA=; b=yMp8IvamdVwHA82e4SzOLf+W9ZOEFG+grqlgKIxizb+4jN/LUpGR2cDwqSHlD9uecf7cjz 4GhAUoLL28LzbcPtpvX6Z7MSgbemF1LORldEQfN7v3ziTnZNYFzl6zd7c3g21aSP11oPMR gb6BExeMV8NBGC6eXE0MUP4t2BmizHU= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NcXGBCh5; dmarc=none; spf=none (imf21.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694108840; a=rsa-sha256; cv=none; b=AX2nH4cFhttO/KVOwqHBxRctk7UwFFeJ0TvTWjOp1YbD4hA9hIEedKaxGmWYa3LFaT4bzU e5vWOxTvdJizUzfW9AYQOapvSbKq+DjZ//HfsYn4BiC6t+AC6+v+28pzViPfyHwbJx2iXQ LpWc/BOricWIGLlUc9sdoFJTUR2mKDA= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=9FU0HDBbS9848C77tpg24Iv2uyZEtVXyAgpiQsjv/fA=; b=NcXGBCh5BPyjAcESrPbWgrRsvW PDdtlXUAW0k8lC/IdN0FAJeBK1laH7kwHd4DLz5VGxpxlbeGjY5LEWxmT2mnCzfiDg/9MxX1y9YIq Aco2rxkVPG1Q5cC4t6HrgpCG7dzJ/n00GBBB5HYp+YIDycwMRJ2stN/4f6UCE/cu+yDvEPg/xymUe gxLzC04nT4WV/5Np19ENi1c6ygMEpl7CoMfjbF6CfUeB2VJ80U//JUdE1S4mVgoEnKU3m4Us/q4ti l2voBmp7JV5jVnAX2/7wySndJLGXrAMrdqgKY6dmc/C4GztfYiBEY6CBASMTB1vOnuCu23xjQCZ8Y 6X3U3qxQ==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qeJ5w-00CUFT-91; Thu, 07 Sep 2023 17:47:08 +0000 From: "Matthew Wilcox (Oracle)" To: Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long Cc: "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Chandan Babu R , "Darrick J . Wong" , linux-xfs@vger.kernel.org Subject: [PATCH 5/5] xfs: Stop using lockdep to assert that locks are held Date: Thu, 7 Sep 2023 18:47:05 +0100 Message-Id: <20230907174705.2976191-6-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230907174705.2976191-1-willy@infradead.org> References: <20230907174705.2976191-1-willy@infradead.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: o8uw798syqac9tzf768yuwn8m86ywtc7 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 298F01C0021 X-HE-Tag: 1694108839-862258 X-HE-Meta: U2FsdGVkX1/gE6DK3MmoG3XZN/RrR7d78Lz9c4UOuTGQ6RnprUpC+fc2zF1sJPdC47Q6FHr+mOeBydcr4tEhNvlBjrWDa6GV/NMdnUit4G1t6mLjW/zr949e3fAfSQKD2Dk1rREK4283d5QpsczpMgognClJs1sihFj+07vkQ7I0f+IEnBrbcOidu9dYh1WARTCIES7DviRkN3pmZxs/ajSIlY0ZZURkV8p9kme5ASbYX3vro7hjP8MeflbjMejW9tEEAPtbl414bwXIPfu3T71XBDMiOv2ukUiuznbNG3+fML2nEJ57l1GP5U5W/Vl0hZ4szRzBFksZk+p/ojLaeGJNR9tx7GwOLywGmMTA/+vEjE1a0aI7NDEhHzgrGTaYajTLqoafCbRRk7pGkR+HqyjhjA78xwgcxM6FrfbSrOsvuPiduDEUFGH/A2ubZoiYMEewP7r2JdsUGBsJCVBLADRWH1DR1Yof2gn13bHmccGNZms67njWlkzOTgPeUVthCxLebk5wymKPpjc69W+u3x5X2tRhifbrMq6HwMoir1/q6/1kgy8BRZMIcrhWSL9SSgANHNHOaxQTkuSEjO/kB1lNdW2DwWXwT0aZw0jForcC3aYrnwILuOPUbAE2bR82E+CYDLkrvz+LE1n1BidYXWWCab8nOZNG3kgSIYpuEY/LWuDedbFiLum/hiuw4O6ZU595W4YmD1aHDXKxh82+hl1Mu8GxFPSk2h3iuQ4YQ6LKpXZDnDfGAZXnJ9JWuKe3CN+r+pJeuIbeQa2AJQmnUWhfUhn9LCQK7PsKDuKW2vSO+/PCaE7aO4PNFSVbwgGwNB4lastebSz+Mq2x2jlpZaFw64ofvYB6paSCcCwOvD7wMQOpI7d3wEZXulfeDFbwI/iXb6QLxKdJnYrQL4wZvB6E/hXtT59xRhz0Zizf7udLezUGalzrb6OIck/DiezPkfRB46IXTSf7qNiXiQa uB93NZ9L fgbS4gwdMqfteNm2zwKCyJD1g3lAgoL9+KZ8cl4mKpqUxxTaEcjuXg+/PHBAn7Lqraisa4HUQmCxlODIE9r/QFVs1j2BxorXb6IPczd75Mx/695+QTKSerQcnMmn7cN6Agg52QYGe6R6tUQqaMZvH296t6IouxDf7kPHyjLc4P+FVntf/RqiqT6hK5Q== 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: Lockdep does not know that the worker thread has inherited the lock from its caller. Rather than dance around moving the ownership from the caller to the thread and back again, just remove the lockdep assertions and rely on the rwsem itself to tell us whether _somebody_ is holding the lock at the moment. __xfs_rwsem_islocked() simplifies into a trivial function, which is easy to inline into xfs_isilocked(). Signed-off-by: Matthew Wilcox (Oracle) --- fs/xfs/xfs_inode.c | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index c3cd73c29868..81ee6bf8c662 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -334,29 +334,6 @@ xfs_ilock_demote( } #if defined(DEBUG) || defined(XFS_WARN) -static inline bool -__xfs_rwsem_islocked( - struct rw_semaphore *rwsem, - bool shared) -{ - if (!debug_locks) { - if (!shared) - return rwsem_is_write_locked(rwsem); - return rwsem_is_locked(rwsem); - } - - if (!shared) - return lockdep_is_held_type(rwsem, 0); - - /* - * We are checking that the lock is held at least in shared - * mode but don't care that it might be held exclusively - * (i.e. shared | excl). Hence we check if the lock is held - * in any mode rather than an explicit shared mode. - */ - return lockdep_is_held_type(rwsem, -1); -} - bool xfs_isilocked( struct xfs_inode *ip, @@ -366,15 +343,14 @@ xfs_isilocked( return rwsem_is_locked(&ip->i_lock); if (lock_flags & XFS_ILOCK_EXCL) return rwsem_is_write_locked(&ip->i_lock); - if (lock_flags & (XFS_MMAPLOCK_EXCL|XFS_MMAPLOCK_SHARED)) { - return __xfs_rwsem_islocked(&VFS_I(ip)->i_mapping->invalidate_lock, - (lock_flags & XFS_MMAPLOCK_SHARED)); - } - - if (lock_flags & (XFS_IOLOCK_EXCL | XFS_IOLOCK_SHARED)) { - return __xfs_rwsem_islocked(&VFS_I(ip)->i_rwsem, - (lock_flags & XFS_IOLOCK_SHARED)); - } + if (lock_flags & XFS_MMAPLOCK_SHARED) + return rwsem_is_locked(&VFS_I(ip)->i_mapping->invalidate_lock); + if (lock_flags & XFS_MMAPLOCK_EXCL) + return rwsem_is_write_locked(&VFS_I(ip)->i_mapping->invalidate_lock); + if (lock_flags & XFS_IOLOCK_SHARED) + return rwsem_is_locked(&VFS_I(ip)->i_rwsem); + if (lock_flags & XFS_IOLOCK_EXCL) + return rwsem_is_write_locked(&VFS_I(ip)->i_rwsem); ASSERT(0); return false;