提交 6212e3a3 编写于 作者: A Alexey Dobriyan 提交者: Linus Torvalds

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: NAlexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 9cd9a005
...@@ -710,18 +710,9 @@ static ssize_t aio_run_iocb(struct kiocb *iocb) ...@@ -710,18 +710,9 @@ static ssize_t aio_run_iocb(struct kiocb *iocb)
/* /*
* Now we are all set to call the retry method in async * Now we are all set to call the retry method in async
* context. By setting this thread's io_wait context * context.
* to point to the wait queue entry inside the currently
* running iocb for the duration of the retry, we ensure
* that async notification wakeups are queued by the
* operation instead of blocking waits, and when notified,
* cause the iocb to be kicked for continuation (through
* the aio_wake_function callback).
*/ */
BUG_ON(current->io_wait != NULL);
current->io_wait = &iocb->ki_wait;
ret = retry(iocb); ret = retry(iocb);
current->io_wait = NULL;
if (ret != -EIOCBRETRY && ret != -EIOCBQUEUED) { if (ret != -EIOCBRETRY && ret != -EIOCBQUEUED) {
BUG_ON(!list_empty(&iocb->ki_wait.task_list)); BUG_ON(!list_empty(&iocb->ki_wait.task_list));
...@@ -1508,10 +1499,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb) ...@@ -1508,10 +1499,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
* Simply triggers a retry of the operation via kick_iocb. * Simply triggers a retry of the operation via kick_iocb.
* *
* This callback is specified in the wait queue entry in * This callback is specified in the wait queue entry in
* a kiocb (current->io_wait points to this wait queue * a kiocb.
* entry when an aio operation executes; it is used
* instead of a synchronous wait when an i/o blocking
* condition is encountered during aio).
* *
* Note: * Note:
* This routine is executed with the wait queue lock held. * This routine is executed with the wait queue lock held.
......
...@@ -232,18 +232,6 @@ int FASTCALL(io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, ...@@ -232,18 +232,6 @@ int FASTCALL(io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
__put_ioctx(kioctx); \ __put_ioctx(kioctx); \
} while (0) } while (0)
#define in_aio() (unlikely(!is_sync_wait(current->io_wait)))
/* may be used for debugging */
#define warn_if_async() \
do { \
if (in_aio()) { \
printk(KERN_ERR "%s(%s:%d) called in async context!\n", \
__FUNCTION__, __FILE__, __LINE__); \
dump_stack(); \
} \
} while (0)
#define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait) #define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait)
#include <linux/aio_abi.h> #include <linux/aio_abi.h>
......
...@@ -1110,13 +1110,6 @@ struct task_struct { ...@@ -1110,13 +1110,6 @@ struct task_struct {
unsigned long ptrace_message; unsigned long ptrace_message;
siginfo_t *last_siginfo; /* For ptrace use. */ siginfo_t *last_siginfo; /* For ptrace use. */
/*
* current io wait handle: wait queue entry to use for io waits
* If this thread is processing aio, this points at the waitqueue
* inside the currently handled kiocb. It may be NULL (i.e. default
* to a stack based synchronous wait) if its doing sync IO.
*/
wait_queue_t *io_wait;
#ifdef CONFIG_TASK_XACCT #ifdef CONFIG_TASK_XACCT
/* i/o counters(bytes read/written, #syscalls */ /* i/o counters(bytes read/written, #syscalls */
u64 rchar, wchar, syscr, syscw; u64 rchar, wchar, syscr, syscw;
......
...@@ -1084,7 +1084,6 @@ static struct task_struct *copy_process(unsigned long clone_flags, ...@@ -1084,7 +1084,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->security = NULL; p->security = NULL;
#endif #endif
p->io_context = NULL; p->io_context = NULL;
p->io_wait = NULL;
p->audit_context = NULL; p->audit_context = NULL;
cpuset_fork(p); cpuset_fork(p);
#ifdef CONFIG_NUMA #ifdef CONFIG_NUMA
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册