From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 11872331ED0 for ; Sat, 1 Aug 2026 15:51:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785599510; cv=none; b=KYTUc433+WwKGZOiyberxXixTUaBUV7Qhczn5aPR1dGSchMNM2h8zBFnph7la2AJMnSXg1Tm+02CDOK+KmWIfS5xgO1/BEKOE6uwglGUAYigUBWNv9zzdplyUR48bmsUW1AL6onmjrzgRm69lmaHcnxfp8Q6Rfa1HV8MATN7Ivw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785599510; c=relaxed/simple; bh=PHUqDIjZ/fDz2a0/0v9uQuWQT4kuiEnCn87yNoeA1yY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ceyifdA5bUClvJbDPSQaKkrcy4C3enoNl+neSOXUnCzBv/X2TqduG7VJ1UHPj5Gr1L9NGmie0qWAAbux0UxlM/mU2N0x1HFP0dt9s0AgTExi2DiuXa6R697wu3R9Oq2lZZpK3OCkDaOnTg62CXynyf7ZTNcQk9x92yvvSzo8XTY= 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=NgBn7OYN; arc=none smtp.client-ip=209.85.214.170 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="NgBn7OYN" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2cea3004256so22570165ad.0 for ; Sat, 01 Aug 2026 08:51:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785599508; x=1786204308; 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=ijUzk6DmoV2KfP6NttCifTbOeJnZ78uDbymc6z2HdV8=; b=NgBn7OYNrfRieIBwlg4KoAGaQqQTlisou0OcugD6Ej6l/TaCFca1OiqCFyMpkC//QX r3UzS7SaCQ0sXrHi0EcoqlS4Ji6HKYLrWuwEJBOJt4z4LQTy7a1Sd86sPqoLTYbS5LWz lNyKClBDTeDgtecTN+13oelghUTMJ+Rk9K+65P+ktmgYx3fzP29/3slmIrJuXwEcqjK5 HZihhFREitU7d+ghO6rCdjhDYR9CoWDEjMYxL8E0TOjUIkmdI4wd6zO+NZR73cE7hvah 7vUJQry9aFAW3SldEaNxvG9FSt2XLDzrfqX5y3najTxpF3VuU2eOA+ZOvct8Y0iX7o0C uKzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785599508; x=1786204308; 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=ijUzk6DmoV2KfP6NttCifTbOeJnZ78uDbymc6z2HdV8=; b=ZNG8x0iockD30wTMeMnpExnJGG+0oTS9IHXas9ydDwPAJZ9l7v4i3W9asSte/LEuua AhYNH3SzS1QHOg0K8VmLplQgh70L9bBYOZmDZgQaJRqymRiKB5UaU7lLMs9rnqvKQKXL Sbfb3/Vlf/WOQqOEANtjd7Cd5tEn/0tlcB7qa1JxK3zYR9Ix3ySw/3MmdcUhh3zy5pSd y6BFGDygvjTJ+IqVFH8SITPFHFJJMoE+uUIaBgWq6udhoEhSVh3XgKtqCh4ZuNRI9bZP cUrfZcyxHMfeFJOoCbf1OTkdgG610qHAgMAK6w1iN7lZlV/mfqbNtq38yPdJg1UY40hp KniA== X-Forwarded-Encrypted: i=1; AHgh+Rr+Ko1dBLHOKufndje+38Q+P5JWODBljN6p8QIwUb4zwN4mz8lZybVh1iiLXnvdju2mrxVPHx0s7AByMb0=@vger.kernel.org X-Gm-Message-State: AOJu0YzoyfGvjq6g+CWxizjHD3misg3G/Z495GHVVinvu9cTxZ/EK/h5 PCwDBC8k3jPFp5UJyTySScUKbu4g11ug9QlgqMdV4o3rI3qO+xx9MOqx X-Gm-Gg: AR+sD11ZgcpEoXlPO3+qLkW3dyV/A26SyhYaNXk6bqFCXHIagX2vvdR/ds0nacgZPG8 2K/Fk/sde6rdmheWF0T4BeX39XDA1pU93dr24fe27//dVOT32oPq3Ydn+r8w6YWa9Fv3QZ0t+JX HRjhOS9my2CqrrBDfDL3MhTSaeseK4mdCicX0nfvEE/XJf/+BaHdg8eN6stG6SDbOuEzhtYZGha VNSDV6dIJDrRWp6AId9huqUmjN2QDtuR7qjW8qEQLd86TJ90p46cTI2tbJiO9wlyVYod+6vo/93 KsfnB/5SCm4gzdnrA6dW1wcF0zaQa9d7DAItPAubwocPRh/75poRaz0qufAL/C3vUYrbEYU9Rea EvLXe0mDhH+sJgK0tZmBWzFSJO15iyk1W8DsSnyJFrlGMmm/zQTldREjStKYz6p8t3RckSXOU0Z MgNzwTgT+EajK3O9KI4XF5riB7qG/jF5UVaGPN8bmFULkyMHZUuG81kHAvzPv2XdnRTcK0wEf5Z t3tAkUDEVD11ULx49QPka7SFGmRUR9hMy0xcVcdbZBwCNC7qhfhppAq1rg= X-Received: by 2002:a17:902:e945:b0:2cc:9179:335 with SMTP id d9443c01a7336-2d0521e87a4mr39523185ad.8.1785599508438; Sat, 01 Aug 2026 08:51:48 -0700 (PDT) Received: from 127.net ([2620:10d:c092:600::1:61d0]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d04b12202bsm18287605ad.66.2026.08.01.08.51.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2026 08:51:47 -0700 (PDT) From: Pavel Begunkov To: Jens Axboe , Keith Busch , Christoph Hellwig , Sagi Grimberg , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-fsdevel@vger.kernel.org, io-uring@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Cc: asml.silence@gmail.com, Alexander Viro , Christian Brauner , Andrew Morton , Sumit Semwal , =?UTF-8?q?Christian=20K=C3=B6nig?= , Nitesh Shetty , Kanchan Joshi , Anuj Gupta , Tushar Gohad , William Power , Phil Cayton , Jason Gunthorpe , Damien Le Moal , Alasdair Kergon , Mike Snitzer , Mikulas Patocka , Benjamin Marzinski , Vishal Verma , David Sterba , Ilya Dryomov , dm-devel@lists.linux.dev, nvdimm@lists.linux.dev, linux-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org Subject: [PATCH v5 14/16] io_uring/rsrc: add uncloneable regbuf flag Date: Sat, 1 Aug 2026 16:46:26 +0100 Message-ID: <65be6058af60c33328f9ccd8133d24e2bbbd0f84.1785596451.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 406619158fbb..f041b0db77af 100644 --- a/io_uring/rsrc.c +++ b/io_uring/rsrc.c @@ -1381,6 +1381,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 98ae8ef51009..83aa86e6f320 100644 --- a/io_uring/rsrc.h +++ b/io_uring/rsrc.h @@ -29,7 +29,8 @@ enum { }; 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