Commit 6212e3a388fdda3f19fa660ef5a30edf54d1dcfd

Authored by Alexey Dobriyan
Committed by Linus Torvalds
1 parent 9cd9a0058d

Remove struct task_struct::io_wait

Hell knows what happened in commit 63b05203af57e7de4f3bb63b8b81d43bc196d32b
during 2.6.9 development.  Commit introduced io_wait field which remained
write-only than and still remains write-only.

Also garbage collect macros which "use" io_wait.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 4 changed files with 2 additions and 34 deletions Side-by-side Diff

... ... @@ -710,18 +710,9 @@
710 710  
711 711 /*
712 712 * Now we are all set to call the retry method in async
713   - * context. By setting this thread's io_wait context
714   - * to point to the wait queue entry inside the currently
715   - * running iocb for the duration of the retry, we ensure
716   - * that async notification wakeups are queued by the
717   - * operation instead of blocking waits, and when notified,
718   - * cause the iocb to be kicked for continuation (through
719   - * the aio_wake_function callback).
  713 + * context.
720 714 */
721   - BUG_ON(current->io_wait != NULL);
722   - current->io_wait = &iocb->ki_wait;
723 715 ret = retry(iocb);
724   - current->io_wait = NULL;
725 716  
726 717 if (ret != -EIOCBRETRY && ret != -EIOCBQUEUED) {
727 718 BUG_ON(!list_empty(&iocb->ki_wait.task_list));
... ... @@ -1508,10 +1499,7 @@
1508 1499 * Simply triggers a retry of the operation via kick_iocb.
1509 1500 *
1510 1501 * This callback is specified in the wait queue entry in
1511   - * a kiocb (current->io_wait points to this wait queue
1512   - * entry when an aio operation executes; it is used
1513   - * instead of a synchronous wait when an i/o blocking
1514   - * condition is encountered during aio).
  1502 + * a kiocb.
1515 1503 *
1516 1504 * Note:
1517 1505 * This routine is executed with the wait queue lock held.
... ... @@ -232,18 +232,6 @@
232 232 __put_ioctx(kioctx); \
233 233 } while (0)
234 234  
235   -#define in_aio() (unlikely(!is_sync_wait(current->io_wait)))
236   -
237   -/* may be used for debugging */
238   -#define warn_if_async() \
239   -do { \
240   - if (in_aio()) { \
241   - printk(KERN_ERR "%s(%s:%d) called in async context!\n", \
242   - __FUNCTION__, __FILE__, __LINE__); \
243   - dump_stack(); \
244   - } \
245   -} while (0)
246   -
247 235 #define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait)
248 236  
249 237 #include <linux/aio_abi.h>
include/linux/sched.h
... ... @@ -1110,13 +1110,6 @@
1110 1110  
1111 1111 unsigned long ptrace_message;
1112 1112 siginfo_t *last_siginfo; /* For ptrace use. */
1113   -/*
1114   - * current io wait handle: wait queue entry to use for io waits
1115   - * If this thread is processing aio, this points at the waitqueue
1116   - * inside the currently handled kiocb. It may be NULL (i.e. default
1117   - * to a stack based synchronous wait) if its doing sync IO.
1118   - */
1119   - wait_queue_t *io_wait;
1120 1113 #ifdef CONFIG_TASK_XACCT
1121 1114 /* i/o counters(bytes read/written, #syscalls */
1122 1115 u64 rchar, wchar, syscr, syscw;
... ... @@ -1084,7 +1084,6 @@
1084 1084 p->security = NULL;
1085 1085 #endif
1086 1086 p->io_context = NULL;
1087   - p->io_wait = NULL;
1088 1087 p->audit_context = NULL;
1089 1088 cpuset_fork(p);
1090 1089 #ifdef CONFIG_NUMA