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