Message ID | 20250213224655.1680278-12-surenb@google.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 38E8DC021A0 for <linux-mm@archiver.kernel.org>; Thu, 13 Feb 2025 22:47:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5D7FF6B008A; Thu, 13 Feb 2025 17:47:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4F7BE6B008C; Thu, 13 Feb 2025 17:47:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2F0F5280001; Thu, 13 Feb 2025 17:47:25 -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 0A89E6B008A for <linux-mm@kvack.org>; Thu, 13 Feb 2025 17:47:25 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C5F221A174E for <linux-mm@kvack.org>; Thu, 13 Feb 2025 22:47:24 +0000 (UTC) X-FDA: 83116409208.04.8840FB3 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) by imf21.hostedemail.com (Postfix) with ESMTP id 00C341C0012 for <linux-mm@kvack.org>; Thu, 13 Feb 2025 22:47:22 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DRH0EOex; spf=pass (imf21.hostedemail.com: domain of 3eXauZwYKCGQUWTGPDIQQING.EQONKPWZ-OOMXCEM.QTI@flex--surenb.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=3eXauZwYKCGQUWTGPDIQQING.EQONKPWZ-OOMXCEM.QTI@flex--surenb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739486843; a=rsa-sha256; cv=none; b=JmMqdqa6DuDYO3Gi8bMY4dDGSRjwalRgDpuLaUFja9ktMVUckbYajSUVfY8xYdD5NtnZIU oSSel+7D/07bXEQ5KF6HuNpu1wdWZnhbLzz/l1choMx0pcWwf0H9UTjQXa1R7ekViO++Y/ uVGdE9djAqj3YDugcEwnLM93zAS94VE= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DRH0EOex; spf=pass (imf21.hostedemail.com: domain of 3eXauZwYKCGQUWTGPDIQQING.EQONKPWZ-OOMXCEM.QTI@flex--surenb.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=3eXauZwYKCGQUWTGPDIQQING.EQONKPWZ-OOMXCEM.QTI@flex--surenb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739486843; 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=T2U39AcH2pHA/F+TfYeY5gc/lOd8HOvLuGlgxJNlsXk=; b=YkKknoQhADiLkd4pnSiMvb0yntrw4L4xXLdf7QnFaWQOnGD3kaT3J5i3LFC+mNhelWKrR4 AV3I70ePeF4o3upZHVOJeu24cqwkZ62Cep0ymzGAbkJBOOTfgcHf5GsuiYdXQkmlf+ZYq7 IZWF0a6R3JrU1pYNK49HrJFLV9hiVaY= Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-220d1c24b25so31170635ad.0 for <linux-mm@kvack.org>; Thu, 13 Feb 2025 14:47:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1739486842; x=1740091642; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=T2U39AcH2pHA/F+TfYeY5gc/lOd8HOvLuGlgxJNlsXk=; b=DRH0EOexZzFWnNnPqM1FbQGLgVZcjHTYSym4x1EfaSMmK2DEMH1Tt2RaBHqOLzAUEN pu8REVj9MHcBujQDv3UFhyfSd3TBz2KJPlirPoCMxSj4w36gcR1/SywZ8CSuVThVf++t QoU1tHdoeptKbc4qb1d1HJOFxNaL9ME8n9hscWoEIpGiF/GDLfalRlxPpNelMbiw5zAr GK+jkysJB9apYsYI6Ag4XE1o5bn3/fSokVNp8LKRUkLqvhtEUin2OyDafYqy+LcagQc/ 7kt1ZJm4WlVbUueytV1DRFNK76LeLeXTlQxbGhrKT6l8l/xeuZno7HZNNGhhUMgCO9dM xHNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739486842; x=1740091642; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=T2U39AcH2pHA/F+TfYeY5gc/lOd8HOvLuGlgxJNlsXk=; b=UF3Ck+GgKWzsty8TA+0CbpwNaO89qNVfsirlraCAPEsL4EOEhN3I2JE/Kzkr+TWbHs 9rhhQQnarGga4yGW3P5QCD7pBvbVB/TRf9FMhzGUAdOG7xfMDMI8dLCAKce+9T9Y96rd eS0Ag0O0SHs6zowMulzFbsKjgpdaiTtnpoX9eCYC17bsTem3cePOEkEWwXredG5QDLMr 5uxprxvrfJAoW1RpOlQGOKNkQa7HRwzuRxYTEQYf1SmatFJTFr6TTi/opaXsOg+VLCnL /Zi0P7IZWo2qn1g27fXO6M8h3Bzu4JToVSnIA63GRihehX0yFvMPQRF7DPbhGWEz3uZ3 kYcA== X-Forwarded-Encrypted: i=1; AJvYcCVIvE4G1OXP1mJU2ljLzpd30FyJshg2Db/ctYnoju3dM05bI++69puYrCRZT7Rv3rhaNzx1uh4G8Q==@kvack.org X-Gm-Message-State: AOJu0YxFmNW4JwtVpgmnSAAQ4IXSxDAYGa9P69SnosL0IOXwbqduMC6O XUB3FoUWWjgM00RumHR36xF8PnyOxwajoyvOFYlwO+TWvpI2c+m4s5FMNW+TD6heFuQAjGSNHze rlg== X-Google-Smtp-Source: AGHT+IH/ab4L3c0kIEwgibMtPWiyLfRxDS8XonLWZO0QHAdpAq0IEkMMWm+kC4zlUCoEzXuh3expkwlJzJM= X-Received: from pji4.prod.google.com ([2002:a17:90b:3fc4:b0:2ea:aa56:49c]) (user=surenb job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:f706:b0:21f:7964:e989 with SMTP id d9443c01a7336-220d2368b12mr72348425ad.52.1739486841935; Thu, 13 Feb 2025 14:47:21 -0800 (PST) Date: Thu, 13 Feb 2025 14:46:48 -0800 In-Reply-To: <20250213224655.1680278-1-surenb@google.com> Mime-Version: 1.0 References: <20250213224655.1680278-1-surenb@google.com> X-Mailer: git-send-email 2.48.1.601.g30ceb7b040-goog Message-ID: <20250213224655.1680278-12-surenb@google.com> Subject: [PATCH v10 11/18] refcount: introduce __refcount_{add|inc}_not_zero_limited_acquire From: Suren Baghdasaryan <surenb@google.com> To: akpm@linux-foundation.org Cc: peterz@infradead.org, willy@infradead.org, liam.howlett@oracle.com, lorenzo.stoakes@oracle.com, david.laight.linux@gmail.com, mhocko@suse.com, vbabka@suse.cz, hannes@cmpxchg.org, mjguzik@gmail.com, oliver.sang@intel.com, mgorman@techsingularity.net, david@redhat.com, peterx@redhat.com, oleg@redhat.com, dave@stgolabs.net, paulmck@kernel.org, brauner@kernel.org, dhowells@redhat.com, hdanton@sina.com, hughd@google.com, lokeshgidra@google.com, minchan@google.com, jannh@google.com, shakeel.butt@linux.dev, souravpanda@google.com, pasha.tatashin@soleen.com, klarasmodin@gmail.com, richard.weiyang@gmail.com, corbet@lwn.net, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@android.com, surenb@google.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 00C341C0012 X-Stat-Signature: 8iifcpi877kp11qtik78wgm9tx5e11zw X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1739486842-340342 X-HE-Meta: U2FsdGVkX1+eMBvWlN5Zid9lljephZVM/+ZuNuAHF7mWcXNHZWzgSGQ3xNJF9LA4g4qY5aotpINuik7qiACR0Q1CPBxsKHZ6gpSGDbYXO2CunJ1Y06128m2Wai6AKy57UGez+Q21eI6txRA/bUR2GqQAEJdWy3YeZN23RbcuIlCaqEgjjUbZXIf6inzwG8vR8ncLJwpdlI1KV4Fs0b1T1GiSNq2xNprNZmFeOjDc/1apXMkQyqVXmp9Jd/d/RdZ56W2uqoZzn9VNJgwNbiVXoP4tyUi1/IiRL5mBZWfP98f1UYgXCbg+3aMdyg0o/Ui1d9R96Ikh55gGn+eH2G3GWNfR5/xRMXiGunkBuuGl7ehLsdWO/lRN01OZgBLMB/FJ+Obrc/VFMX7pNHrMR3j3/J/JpM68rBvmfRxygCwKoALorp71doApOdxi6+tdNLTYFdgO9Yocr0yIina7UVVb8na3Gax8z9TLZBGWzg/oB72CEGA7wc2PLLSXfNtc1Ji/Nn67ctllOKoq8n8dVJ4m8KWwSZXLQ/pujL4CHKZS9eAQpiJJkzqIUawMjDFshfdKDN2rLshzjD2Mat6mZIN90BIdUYffXFHg+eC0TQHnJomnS/TlyRvjqfPHhnMf0Gcsv7VYzDXJAoVWqdTZifQSzdq8AzVtJNRvUzrOiolDcl92TfLpWNdstCLl+LVtLs+U14l5HBzUMUP9vf9kr355CGwTcEHZMjUpTImgX8pExF/PABnW2wqXI4H8knNGnJJKyJSH1U7piSfZ9zdEReXf04Oc9hhxEHOKtawD4uLlTZ2fbTWOFXTTbxxkZ4SttElilCUCwIc3SYNuSPylvj48yTN/BkpQlHkSe18WNEHnu5IK46fzz7MG3SSMojDq1LpLVaRHtJsLAGAPGQuzbNGAbOo6mAGif6miUYJLC2hc5ZM8p8C48ZpYzQ9Ef4jgPzPQMjCWMV4cjE1ou6pFDLe tmMEUklh md/afkGiP4cK0GMnE+vLSZ8c/u3NVkRzm8hAuMRZg7YdBvLqSgYoSKqfjfnBMKvrm34gJJ/ZzDOia9iAX14lF0i8Lvivz9335NWKgoFyHqSXDBZBTCVly4Ce+hxNO+k5wOPsotOWox+kQgkdb4Gc40v+8leVzYVOAIMQ6+GBD4FZfxyGSbNMbMZk5JOLCiASnW0VkeumFmIwxkzjNeMGqeEhKuUPvU+3EdiQlvZFdovfRdrLMQae1EbdJUJOEnLJOnvCPbKxMEQmxSfxa7PNhUyoMLv7fir8BtEb3sVIqhe38zlQJBifHijVb0E9RudLa82sr/H1fflSaM0Tm1V/oOHx5YfUbNs4u3ftVpEp3oL0MqwT6BNI+GfDJJdE7zDHXCIg24f93eOV8cDBp+w1QDL6dO2A0LqUsbQPvUKsC4twC4rpSvgpygElWePp3BlecnM+vdBWfEa/ssnB4f1ZeqorekllwvDcyIKwpw7qq/l3xJoYS/JC5W+2QZGbbKullgKIBCF69Y3F6GT2OB9RrGpmHwQI1C4dOipaKlhlAADpaHjTxfpEUyie7c9N9Ns6bVHjEiRaf/ZFky61okYycxGkXYkcS9R8lWYRKheTWquXA6QdtcghoFm8MpL6FlDoaYEHriXYjYUtkSOfECGCXvC3GICZILBwljE/H7l1evQnVfmtkvp1cPOx/zA== 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: <linux-mm.kvack.org> List-Subscribe: <mailto:majordomo@kvack.org> List-Unsubscribe: <mailto:majordomo@kvack.org> |
Series |
reimplement per-vma lock as a refcount
|
expand
|
diff --git a/include/linux/refcount.h b/include/linux/refcount.h index 4589d2e7bfea..80dc023ac2bf 100644 --- a/include/linux/refcount.h +++ b/include/linux/refcount.h @@ -213,13 +213,20 @@ static inline __must_check bool refcount_add_not_zero(int i, refcount_t *r) } static inline __must_check __signed_wrap -bool __refcount_add_not_zero_acquire(int i, refcount_t *r, int *oldp) +bool __refcount_add_not_zero_limited_acquire(int i, refcount_t *r, int *oldp, + int limit) { int old = refcount_read(r); do { if (!old) break; + + if (i > limit - old) { + if (oldp) + *oldp = old; + return false; + } } while (!atomic_try_cmpxchg_acquire(&r->refs, &old, old + i)); if (oldp) @@ -231,6 +238,18 @@ bool __refcount_add_not_zero_acquire(int i, refcount_t *r, int *oldp) return old; } +static inline __must_check bool +__refcount_inc_not_zero_limited_acquire(refcount_t *r, int *oldp, int limit) +{ + return __refcount_add_not_zero_limited_acquire(1, r, oldp, limit); +} + +static inline __must_check __signed_wrap +bool __refcount_add_not_zero_acquire(int i, refcount_t *r, int *oldp) +{ + return __refcount_add_not_zero_limited_acquire(i, r, oldp, INT_MAX); +} + /** * refcount_add_not_zero_acquire - add a value to a refcount with acquire ordering unless it is 0 *
Introduce functions to increase refcount but with a top limit above which they will fail to increase (the limit is inclusive). Setting the limit to INT_MAX indicates no limit. Signed-off-by: Suren Baghdasaryan <surenb@google.com> --- Changes since v9 [1]: - Change refcount limit to be used with xxx_acquire functions [1] https://lore.kernel.org/all/20250111042604.3230628-11-surenb@google.com/ include/linux/refcount.h | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-)