From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 B6D8C47DD66 for ; Tue, 28 Jul 2026 21:30:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785274211; cv=none; b=X93zkNr7oGpo7O0NvOCr83tHgef2w8JctW0SYzqkLgyB2dALsO4hs3Nn94loee+Y1uAVF8BDk/UOLBKSwZice51hgeY5rd0s2c8i2AA0oLFxgsHXDp+i3CgMzg/zdpFogNHRKDpt9H69NtxwKbQKKtG+qUTWAQH9UQf4x0+jyGs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785274211; c=relaxed/simple; bh=GOpsniia9YGwJC5+Tf9jZp7skqJgnlIpNpZfRP/ds68=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DwJtVwl+sqkf8m0hNKm1EdNx1FNXvzhUcbJJsYIMgD1A8H+5v90vGfFDU9OUVHGlQ1+1gWUeq5gA5/+BNyiBd/UKecuXXVXjgywu3AGay2HNQcmU3jU4O+jlme1FbQ5nF5Ds3w0Fr3P6kk44PM1bEVxbEnR16e/sb1uiiZ3PZrc= 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=H5Ym4u/V; arc=none smtp.client-ip=209.85.221.53 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="H5Ym4u/V" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-4728c12ba97so237115f8f.0 for ; Tue, 28 Jul 2026 14:30:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785274208; x=1785879008; 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=jomHTWh5pLJKgL2wIyki6K11K3ENYcuFeD6DEOIqSFg=; b=H5Ym4u/VExLT6WCLEE6Kv4YIjIw58vB034j8JEtU73/52h+pQnIHzfk9AFZZ7sYOjb 8zlZzzwzcZzyJN9OYpWJ55tzNZb0Mo6Waf1q38cQDVRs8lfGOHXMPls5sh4/rm8Leqmy gXWt8McGH1ltozIKZ+VJYO62dYGsgiFSxlNJtrV9ymcJBGJA7MTfe0qICFv3efxNTiUi Ewfiu/Ea/sINTuGolpH0q03ARYDniehuDgUm3WrSEVB4y7Nf8kgeqlwD7CDcQQ4L8f8u Ao9Ov92XKpNK+yJ/fcgLbF6EbI1zlAJ6KEoSzfPPH9VNM8LzJsDWMTMZKpQ3fvXK7dMo lepQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785274208; x=1785879008; 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=jomHTWh5pLJKgL2wIyki6K11K3ENYcuFeD6DEOIqSFg=; b=chrtTIisTktDZMwQ1VkvFS5gJLVsHpnLt+5zSEVwULz17rvwDK6ivcqrwxkcGY4FrB bavlExfs82sR9+HUzr1SYHWhuLIaxSq2LsOStsQkS9/++zApw473EJqOpCFH4Rk7ziIl skWjsBVxotONKiAwjjoIeMGQB5A50KYtJa6/e6qrEyjRft1u/QitF2GjYcaiJiVWxevG dNQZAMcf4mpf42NQlRHfBU1q3Y51CjVzkdxl1YBcmogaskjqRCFp3yyM728npdR60+Ol uQ0fbaF/usKADlQ0u/YNN22sQ9wc1corrAOihpkj/JIBFB+KvwkVLwNn0zsN5rB0QI3U SE6g== X-Forwarded-Encrypted: i=1; AHgh+Rrg7rwSx7A5O/CTNfljbE7Tf7+1goOlUyjB19M9Ocyri4s1EjH3ZIzaLqbV2ULkw682pSuxA6Hb/IJj3eU=@vger.kernel.org X-Gm-Message-State: AOJu0YzE34YZwALc/XcafkQP2m28ccZha4zZfPVfbB20Fqx6DGBYrA4W cKryE/Is1HXqcD8FDgeeCDcn1X92YjbRGmVZGsMHkHDoB+DntCGz/+/2 X-Gm-Gg: AR+sD13vWDde9fOwKTX+Dr5dqkOiUUG0bLr9vsZZstbVPmOVVSRxAqJpDVUrAwwrLpW DZADaGimo0HX0dRp+7qYuG9fqGDu2GAIRdeh6u94dF+ZtcvQClsh1kM/+CGvok3xunVgCXBdSQc q8hzz5mZcElj7xHrY8dXsVlJwu5oR2UM+IUr87Lj7vQOc4oxEudX8ldrnknZdVCMjUZzemVp9xQ lNrcyYX7aeDmb/OiNWrF3uESYXL2S16dk+SNUoFYxAO0Gt9hvY8VUEfza2Sx6nWz09HYCg5vXRR 5YHbWdmm7bIl5WkUbkf8IBmOayG6eRPhKD8AOFHlMqcFrpuSXsg2PiL2VLpClKv9KXSgoPZ7/IR hvs0YQOqmmo+/2mDkyLefqOcGBb0p/Cqyrf2lSJQbO6aCVHcAg7xV+SaENh2a+3cAuC2NHfRSPj bDiGwrqydtPoSzlkLbrRIK/sHgIWaCdR8YjJ943OiOZDUm0MaFflKPS7k2yg0zTp8SfMTzQZKyf kSR/SW8KRNMR05/wM4= X-Received: by 2002:a05:6000:2f81:b0:47f:97a4:f121 with SMTP id ffacd0b85a97d-47fb1f108a5mr5045703f8f.30.1785274208062; Tue, 28 Jul 2026 14:30:08 -0700 (PDT) Received: from 127.mynet ([2a01:4b00:bd21:4f00:7cc6:d3ca:494:116c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47fb6ac44bcsm2245329f8f.11.2026.07.28.14.30.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jul 2026 14:30:05 -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 v4 12/14] io_uring/rsrc: add uncloneable regbuf flag Date: Tue, 28 Jul 2026 22:29:24 +0100 Message-ID: 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 24fc3232a66a..d57e8a0380b5 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