aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Dobriyan <adobriyan@gmail.com>2007-10-18 06:04:56 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-18 17:37:20 -0400
commit6212e3a388fdda3f19fa660ef5a30edf54d1dcfd (patch)
tree7218bbf29af36ff0c36aa2af8323a5206ea44b1c
parent9cd9a0058dd35268b24fa16795a92c800f4086d4 (diff)
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>
-rw-r--r--fs/aio.c16
-rw-r--r--include/linux/aio.h12
-rw-r--r--include/linux/sched.h7
-rw-r--r--kernel/fork.c1
4 files changed, 2 insertions, 34 deletions
diff --git a/fs/aio.c b/fs/aio.c
index d02f43b50a3d..f12db415c0f6 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -710,18 +710,9 @@ static ssize_t aio_run_iocb(struct kiocb *iocb)
710 710
711 /* 711 /*
712 * Now we are all set to call the retry method in async 712 * Now we are all set to call the retry method in async
713 * context. By setting this thread's io_wait context 713 * 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).
720 */ 714 */
721 BUG_ON(current->io_wait != NULL);
722 current->io_wait = &iocb->ki_wait;
723 ret = retry(iocb); 715 ret = retry(iocb);
724 current->io_wait = NULL;
725 716
726 if (ret != -EIOCBRETRY && ret != -EIOCBQUEUED) { 717 if (ret != -EIOCBRETRY && ret != -EIOCBQUEUED) {
727 BUG_ON(!list_empty(&iocb->ki_wait.task_list)); 718 BUG_ON(!list_empty(&iocb->ki_wait.task_list));
@@ -1508,10 +1499,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
1508 * Simply triggers a retry of the operation via kick_iocb. 1499 * Simply triggers a retry of the operation via kick_iocb.
1509 * 1500 *
1510 * This callback is specified in the wait queue entry in 1501 * This callback is specified in the wait queue entry in
1511 * a kiocb (current->io_wait points to this wait queue 1502 * a kiocb.
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).
1515 * 1503 *
1516 * Note: 1504 * Note:
1517 * This routine is executed with the wait queue lock held. 1505 * This routine is executed with the wait queue lock held.
diff --git a/include/linux/aio.h b/include/linux/aio.h
index d10e608f232d..7ef8de662001 100644
--- a/include/linux/aio.h
+++ b/include/linux/aio.h
@@ -232,18 +232,6 @@ int FASTCALL(io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
232 __put_ioctx(kioctx); \ 232 __put_ioctx(kioctx); \
233} while (0) 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() \
239do { \
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#define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait) 235#define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait)
248 236
249#include <linux/aio_abi.h> 237#include <linux/aio_abi.h>
diff --git a/include/linux/sched.h b/include/linux/sched.h
index c204ab0d4df1..269b234609b8 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1110,13 +1110,6 @@ struct task_struct {
1110 1110
1111 unsigned long ptrace_message; 1111 unsigned long ptrace_message;
1112 siginfo_t *last_siginfo; /* For ptrace use. */ 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#ifdef CONFIG_TASK_XACCT 1113#ifdef CONFIG_TASK_XACCT
1121/* i/o counters(bytes read/written, #syscalls */ 1114/* i/o counters(bytes read/written, #syscalls */
1122 u64 rchar, wchar, syscr, syscw; 1115 u64 rchar, wchar, syscr, syscw;
diff --git a/kernel/fork.c b/kernel/fork.c
index 7e455a93a75a..125246fc75a5 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1084,7 +1084,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,
1084 p->security = NULL; 1084 p->security = NULL;
1085#endif 1085#endif
1086 p->io_context = NULL; 1086 p->io_context = NULL;
1087 p->io_wait = NULL;
1088 p->audit_context = NULL; 1087 p->audit_context = NULL;
1089 cpuset_fork(p); 1088 cpuset_fork(p);
1090#ifdef CONFIG_NUMA 1089#ifdef CONFIG_NUMA