Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
[linux-2.6] / include / linux / task_io_accounting.h
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 #endif /* CONFIG_TASK_XACCT */
22
23 #ifdef CONFIG_TASK_IO_ACCOUNTING
24         /*
25          * The number of bytes which this task has caused to be read from
26          * storage.
27          */
28         u64 read_bytes;
29
30         /*
31          * The number of bytes which this task has caused, or shall cause to be
32          * written to disk.
33          */
34         u64 write_bytes;
35
36         /*
37          * A task can cause "negative" IO too.  If this task truncates some
38          * dirty pagecache, some IO which another task has been accounted for
39          * (in its write_bytes) will not be happening.  We _could_ just
40          * subtract that from the truncating task's write_bytes, but there is
41          * information loss in doing that.
42          */
43         u64 cancelled_write_bytes;
44 #endif /* CONFIG_TASK_IO_ACCOUNTING */
45 };