aboutsummaryrefslogtreecommitdiffstats
path: root/fs/aio.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/aio.c')
-rw-r--r--fs/aio.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/fs/aio.c b/fs/aio.c
index 33299ece7540..9527ededa669 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1435,6 +1435,22 @@ static int aio_prep_rw(struct kiocb *req, struct iocb *iocb)
1435 if (iocb->aio_flags & IOCB_FLAG_RESFD) 1435 if (iocb->aio_flags & IOCB_FLAG_RESFD)
1436 req->ki_flags |= IOCB_EVENTFD; 1436 req->ki_flags |= IOCB_EVENTFD;
1437 req->ki_hint = ki_hint_validate(file_write_hint(req->ki_filp)); 1437 req->ki_hint = ki_hint_validate(file_write_hint(req->ki_filp));
1438 if (iocb->aio_flags & IOCB_FLAG_IOPRIO) {
1439 /*
1440 * If the IOCB_FLAG_IOPRIO flag of aio_flags is set, then
1441 * aio_reqprio is interpreted as an I/O scheduling
1442 * class and priority.
1443 */
1444 ret = ioprio_check_cap(iocb->aio_reqprio);
1445 if (ret) {
1446 pr_debug("aio ioprio check cap error\n");
1447 return -EINVAL;
1448 }
1449
1450 req->ki_ioprio = iocb->aio_reqprio;
1451 } else
1452 req->ki_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 0);
1453
1438 ret = kiocb_set_rw_flags(req, iocb->aio_rw_flags); 1454 ret = kiocb_set_rw_flags(req, iocb->aio_rw_flags);
1439 if (unlikely(ret)) 1455 if (unlikely(ret))
1440 fput(req->ki_filp); 1456 fput(req->ki_filp);