• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 Andrew Morton for all this.
9  */
10 
11 struct task_io_accounting {
12 #ifdef CONFIG_TASK_XACCT
13 	/* bytes read */
14 	u64 rchar;
15 	/*  bytes written */
16 	u64 wchar;
17 	/* # of read syscalls */
18 	u64 syscr;
19 	/* # of write syscalls */
20 	u64 syscw;
21 	/* # of fsync syscalls */
22 	u64 syscfs;
23 #endif /* CONFIG_TASK_XACCT */
24 
25 #ifdef CONFIG_TASK_IO_ACCOUNTING
26 	/*
27 	 * The number of bytes which this task has caused to be read from
28 	 * storage.
29 	 */
30 	u64 read_bytes;
31 
32 	/*
33 	 * The number of bytes which this task has caused, or shall cause to be
34 	 * written to disk.
35 	 */
36 	u64 write_bytes;
37 
38 	/*
39 	 * A task can cause "negative" IO too.  If this task truncates some
40 	 * dirty pagecache, some IO which another task has been accounted for
41 	 * (in its write_bytes) will not be happening.  We _could_ just
42 	 * subtract that from the truncating task's write_bytes, but there is
43 	 * information loss in doing that.
44 	 */
45 	u64 cancelled_write_bytes;
46 #endif /* CONFIG_TASK_IO_ACCOUNTING */
47 };
48