From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm2-f13.google.com (mail-wm2-f13.google.com [74.125.225.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08F754A689B for ; Mon, 21 Sep 2026 13:39:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.141 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789998002; cv=none; b=rl6tdIk4e495Eb3b/FIQ8YEetjtLhO18PkLHSu5U53dbv2I9QeDow1ZfvFt1FU7yDDnQd1v1vaFN/LcJigVp7BxAjuTjsflBFPSP8Da3jGHfyLz3/nlcqJc4jpwZWLHEs2obiEGu4CejEL66lTrdPRvji95ZK8iVmjFVa+aK+R0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789998002; c=relaxed/simple; bh=iU1u1X7cruHQchsBcaFSFlP5wT6XT+YL719bzSe6aAg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E6bkKzl6iIrZsapoUag0BJzGxgKBtfEOpnm/xFp0zybrQe442NbiDlFHRaaIEFHYi2CwRcZepPeM12nDG2w70oEISBHrbUFP+UJyQcWuDGUyCoKE74IZMmsDeHmjoarAJjbCem7QZ4E1Xha0D9WWchLfVL0bRzZJStcYPqradrk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=elBFyK9R; arc=none smtp.client-ip=74.125.225.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="elBFyK9R" Received: by mail-wm2-f13.google.com with SMTP id 5b1f17b1804b1-49e7bcb94d3so20695365e9.2 for ; Mon, 21 Sep 2026 06:39:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789997998; x=1790602798; darn=vger.kernel.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:content-type; bh=0usqXOyq3o4rQ+AIVUUfsp1gP3m25NdfBnNXnNuf6eU=; b=elBFyK9RLFilzpG/TmAgpW9bxj8muxXlg99N53H3eV4np8s8VqfEDigO00OvlkGv7n Gmwp4C5/ob2Pro9ciGOeYH6ThlUqwkdH+stElgaGkZsza5457AQprteLFhFBtMI0NNRk AjwFF26AsXoiu/xAOtkESEfPzteWMQET5/oE/Mjkkrm+YL5fhMU5QBjId+7Sb2FcMAlj nUSk/v7Om4jnAvdy6dLPkgGs+LKIIX5PIFXd/irK4vABWAb68tvsCguy0Y0XBP38kdoR yj4nft0NVHK7jUM/UdVXstPVaL1fw88520VcxrM6MKV/PzME4POYRepXQ7MQFJacuUMj koMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789997998; x=1790602798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0usqXOyq3o4rQ+AIVUUfsp1gP3m25NdfBnNXnNuf6eU=; b=O+Tdk42IzmWtw+UF8V1zDle87DCLAeFo2GNnKqGoWyz7PV8Aftm1Bwu/RQv0SXXXhx Y9vegYAc4siL45QGoD/lYf7/nzUQ6JuhG1CmuiDh4FzdH7IO1Y2ldE410ReAJuoUSC+U 317Mo+zt1EICSaxvkySgrQWvGQ58vzWlSiBqVBvVcJq8UyYcDMu2OCaWdOrbci7HgPns G17L+0w5A0P8/coAfvoBVKO2T9C27Lc7T7sVHMClw9XFOGTWz4hf/gSFFy+cQ+SBQqqm amd0qU1Se8UtBoqM2Ia2y7JOCxJ5rRh9na73XY5VNZShzzmiVr1cp62SWKyY3zvYY/qf MGZw== X-Forwarded-Encrypted: i=1; AKwUvBwS1RTuKuUCXMfvjSEoZK7s9ZCoYRyRH81JMtEbUXQcQcYemvIauzDyG7FBT/Q8d3M5aZwOWRQWyxa5l9I=@vger.kernel.org X-Gm-Message-State: AFuF++lw1Dqpv2BBW8TJqIDNhGAK439etHwdURdaSYgW7dtNvR9g7fUD J0Ubp9zaE1EEWMZv8Mwl9Q2HePkYtYlqkF0rAq394mpAcLpvjhyxHmsO X-Gm-Gg: AYBFou2HvSPYmSw/0fbv1iUvzcT2YY48ymCiE9y/nTye/PsypFpFlJZeJWNjJiXAaHe VL3mLiS4W1YzHsMoKxbADINy5LO3WJUmcXzFCWxCsdL6tYgRxbHaRCopdekq0LWFx9lUFuIxM1/ hsiAlTT1tF8TPmfq90PL/pnOR1fQcTZWkGnseIV4fktV8wxTFnnT/9fdS7bsaWYJnX15aGAZxOy Ye0v6xglziVQgQ5arI2xwv1o0Gz1mADII1twnk92JML89kMdCBrZBWJzKDZ4trMxPzsTbnKO6bY HMbvV+zsm379DU2EQDzhn8EyTUAFEH0gUU+xI9ZYDYEVL3cpKxt1JuFbFtMwpVncrnwEndTghK0 ihYqMVq9gjRvWmnTPw2yZMk0c2FQ/cLiMXtByUCXL3L1GquvLjJxZpofbfgAdL5/2gjM6NHMR48 ZUDaohGwpheMW0yRCbQGNxrFqe+TLnhykdGKuqVadw+sZir8uS0FTJb2kodvZK0fTwPeuTeCqLD heqPxY55xjkmM4zsw5ImbeiHI2r6/eU/R/pd6cJ/T//tF8p3G/HmnBmnmtZ1Ngzi+cTNOPF9aKj tY4NodirMBtv4IWpIL61zcLh6OihyqWQ+hFNS0wc X-Received: by 2002:a05:600c:34c8:b0:49e:732e:6b79 with SMTP id 5b1f17b1804b1-49fc574eff6mr149861745e9.32.1789997998153; Mon, 21 Sep 2026 06:39:58 -0700 (PDT) Received: from 127.0.0.1localhost (82-132-213-26.dab.02.net. [82.132.213.26]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49fc585920fsm617171605e9.4.2026.09.21.06.39.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Sep 2026 06:39:57 -0700 (PDT) From: Pavel Begunkov To: linux-block@vger.kernel.org Cc: asml.silence@gmail.com, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-nvme@lists.infradead.org, linux-fsdevel@vger.kernel.org, io-uring@vger.kernel.org, Christoph Hellwig , Sumit Semwal , =?UTF-8?q?Christian=20K=C3=B6nig?= , Keith Busch , Sagi Grimberg , Alexander Viro , Christian Brauner , Jan Kara , Andrew Morton , Jens Axboe , Nitesh Shetty , Kanchan Joshi , Anuj Gupta , Tushar Gohad , William Power , Phil Cayton , Matthew Brost , Alasdair Kergon , Mike Snitzer , Mikulas Patocka , Benjamin Marzinski , dm-devel@lists.linux.dev Subject: [PATCH v6 11/13] io_uring/rsrc: add uncloneable regbuf flag Date: Mon, 21 Sep 2026 14:38:55 +0100 Message-ID: <9b71636a03f2345bcc09127d77eb6b294a1d0938.1789997898.git.asml.silence@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit It's hard to implement cloning if the internal structure needs to be mutable and/or relies on other ring resources. In preparation to such buffer types, add a flag indicating that the buffer can't be cloned. It might be possible to add cloning in the future for them, but that would likely need reallocating the structure and reacquiring resources in case by case manner. Signed-off-by: Pavel Begunkov --- io_uring/rsrc.c | 5 +++++ io_uring/rsrc.h | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c index 83a7ad9f5bc7..0b526b094dc9 100644 --- a/io_uring/rsrc.c +++ b/io_uring/rsrc.c @@ -1434,6 +1434,11 @@ static int io_clone_buffers(struct io_ring_ctx *ctx, struct io_ring_ctx *src_ctx if (!src_node) { dst_node = NULL; } else { + if (src_node->buf->flags & IO_REGBUF_F_UNCLONEABLE) { + io_rsrc_data_free(ctx, &data); + return -ENOMEM; + } + dst_node = io_rsrc_node_alloc(ctx, IORING_RSRC_BUFFER); if (!dst_node) { io_rsrc_data_free(ctx, &data); diff --git a/io_uring/rsrc.h b/io_uring/rsrc.h index 9ef88383b363..73d7b1ebf0b6 100644 --- a/io_uring/rsrc.h +++ b/io_uring/rsrc.h @@ -26,7 +26,8 @@ struct io_rsrc_node { }; enum { - IO_REGBUF_F_KBUF = 1, + IO_REGBUF_F_KBUF = 1 << 0, + IO_REGBUF_F_UNCLONEABLE = 1 << 1, }; struct io_mapped_ubuf { -- 2.54.0