From patchwork Sat Apr 5 06:01:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Ballance X-Patchwork-Id: 14039084 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 3305AC36010 for ; Sat, 5 Apr 2025 06:03:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 436666B000A; Sat, 5 Apr 2025 02:03:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3E3D06B000C; Sat, 5 Apr 2025 02:03:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 25E196B000D; Sat, 5 Apr 2025 02:03:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 054156B000A for ; Sat, 5 Apr 2025 02:03:37 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id C215B121128 for ; Sat, 5 Apr 2025 06:03:37 +0000 (UTC) X-FDA: 83298948474.14.5035AC0 Received: from mail-oo1-f45.google.com (mail-oo1-f45.google.com [209.85.161.45]) by imf20.hostedemail.com (Postfix) with ESMTP id E72071C0006 for ; Sat, 5 Apr 2025 06:03:35 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZTqj2Isr; spf=pass (imf20.hostedemail.com: domain of andrewjballance@gmail.com designates 209.85.161.45 as permitted sender) smtp.mailfrom=andrewjballance@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743833015; 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=nRO81KAlWVAUMNmlMPrVLR3d+OGjp9Qz/jso9myHPaY=; b=qAnU5sXCyyIyE2eD1989ln+gpN6euxSTPyQVdq5VYqjuOLQo2H3UoZzTX+sQ1pvqVqo0d5 lhuoKzZRdkEcdjfVEcXoe8SC/uSx6mWeEw9Np6CNHiFSg7EWMHdTwQFfBTUGuclioSst/7 A1dFGmSQjRFJdWzXEo8bhDCDXrkLpFM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743833016; a=rsa-sha256; cv=none; b=ZJH4xby9OjDgm5TgSvD8Jf2/kdV6zyH9OC2SJuLsVTOWDB7hGMie+5/DJYqqxaRdWbjIKj rSFK5GtDOP3/2Pu0o1VxrDxqnb6GdIv9vk5Ooeq1IlJCW18LQ5Kb4YLVtahxwzIHo+Aqps wMQe9tI2WicKYiA1BER8vnm/J4F2sAE= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZTqj2Isr; spf=pass (imf20.hostedemail.com: domain of andrewjballance@gmail.com designates 209.85.161.45 as permitted sender) smtp.mailfrom=andrewjballance@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-oo1-f45.google.com with SMTP id 006d021491bc7-601a8b6c133so1671505eaf.1 for ; Fri, 04 Apr 2025 23:03:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743833014; x=1744437814; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nRO81KAlWVAUMNmlMPrVLR3d+OGjp9Qz/jso9myHPaY=; b=ZTqj2IsrVmrP8BAv9BRkHQhLS3tQzOi4H6/tZrvkUezfRrk+kdWzdNLtKexQ5VN88M Bbk2lhnnVPzH4Fn4QqgYkiJtRr3mjHCDHpeXuZAoJhJaVtUKhVFdC07EUfYB5fLpvIFZ 8pM4RuDdrDnzGETvIo16LyRMCgio0qtKBJ5i9Inf6FDQsbSyxCC5lObSpMVlJuYN6jLw tur5ONAX4gZDeJkUpcwRxm/Ocq29rt79/nynqbFJUobS6RZCfdwiObCtqRkGqQ58Z8cf KEHs26upmsxTcQ2HwGjI6yNTFGB69R6xLowc+WTllAUfR/LpdU66jnO74oH+PMiIVr9h bjSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743833014; x=1744437814; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nRO81KAlWVAUMNmlMPrVLR3d+OGjp9Qz/jso9myHPaY=; b=FkE+0tyjQcRJTvzoasw5dThYdAS0CnpfohJX5h5Gdp9MsS2cgG76dOtTb/thCEnG6S mhT7iZH/RsUPnsARGOubrFApqko3/dIWpTNvDCFMLAt+zz/pXqoACoXuwgF4iv+L4ODo B1dhi3z1A3OAeaBavxgUJzOkFJQARRTAhniVOpF0s80oiYlJd7fxH8+1i5zTEnR7ZbLP cC6HRR//IRZTp4gzr7C4IDVoMUQxxIOR0TfRCzHhVcbamvJ0m63OFUlBrnRXkQy9xFa4 tNR1IWdevMgEBSQVpEp0vMxf6simK08TVmd99bilM3Q5rUEPsmhKA4JXLdx1p/E808ze AsRA== X-Forwarded-Encrypted: i=1; AJvYcCVUjA6OIMo9uMfL00XFPDin3+bq/uraE+Z5s18/mllQ2JW5SS5/aYb27Ei3A+I4uBSIrax6dnlb9A==@kvack.org X-Gm-Message-State: AOJu0Yx31XPGdTH/z53+iWCxGTLzCGeEKDJxwL6m7+wibZ3nsO+aNSRf nJUMGU6GcxnIAhebwS9dNYAfWxrQIOjuXSgzfO7sFp5Xp3UlRbF8 X-Gm-Gg: ASbGnctr7Io5q+NGOjYGnFHHK94+M8S1GpImV9sDeHXIrsWLwMKNamKdoa91U2jK+YR l7FUYPNq06LhCt0ES94Q9BG5vMHJv/g0nJ+P5RS3oAIXm+VQWmQb1STFHPrt1ZAun5kbiI6IWUI vepB9hBTimReoKyPt12caOWSD32leaS1VDR5rQWYmyHBebi3gvq5+59Ouu0wAJ7hvQUxreGqh5w El5pJde3ilcnnLoSr0AA9Te0Dwy9Uzsd1nBELF9Mc8PQZWqn6W/CJ59clTars49ePKfCnm3xovV 26Fal243VRTcHmzMJPscZoQi7dh8XhJsxfy0ibwP84KcZuwcAOhQwWUX9rzWcYQWjIQxon4Kgqq mjtvKNyHxgYoU++3m X-Google-Smtp-Source: AGHT+IGmLCehceYuxYnDZ8h/6oqAfC1whuCNoJZaNCcyzQLynV+wCAvXVR0Q9D/33wJuDcE0mzaGpg== X-Received: by 2002:aca:2b16:0:b0:3f8:93c5:6d9a with SMTP id 5614622812f47-40045602addmr2712809b6e.15.1743833014243; Fri, 04 Apr 2025 23:03:34 -0700 (PDT) Received: from my-computer.lan (c-73-76-29-249.hsd1.tx.comcast.net. [73.76.29.249]) by smtp.googlemail.com with ESMTPSA id 5614622812f47-40040080a15sm926565b6e.34.2025.04.04.23.03.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Apr 2025 23:03:33 -0700 (PDT) From: Andrew Ballance To: Liam.Howlett@oracle.com, ojeda@kernel.org, alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu, dakr@kernel.org Cc: akpm@linux-foundation.org, gregkh@linuxfoundation.org, wedsonaf@gmail.com, brauner@kernel.org, andrewjballance@gmail.com, dingxiangfei2009@gmail.com, linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org, linux-mm@kvack.org, rust-for-linux@vger.kernel.org Subject: [RFC PATCH 1/2] maple_tree: add __mtree_insert_range function Date: Sat, 5 Apr 2025 01:01:53 -0500 Message-ID: <20250405060154.1550858-2-andrewjballance@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250405060154.1550858-1-andrewjballance@gmail.com> References: <20250405060154.1550858-1-andrewjballance@gmail.com> MIME-Version: 1.0 X-Stat-Signature: n4hkk53g4hkk849qkpt9gazy6xekpdqe X-Rspam-User: X-Rspamd-Queue-Id: E72071C0006 X-Rspamd-Server: rspam08 X-HE-Tag: 1743833015-681904 X-HE-Meta: U2FsdGVkX19JpV1MW+A3NqC/w+v5mbvD9HLw2TWb7mnNlPYUi2mBF5kCn3cWIQ5xdOcn0GZsZdh33apTJtXJLsbeL+XAsF9MdXGJNDWlvoqAGHMjX1adzB4sb8pvPc1AfUe0TASQSVninVpzkyfpz6xc+yH0+gMrF59TmKxLFM49n4CbbGhNqnraCiFtawpZHFsc2pGBmQRoqcupgqU9pNQ4mizJLvmVVoYqYMIaznS4ZM3XId1EOw0++sA0Tl2Y9NWlNF5LqOdep/QolJ2oAWxUt28RbkoX5iS8OiZo8F2NbDV5kTPNiGaemBozW1gt0IWas1u5XWVyRT3gWLrTb0L51SENUST6lCFNIYh1dJ/ddOHeAU93Jnw5GMd6qgR3f6cZ9Sa/XBFaJxD6e2sGJWGP10dGQfpqPQTmEYGZH70FkLRPeCFkUl9Pf3WvK9fAercoqBrSP3TU8Sxx0mh7gLuheVGYZgOi5s/5UI3TPe81MM0bfire/honLgSXPuF9G6wjAKIng2xX06uFWJMk6Y6+5EsEqVQNLpNHS1PgyQMarevqs6fcHQvGCNGsu5LM8RsPKgsznWq1RUHmxSK5n38BczTxCFEaQdbCmdGjkYV6oBtLpFDLNXVuGR5GbZ2MN0CIw2F5NuGPVbKETTc5cDZWfeyjosf45EP7c33AYPkmC4SNq17CmNvfrtnfzMeOCzYpffLBY6Djt1zn2HGN4H0o2fNY8FBKbMBd6yhimscB+7Oo/en4KIja0KJl77rn28yZEkjCKF0DUnetGfzOr2Uh+SQHgalFSV5Ohl6TDauCG/tsUM0k8z2KciZGMcTFeSJ25nMlQ57D7YZVHV8iF6dYCgTBRUsq7FWRMHMW8pEFl4JxkzF8wJP1i9SmD0A504SUt9J5Ll6fKUYVdzuHJkJ+y3HiPhvVxlHj9uCl0BeUS+yeCuC5qH5skcwHXkmzjrUrHKodj4CMMA4w2R8 KDCDovG+ gT0BdV7/2/kS4/o+Tso2Lzps0UPb9qZjUqWoE9E+ffh9b2BAINJitG5lKx4owqy1H7g/0hrjbZygzCEIKjRZaWvZCck9QDozvynjlmgWPTj3jxDd6al++GW3q1AYjA7i0QW6twwP7J81O6N5mlvCpj9GAOzNg0AtnvH/tD0th6WnFnjdHGotzG0FUWLgZApxfgVj/hE3L8QeRa8GF9kiOEQykELpcvbolhCTp9ulCpGXgq5nlfbMKilDOUuRxIWoXxjVRNRleEvT3wbIYAKWa8UbLyCplyqjoP1wGOVZtzDoYuEn3mgPRzYQuLrl/blElrYw3eOqL12UQvnrNPGm0AReEEnMln//1UapXqLQNWr25YtrosjqGVTejLXwzWXRp4RUCuA+C2IIbyqp7ZIiG+8CHVoQ4zrramt/l5SAgZ8A4XlvJ3rJuQBsDn2PLB8bCvGFwHgol4EK06aKl76dlHKzbqxBjggkCL8lRv6DVXNvm4S81ilY+9B0vUg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.425892, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: adds the __mtree_insert_range which is identical to mtree_insert_range but does not aquire ma_lock. This function is needed for the rust bindings for maple trees because the locking is handled on the rust side. Signed-off-by: Andrew Ballance --- include/linux/maple_tree.h | 2 ++ lib/maple_tree.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h index cbbcd18d4186..b849d57e627e 100644 --- a/include/linux/maple_tree.h +++ b/include/linux/maple_tree.h @@ -329,6 +329,8 @@ int mtree_insert(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp); int mtree_insert_range(struct maple_tree *mt, unsigned long first, unsigned long last, void *entry, gfp_t gfp); +int __mtree_insert_range(struct maple_tree *mt, unsigned long first, + unsigned long last, void *entry, gfp_t gfp); int mtree_alloc_range(struct maple_tree *mt, unsigned long *startp, void *entry, unsigned long size, unsigned long min, unsigned long max, gfp_t gfp); diff --git a/lib/maple_tree.c b/lib/maple_tree.c index f7153ade1be5..e0db5d3b5254 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -6387,6 +6387,43 @@ int mtree_insert_range(struct maple_tree *mt, unsigned long first, return ret; } EXPORT_SYMBOL(mtree_insert_range); +/** + * __mtree_insert_range() - Insert an entry at a given range if there is no value. without locking + * @mt: The maple tree + * @first: The start of the range + * @last: The end of the range + * @entry: The entry to store + * @gfp: The GFP_FLAGS to use for allocations. + * + * Return: 0 on success, -EEXISTS if the range is occupied, -EINVAL on invalid + * request, -ENOMEM if memory could not be allocated. + * Note that the user needs to manually lock the tree. + */ +int __mtree_insert_range(struct maple_tree *mt, unsigned long first, + unsigned long last, void *entry, gfp_t gfp) +{ + MA_STATE(ms, mt, first, last); + int ret = 0; + + if (WARN_ON_ONCE(xa_is_advanced(entry))) + return -EINVAL; + + if (first > last) + return -EINVAL; + +retry: + mas_insert(&ms, entry); + if (mas_nomem(&ms, gfp)) + goto retry; + + if (mas_is_err(&ms)) + ret = xa_err(ms.node); + + mas_destroy(&ms); + return ret; + +} +EXPORT_SYMBOL(__mtree_insert_range); /** * mtree_insert() - Insert an entry at a given index if there is no value.