From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 0D45547A0CB for ; Tue, 28 Jul 2026 21:29:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785274201; cv=none; b=dKmoYdjwfuiqIOdU9CkPxIHuCnlA6b3c9eS/67brcvELaY21rpik+1naHnHPFHoQ6v1DWtlWo00gndMrFBqQQXdMZFze+VeaFKtF2QNCiF7cGqujtKJ/hSgqpSjJZKXv28Updijm4l93xDECpYYm79twUMSs21KzSzmbIK92ljg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785274201; c=relaxed/simple; bh=XDQjNbbhKar8uY0avv/kD/aMx3Th5Bc2yUeUMO7wAXQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y9WnGd5XuSfComc12VMIVmHmNiV9XL5q4Wq5TUv6MZjnx5k648ZFU5DbzCojij7zSd4taZvi3uHG3/awrZeyYRnCH1JlJuRr2l+HsB9Wgaqf6WIUxPm6cZeq1xgsBI5T3QGnX67p2So6b9qZXDtjKHx7NZXHerOIgxQrxiqr1II= 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=Uj3Ados3; arc=none smtp.client-ip=209.85.221.47 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="Uj3Ados3" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-4799b3f7c83so240990f8f.2 for ; Tue, 28 Jul 2026 14:29:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785274196; x=1785878996; 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=zGURBnMw6fzU2CZK+DQfnrMi2Ya0rXE6R9ZmtmaHTkk=; b=Uj3Ados3I5BygJMeRy1ORSwpuFbNVWU5qbh7dPi1mXyFgd0XbJ7SiSJIzlSSLTWEG3 O5PtiG0m9pRveLollrN9AX3Xlj8kcX2vuvezY0FIwQ1bEJYoqxlz7RLacuJIa/5THE4Q BG+J0mGtIW8OjuShFXBnA/IJvA6FAaII0wF37N5olcgbsBGp8AyOwS9qVGEg+MgFqfkV aY1WiHqvj+VJR8oegHWnnvIOq4HKcKRGtC6SxurENOCE/+zImYlNOUKK6zzsdBtUegVu CGeI4ugz3Z6J3wegOPtlDrTgjjbdFBmAT+x5dVLWst7Bc7YH3liXWpGRbUWy8MHZuwHt qgbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785274196; x=1785878996; 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=zGURBnMw6fzU2CZK+DQfnrMi2Ya0rXE6R9ZmtmaHTkk=; b=YOlbaBa56QxZyrRzDS2D3CvQkE4tMOkjLLXMnk8cvn+QCaYB6ZQDY2Bb4KpQ9Us2+a ZZEsVgntd/m3lB50KHVmq5wnajqo65xBBSmODH4wbze8Z67j+gOK390YDS6O3KpFkYMX 3zjrZADcUniVJvJOqL2dPfUWiPAdanfa4vny59yNiTnqb0K4N9IwM/c5K953gSbHXhEY SKt/hQdSy0LZdLfbxM4OMuFrjc/DeyxZ6uCqPJeWhH5ZGD13XWKkFPot01UNDvR0H+pt vY9jQ01MJmjofEO5Xjo4I0fN2MXaeJm0X41ipmdkXBdQuhnoGIwiwZ8kyxbKVXjyRq2F nsqw== X-Forwarded-Encrypted: i=1; AHgh+RrYmyN3xOCxJjMQShUT0tj61V3dSeamUsuiWORzSDkL4ymtFYi6SwCY/fPqoi+fm8AvqQjuEOxCrcOc3Us=@vger.kernel.org X-Gm-Message-State: AOJu0YyQXjrcRBYCgTvq9QsgIYBZRgLBv+3HRbysDANw8Tj9rX9lvw33 ZBaxs/dJA/WpcVg7NO+YylvigFuaOIjqeQu/MxPP+wvCnFbDJEImYrKr X-Gm-Gg: AR+sD13kZkeC+QM+2h3q9pLuSAAVn8aUVjrTUGA2NSFXIEhNFDfl/fETMaBOYbfUV9+ Fha3I2Q13qlDi4NZ1aftpO8SLYTqyOhHKbXuoOsmOYqc5Yja9pGbDECIfHZFH09fJP/eFOy+2aA FsFaGsWstYWn46G7J9apf0hAQjeB6Ii/I4n7Kjh/cKZmKzepWNLOr5WIBRo3NRwVsXHKwTHh9It o9IrPdlsY4+3ilxec0m3A56/nvJjQpS+8WL88DafQYa5c9Pt4JfmMHOukHUwZ2KqSQwB5K/QTz5 DXSv+Xm++rSdo+cQf5f7mmepUxImXPgxJQbAlwJ9458B1BQ814oHl4UatSMZS1xuum7hdB3t73R kNnAq+rK+qAs+gRR6TrmgHyhy3+9o4QoSImC9zYFqIG2Is80NixfbuZxjUnxL7YrjNJCe3H5eFp 68cvF7sSk0I4ICg6qEII7GO28ef47tBl6ky/lqPFqAqeciFQHi5BlOGFhPeZK+DJe9NpN9oyEym JfCNW/D X-Received: by 2002:a5d:5d09:0:b0:47f:94a8:d6db with SMTP id ffacd0b85a97d-47fb1f14a61mr4656094f8f.34.1785274196213; Tue, 28 Jul 2026 14:29:56 -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.29.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jul 2026 14:29:54 -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 07/14] block: forward init_dma_buf_io_ctx to drivers Date: Tue, 28 Jul 2026 22:29:19 +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 Add a simple proxy implementation of init_dma_buf_io_ctx() forwarding the call to a new struct block_device_operations operation. Signed-off-by: Pavel Begunkov --- block/fops.c | 14 ++++++++++++++ include/linux/blkdev.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/block/fops.c b/block/fops.c index 37d491f45015..d83cdbab65a6 100644 --- a/block/fops.c +++ b/block/fops.c @@ -926,6 +926,19 @@ static int blkdev_mmap_prepare(struct vm_area_desc *desc) return generic_file_mmap_prepare(desc); } +static int blkdev_init_dma_buf_io_ctx(struct file *file, + struct dma_buf_io_ctx *ctx) +{ + struct block_device *bdev = file_bdev(file); + struct gendisk *disk = bdev->bd_disk; + + if (!(file->f_flags & O_DIRECT)) + return -EINVAL; + if (!disk->fops->init_dma_buf_io_ctx) + return -EINVAL; + return disk->fops->init_dma_buf_io_ctx(bdev, ctx); +} + const struct file_operations def_blk_fops = { .open = blkdev_open, .release = blkdev_release, @@ -944,6 +957,7 @@ const struct file_operations def_blk_fops = { .fallocate = blkdev_fallocate, .uring_cmd = blkdev_uring_cmd, .fop_flags = FOP_BUFFER_RASYNC, + .init_dma_buf_io_ctx = blkdev_init_dma_buf_io_ctx, }; static __init int blkdev_init(void) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 9213a5716f95..9f4c92e51dc9 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1682,6 +1682,8 @@ struct block_device_operations { /* returns the length of the identifier or a negative errno: */ int (*get_unique_id)(struct gendisk *disk, u8 id[16], enum blk_unique_id id_type); + int (*init_dma_buf_io_ctx)(struct block_device *, + struct dma_buf_io_ctx *); struct module *owner; const struct pr_ops *pr_ops; -- 2.54.0