diff options
| author | Christoph Hellwig <hch@lst.de> | 2026-07-29 12:27:19 -0700 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-07-31 12:28:49 +0200 |
| commit | eecfab484dc7b4156d4297b723da20bbc46e92b9 (patch) | |
| tree | d09bd2b71d0dbe92c597f6fe252504d11f3d48fb | |
| parent | 335d4b6201ac317d906e6a694f07de0792325fee (diff) | |
| download | linux-eecfab484dc7b4156d4297b723da20bbc46e92b9.tar.gz linux-eecfab484dc7b4156d4297b723da20bbc46e92b9.zip | |
iomap: use GFP_NOWAIT when application for iomap_dio_simple allocations
For non-blocking iocbs we should avoid blocking allocation where
possible, so switch to a GFP_NOWAIT allocation here.
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Fengnan Chang <changfengnan@bytedance.com>
Reviewed-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://patch.msgid.link/20260729192737.3190206-5-joannelkoong@gmail.com
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
| -rw-r--r-- | fs/iomap/direct-io.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 36c976cf0848..5c28124b9f02 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -986,6 +986,7 @@ static void iomap_dio_simple_end_io(struct bio *bio) ssize_t __iomap_dio_read_simple(struct kiocb *iocb, struct iov_iter *iter, struct iomap_iter *iomi) { + gfp_t gfp = (iomi->flags & IOMAP_NOWAIT) ? GFP_NOWAIT : GFP_KERNEL; struct iomap_dio_simple *sr; unsigned int alignment; struct bio *bio; @@ -1015,7 +1016,11 @@ ssize_t __iomap_dio_read_simple(struct kiocb *iocb, struct iov_iter *iter, bio = bio_alloc_bioset(iomi->iomap.bdev, bio_iov_vecs_to_alloc(iter, BIO_MAX_VECS), - REQ_OP_READ, GFP_KERNEL, &iomap_dio_simple_pool); + REQ_OP_READ, gfp, &iomap_dio_simple_pool); + if (!bio) { + ret = -EAGAIN; + goto out_dio_end; + } sr = container_of(bio, struct iomap_dio_simple, bio); sr->iocb = iocb; sr->dio_flags = 0; |
