1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
27c3ab738SAndrew Morton /*
3940389b8SAndrea Righi  * task_io_accounting: a structure which is used for recording a single task's
47c3ab738SAndrew Morton  * IO statistics.
57c3ab738SAndrew Morton  *
67c3ab738SAndrew Morton  * Don't include this header file directly - it is designed to be dragged in via
77c3ab738SAndrew Morton  * sched.h.
87c3ab738SAndrew Morton  *
9e1f8e874SFrancois Cami  * Blame Andrew Morton for all this.
107c3ab738SAndrew Morton  */
117c3ab738SAndrew Morton 
12940389b8SAndrea Righi struct task_io_accounting {
135995477aSAndrea Righi #ifdef CONFIG_TASK_XACCT
145995477aSAndrea Righi 	/* bytes read */
155995477aSAndrea Righi 	u64 rchar;
165995477aSAndrea Righi 	/*  bytes written */
175995477aSAndrea Righi 	u64 wchar;
185995477aSAndrea Righi 	/* # of read syscalls */
195995477aSAndrea Righi 	u64 syscr;
205995477aSAndrea Righi 	/* # of write syscalls */
215995477aSAndrea Righi 	u64 syscw;
225995477aSAndrea Righi #endif /* CONFIG_TASK_XACCT */
235995477aSAndrea Righi 
247c3ab738SAndrew Morton #ifdef CONFIG_TASK_IO_ACCOUNTING
257c3ab738SAndrew Morton 	/*
267c3ab738SAndrew Morton 	 * The number of bytes which this task has caused to be read from
277c3ab738SAndrew Morton 	 * storage.
287c3ab738SAndrew Morton 	 */
297c3ab738SAndrew Morton 	u64 read_bytes;
307c3ab738SAndrew Morton 
317c3ab738SAndrew Morton 	/*
327c3ab738SAndrew Morton 	 * The number of bytes which this task has caused, or shall cause to be
337c3ab738SAndrew Morton 	 * written to disk.
347c3ab738SAndrew Morton 	 */
357c3ab738SAndrew Morton 	u64 write_bytes;
367c3ab738SAndrew Morton 
377c3ab738SAndrew Morton 	/*
387c3ab738SAndrew Morton 	 * A task can cause "negative" IO too.  If this task truncates some
397c3ab738SAndrew Morton 	 * dirty pagecache, some IO which another task has been accounted for
407c3ab738SAndrew Morton 	 * (in its write_bytes) will not be happening.  We _could_ just
417c3ab738SAndrew Morton 	 * subtract that from the truncating task's write_bytes, but there is
427c3ab738SAndrew Morton 	 * information loss in doing that.
437c3ab738SAndrew Morton 	 */
447c3ab738SAndrew Morton 	u64 cancelled_write_bytes;
455995477aSAndrea Righi #endif /* CONFIG_TASK_IO_ACCOUNTING */
465995477aSAndrea Righi };
47