--- /dev/null
+From changfengnan@bytedance.com Tue May 20 10:52:04 2025
+From: Fengnan Chang <changfengnan@bytedance.com>
+Date: Tue, 13 May 2025 19:28:04 +0800
+Subject: block: fix direct io NOWAIT flag not work
+To: axboe@kernel.dk, gregkh@linuxfoundation.org
+Cc: stable@vger.kernel.org, Fengnan Chang <changfengnan@bytedance.com>
+Message-ID: <20250513112804.18731-1-changfengnan@bytedance.com>
+
+From: Fengnan Chang <changfengnan@bytedance.com>
+
+commit 8b44b4d81598 ("block: don't allow multiple bios for IOCB_NOWAIT
+issue") backport a upstream fix, but miss commit b77c88c2100c ("block:
+pass a block_device and opf to bio_alloc_kiocb"), and introduce this bug.
+commit b77c88c2100c ("block: pass a block_device and opf to
+bio_alloc_kiocb") have other depend patch, so just fix it.
+
+Fixes: 8b44b4d81598 ("block: don't allow multiple bios for IOCB_NOWAIT issue")
+Signed-off-by: Fengnan Chang <changfengnan@bytedance.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ block/fops.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/block/fops.c
++++ b/block/fops.c
+@@ -259,7 +259,6 @@ static ssize_t __blkdev_direct_IO(struct
+ blk_finish_plug(&plug);
+ return -EAGAIN;
+ }
+- bio->bi_opf |= REQ_NOWAIT;
+ }
+
+ if (is_read) {
+@@ -270,6 +269,10 @@ static ssize_t __blkdev_direct_IO(struct
+ bio->bi_opf = dio_bio_write_op(iocb);
+ task_io_account_write(bio->bi_iter.bi_size);
+ }
++
++ if (iocb->ki_flags & IOCB_NOWAIT)
++ bio->bi_opf |= REQ_NOWAIT;
++
+ dio->size += bio->bi_iter.bi_size;
+ pos += bio->bi_iter.bi_size;
+