| /* 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; | |
| #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; | |
| /* | |
| * 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 */ | |
| }; |