From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 EEED32D7DE9 for ; Sat, 1 Aug 2026 15:51:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785599510; cv=none; b=hLIeTnny5IjPuaJ6o35uaCeRN1+aknNiVExosJ5KeDfCRZOvVWiWtDMj29eswytjnMcanSyanG3XH8LHu5KMGVMzuyfs4VFyJbOwZ4jsGoHjeAFOh0Ls3tDDHSZsf3muM0YFvvPo6+eeZ2/nU3Gh2lslGz0xKRhIkPQ2Kag/NXI= 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.172 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-f172.google.com with SMTP id d9443c01a7336-2cea3004256so22570185ad.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=i4nnoi49633vTl5LXkD/8UtWnGL2U8BIG+nO6JU4pVq/jpbpDjE3tkxqtYFfNHW6IP /jpJgi5cQ2E3orim7hnwEFhJr0y8yohCRvtAMFGWRsRw2mvikgGWMwHLJJlyI/rWJyRX HZXlgmX/V33K0CYAwXjCYJkEe0S7FJfl5h1PeNAKaassk50bCXiwaSIdBv45Mwnd3UHd +MN77s0Rx8gazGomSJUTj/F17Rwz5ljJ84ecaoUnwF5MSF3bOZFbZlR46uwIHg2dUyh/ kRCe9FB8qZUU/2SwPteBQM5SxsrGlUZznks7rE7102IxIs38gt+53xFBBmR1ojFInESO KekA== X-Forwarded-Encrypted: i=1; AHgh+RrTeQan/Es0BYysGQkST32CUKBB366TjbJDr0dzONGGh+L+OaUdAvx4vwKLngKbY6GgFQ++IU5pqQ==@vger.kernel.org X-Gm-Message-State: AOJu0YyqX9vBD6quaDNgL7hW31DkIg9LKkCOrlE//7bLTFi2R+RIb9ax 49iAp2VXnPvWuqHgFMo0TRUjqbZNYXo9/c0zUWyNjFXvrDcAqBID+e70 X-Gm-Gg: AR+sD13Tmy3JR0raTo7wTORCHb2g57OjM/Biy879APy1Dk848ovlNJuLSTgyJfgrbvF bfZaeb3oaoIOmzZmS9kL10YME/GpALux3Ugu76vzuOeaMVIyiBsVJC+Ag48TdORK15WlsMCu5yL mHiZYDDTwVMxEeUcTc5jds96fPc4kPO4oawEu14RHbsnkxNRd6NrCk67+oa6yDwkGonyDLC/WDz KI1o/KV9R3cHR/HYRQV3ksbK6vIkcGfvui92GKLt6gByOtZFBtEIKm7CfXuWhhjXgx9ES0HbLMG E+ZuMNr1/nOLhEajmOZojDaT5lBcrR490Ygl+OLEHRyTOWI2dbwnMG44Vp2qyj3tdDp/i4PbjDu 0ZMhuY8l4BD5Uqw6TeaxtOa2XYdHYElOUw6zbfGoqJ507+4YrBPACnACqC9gcZ2kQ7SYKeBkyiV YOFv8ctyS82frGRqmx8QsHg7Rl0TlEe+bWY4cmpZjlTHceldaraZALOMZtEPI+tdPdDYMN2hIvC +n6p11JrRrEkgzur2itWTvo81CuEh5pSCM/imstdEgENZlpqwU0zp3zJa4= 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: io-uring@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