1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * task_io_accounting: a structure which is used for recording a single task's 4 * IO statistics. 5 * 6 * Don't include this header file directly - it is designed to be dragged in via 7 * sched.h. 8 * 9 * Blame Andrew Morton for all this. 10 */ 11 12 struct task_io_accounting { 13 #ifdef CONFIG_TASK_XACCT 14 /* bytes read */ 15 u64 rchar; 16 /* bytes written */ 17 u64 wchar; 18 /* # of read syscalls */ 19 u64 syscr; 20 /* # of write syscalls */ 21 u64 syscw; 22 #endif /* CONFIG_TASK_XACCT */ 23 24 #ifdef CONFIG_TASK_IO_ACCOUNTING 25 /* 26 * The number of bytes which this task has caused to be read from 27 * storage. 28 */ 29 u64 read_bytes; 30 31 /* 32 * The number of bytes which this task has caused, or shall cause to be 33 * written to disk. 34 */ 35 u64 write_bytes; 36 37 /* 38 * A task can cause "negative" IO too. If this task truncates some 39 * dirty pagecache, some IO which another task has been accounted for 40 * (in its write_bytes) will not be happening. We _could_ just 41 * subtract that from the truncating task's write_bytes, but there is 42 * information loss in doing that. 43 */ 44 u64 cancelled_write_bytes; 45 #endif /* CONFIG_TASK_IO_ACCOUNTING */ 46 }; 47