From: Jens Axboe <axboe@kernel.dk>
To: io-uring@vger.kernel.org
Cc: joshi.k@samsung.com, hch@lst.de, kbusch@kernel.org,
linux-nvme@lists.infradead.org, metze@samba.org,
Jens Axboe <axboe@kernel.dk>
Subject: [PATCH 5/8] block: wire up support for file_operations->uring_cmd()
Date: Wed, 17 Mar 2021 16:10:24 -0600 [thread overview]
Message-ID: <20210317221027.366780-6-axboe@kernel.dk> (raw)
In-Reply-To: <20210317221027.366780-1-axboe@kernel.dk>
Pass it through the mq_ops->uring_cmd() handler, so we can plumb it
through all the way to the device driver.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/blk-mq.c | 11 +++++++++++
fs/block_dev.c | 10 ++++++++++
include/linux/blk-mq.h | 6 ++++++
include/linux/blkdev.h | 2 ++
4 files changed, 29 insertions(+)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index d4d7c1caa439..6c68540a89c0 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -3919,6 +3919,17 @@ int blk_poll(struct request_queue *q, blk_qc_t cookie, bool spin)
}
EXPORT_SYMBOL_GPL(blk_poll);
+int blk_uring_cmd(struct block_device *bdev, struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags issue_flags)
+{
+ struct request_queue *q = bdev_get_queue(bdev);
+
+ if (!q->mq_ops || !q->mq_ops->uring_cmd)
+ return -EOPNOTSUPP;
+
+ return q->mq_ops->uring_cmd(q, cmd, issue_flags);
+}
+
unsigned int blk_mq_rq_cpu(struct request *rq)
{
return rq->mq_ctx->cpu;
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 92ed7d5df677..cbc403ad0330 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -34,6 +34,7 @@
#include <linux/part_stat.h>
#include <linux/uaccess.h>
#include <linux/suspend.h>
+#include <linux/io_uring.h>
#include "internal.h"
struct bdev_inode {
@@ -317,6 +318,14 @@ struct blkdev_dio {
static struct bio_set blkdev_dio_pool;
+static int blkdev_uring_cmd(struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags flags)
+{
+ struct block_device *bdev = I_BDEV(cmd->file->f_mapping->host);
+
+ return blk_uring_cmd(bdev, cmd, flags);
+}
+
static int blkdev_iopoll(struct kiocb *kiocb, bool wait)
{
struct block_device *bdev = I_BDEV(kiocb->ki_filp->f_mapping->host);
@@ -1840,6 +1849,7 @@ const struct file_operations def_blk_fops = {
.splice_read = generic_file_splice_read,
.splice_write = iter_file_splice_write,
.fallocate = blkdev_fallocate,
+ .uring_cmd = blkdev_uring_cmd,
};
/**
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index 2c473c9b8990..70ee55c148c1 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -376,6 +376,12 @@ struct blk_mq_ops {
*/
int (*map_queues)(struct blk_mq_tag_set *set);
+ /**
+ * @uring_cmd: queues requests through io_uring IORING_OP_URING_CMD
+ */
+ int (*uring_cmd)(struct request_queue *q, struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags issue_flags);
+
#ifdef CONFIG_BLK_DEBUG_FS
/**
* @show_rq: Used by the debugfs implementation to show driver-specific
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index bc6bc8383b43..7eb993e82783 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -957,6 +957,8 @@ int blk_status_to_errno(blk_status_t status);
blk_status_t errno_to_blk_status(int errno);
int blk_poll(struct request_queue *q, blk_qc_t cookie, bool spin);
+int blk_uring_cmd(struct block_device *bdev, struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags issue_flags);
static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
{
--
2.31.0
WARNING: multiple messages have this Message-ID (diff)
From: Jens Axboe <axboe@kernel.dk>
To: io-uring@vger.kernel.org
Cc: joshi.k@samsung.com, hch@lst.de, kbusch@kernel.org,
linux-nvme@lists.infradead.org, metze@samba.org,
Jens Axboe <axboe@kernel.dk>
Subject: [PATCH 5/8] block: wire up support for file_operations->uring_cmd()
Date: Wed, 17 Mar 2021 16:10:24 -0600 [thread overview]
Message-ID: <20210317221027.366780-6-axboe@kernel.dk> (raw)
In-Reply-To: <20210317221027.366780-1-axboe@kernel.dk>
Pass it through the mq_ops->uring_cmd() handler, so we can plumb it
through all the way to the device driver.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
block/blk-mq.c | 11 +++++++++++
fs/block_dev.c | 10 ++++++++++
include/linux/blk-mq.h | 6 ++++++
include/linux/blkdev.h | 2 ++
4 files changed, 29 insertions(+)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index d4d7c1caa439..6c68540a89c0 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -3919,6 +3919,17 @@ int blk_poll(struct request_queue *q, blk_qc_t cookie, bool spin)
}
EXPORT_SYMBOL_GPL(blk_poll);
+int blk_uring_cmd(struct block_device *bdev, struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags issue_flags)
+{
+ struct request_queue *q = bdev_get_queue(bdev);
+
+ if (!q->mq_ops || !q->mq_ops->uring_cmd)
+ return -EOPNOTSUPP;
+
+ return q->mq_ops->uring_cmd(q, cmd, issue_flags);
+}
+
unsigned int blk_mq_rq_cpu(struct request *rq)
{
return rq->mq_ctx->cpu;
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 92ed7d5df677..cbc403ad0330 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -34,6 +34,7 @@
#include <linux/part_stat.h>
#include <linux/uaccess.h>
#include <linux/suspend.h>
+#include <linux/io_uring.h>
#include "internal.h"
struct bdev_inode {
@@ -317,6 +318,14 @@ struct blkdev_dio {
static struct bio_set blkdev_dio_pool;
+static int blkdev_uring_cmd(struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags flags)
+{
+ struct block_device *bdev = I_BDEV(cmd->file->f_mapping->host);
+
+ return blk_uring_cmd(bdev, cmd, flags);
+}
+
static int blkdev_iopoll(struct kiocb *kiocb, bool wait)
{
struct block_device *bdev = I_BDEV(kiocb->ki_filp->f_mapping->host);
@@ -1840,6 +1849,7 @@ const struct file_operations def_blk_fops = {
.splice_read = generic_file_splice_read,
.splice_write = iter_file_splice_write,
.fallocate = blkdev_fallocate,
+ .uring_cmd = blkdev_uring_cmd,
};
/**
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index 2c473c9b8990..70ee55c148c1 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -376,6 +376,12 @@ struct blk_mq_ops {
*/
int (*map_queues)(struct blk_mq_tag_set *set);
+ /**
+ * @uring_cmd: queues requests through io_uring IORING_OP_URING_CMD
+ */
+ int (*uring_cmd)(struct request_queue *q, struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags issue_flags);
+
#ifdef CONFIG_BLK_DEBUG_FS
/**
* @show_rq: Used by the debugfs implementation to show driver-specific
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index bc6bc8383b43..7eb993e82783 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -957,6 +957,8 @@ int blk_status_to_errno(blk_status_t status);
blk_status_t errno_to_blk_status(int errno);
int blk_poll(struct request_queue *q, blk_qc_t cookie, bool spin);
+int blk_uring_cmd(struct block_device *bdev, struct io_uring_cmd *cmd,
+ enum io_uring_cmd_flags issue_flags);
static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
{
--
2.31.0
_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2021-03-17 22:11 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-17 22:10 [PATCHSET v4 0/8] io_uring passthrough support Jens Axboe
2021-03-17 22:10 ` Jens Axboe
2021-03-17 22:10 ` [PATCH 1/8] io_uring: split up io_uring_sqe into hdr + main Jens Axboe
2021-03-17 22:10 ` Jens Axboe
2021-03-18 5:34 ` Christoph Hellwig
2021-03-18 5:34 ` Christoph Hellwig
2021-03-18 18:40 ` Jens Axboe
2021-03-18 18:40 ` Jens Axboe
2021-03-19 11:20 ` Stefan Metzmacher
2021-03-19 11:20 ` Stefan Metzmacher
2021-03-19 13:29 ` Christoph Hellwig
2021-03-19 13:29 ` Christoph Hellwig
2022-02-24 22:34 ` Luis Chamberlain
2021-03-17 22:10 ` [PATCH 2/8] io_uring: add infrastructure around io_uring_cmd_sqe issue type Jens Axboe
2021-03-17 22:10 ` Jens Axboe
2021-03-17 22:10 ` [PATCH 3/8] fs: add file_operations->uring_cmd() Jens Axboe
2021-03-17 22:10 ` Jens Axboe
2021-03-18 5:38 ` Christoph Hellwig
2021-03-18 5:38 ` Christoph Hellwig
2021-03-18 18:41 ` Jens Axboe
2021-03-18 18:41 ` Jens Axboe
2022-02-17 1:27 ` Luis Chamberlain
2022-02-17 1:25 ` Luis Chamberlain
2021-03-17 22:10 ` [PATCH 4/8] io_uring: add support for IORING_OP_URING_CMD Jens Axboe
2021-03-17 22:10 ` Jens Axboe
2021-03-18 5:42 ` Christoph Hellwig
2021-03-18 5:42 ` Christoph Hellwig
2021-03-18 18:43 ` Jens Axboe
2021-03-18 18:43 ` Jens Axboe
2021-03-17 22:10 ` Jens Axboe [this message]
2021-03-17 22:10 ` [PATCH 5/8] block: wire up support for file_operations->uring_cmd() Jens Axboe
2021-03-18 5:44 ` Christoph Hellwig
2021-03-18 5:44 ` Christoph Hellwig
2021-03-17 22:10 ` [PATCH 6/8] block: add example ioctl Jens Axboe
2021-03-17 22:10 ` Jens Axboe
2021-03-18 5:45 ` Christoph Hellwig
2021-03-18 5:45 ` Christoph Hellwig
2021-03-18 12:43 ` Pavel Begunkov
2021-03-18 12:43 ` Pavel Begunkov
2021-03-18 18:44 ` Jens Axboe
2021-03-18 18:44 ` Jens Axboe
2021-03-17 22:10 ` [PATCH 7/8] net: wire up support for file_operations->uring_cmd() Jens Axboe
2021-03-17 22:10 ` Jens Axboe
2022-02-17 1:03 ` Luis Chamberlain
2021-03-17 22:10 ` [PATCH 8/8] net: add example SOCKET_URING_OP_SIOCINQ/SOCKET_URING_OP_SIOCOUTQ Jens Axboe
2021-03-17 22:10 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210317221027.366780-6-axboe@kernel.dk \
--to=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=io-uring@vger.kernel.org \
--cc=joshi.k@samsung.com \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=metze@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.