diff options
| author | Adam Manzanares <adam.manzanares@wdc.com> | 2018-05-22 13:52:19 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2018-05-31 10:50:55 -0400 |
| commit | d9a08a9e616beeccdbd0e7262b7225ffdfa49e92 (patch) | |
| tree | f2f7985aa07ccee2337631273f4b906389649477 /include | |
| parent | fc28724d67c90ff48b976e0687caf79993160bed (diff) | |
fs: Add aio iopriority support
This is the per-I/O equivalent of the ioprio_set system call.
When IOCB_FLAG_IOPRIO is set on the iocb aio_flags field, then we set the
newly added kiocb ki_ioprio field to the value in the iocb aio_reqprio field.
This patch depends on block: add ioprio_check_cap function.
Signed-off-by: Adam Manzanares <adam.manzanares@wdc.com>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/fs.h | 3 | ||||
| -rw-r--r-- | include/uapi/linux/aio_abi.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index b432fc3feb93..eef9334b26d1 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | #include <linux/delayed_call.h> | 36 | #include <linux/delayed_call.h> |
| 37 | #include <linux/uuid.h> | 37 | #include <linux/uuid.h> |
| 38 | #include <linux/errseq.h> | 38 | #include <linux/errseq.h> |
| 39 | #include <linux/ioprio.h> | ||
| 39 | 40 | ||
| 40 | #include <asm/byteorder.h> | 41 | #include <asm/byteorder.h> |
| 41 | #include <uapi/linux/fs.h> | 42 | #include <uapi/linux/fs.h> |
| @@ -300,6 +301,7 @@ struct kiocb { | |||
| 300 | void *private; | 301 | void *private; |
| 301 | int ki_flags; | 302 | int ki_flags; |
| 302 | u16 ki_hint; | 303 | u16 ki_hint; |
| 304 | u16 ki_ioprio; /* See linux/ioprio.h */ | ||
| 303 | } __randomize_layout; | 305 | } __randomize_layout; |
| 304 | 306 | ||
| 305 | static inline bool is_sync_kiocb(struct kiocb *kiocb) | 307 | static inline bool is_sync_kiocb(struct kiocb *kiocb) |
| @@ -1944,6 +1946,7 @@ static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp) | |||
| 1944 | .ki_filp = filp, | 1946 | .ki_filp = filp, |
| 1945 | .ki_flags = iocb_flags(filp), | 1947 | .ki_flags = iocb_flags(filp), |
| 1946 | .ki_hint = ki_hint_validate(file_write_hint(filp)), | 1948 | .ki_hint = ki_hint_validate(file_write_hint(filp)), |
| 1949 | .ki_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 0), | ||
| 1947 | }; | 1950 | }; |
| 1948 | } | 1951 | } |
| 1949 | 1952 | ||
diff --git a/include/uapi/linux/aio_abi.h b/include/uapi/linux/aio_abi.h index ed0185945bb2..75846164290e 100644 --- a/include/uapi/linux/aio_abi.h +++ b/include/uapi/linux/aio_abi.h | |||
| @@ -53,6 +53,7 @@ enum { | |||
| 53 | * is valid. | 53 | * is valid. |
| 54 | */ | 54 | */ |
| 55 | #define IOCB_FLAG_RESFD (1 << 0) | 55 | #define IOCB_FLAG_RESFD (1 << 0) |
| 56 | #define IOCB_FLAG_IOPRIO (1 << 1) | ||
| 56 | 57 | ||
| 57 | /* read() from /dev/aio returns these structures. */ | 58 | /* read() from /dev/aio returns these structures. */ |
| 58 | struct io_event { | 59 | struct io_event { |
