| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * task_io_accounting: a structure which is used for recording a single task's |
| * IO statistics. |
| * |
| * Don't include this header file directly - it is designed to be dragged in via |
| * sched.h. |
| * |
| * Blame Andrew Morton for all this. |
| */ |
| |
| struct task_io_accounting { |
| #ifdef CONFIG_TASK_XACCT |
| /* bytes read */ |
| u64 rchar; |
| /* bytes written */ |
| u64 wchar; |
| /* # of read syscalls */ |
| u64 syscr; |
| /* # of write syscalls */ |
| u64 syscw; |
| /* # of fsync syscalls */ |
| u64 syscfs; |
| #endif /* CONFIG_TASK_XACCT */ |
| |
| #ifdef CONFIG_TASK_IO_ACCOUNTING |
| /* |
| * The number of bytes which this task has caused to be read from |
| * storage. |
| */ |
| u64 read_bytes; |
| |
| /* |
| * The number of bytes which this task has caused, or shall cause to be |
| * written to disk. |
| */ |
| u64 write_bytes; |
| |
| #ifdef CONFIG_SUBMIT_BH_IO_ACCOUNTING |
| u64 submit_bh_write_bytes; |
| #endif |
| |
| /* |
| * A task can cause "negative" IO too. If this task truncates some |
| * dirty pagecache, some IO which another task has been accounted for |
| * (in its write_bytes) will not be happening. We _could_ just |
| * subtract that from the truncating task's write_bytes, but there is |
| * information loss in doing that. |
| */ |
| u64 cancelled_write_bytes; |
| #endif /* CONFIG_TASK_IO_ACCOUNTING */ |
| }; |