aio: remove unused field

Don't know the reason, but it appears ki_wait field of iocb never gets used.

Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Cc: Jeff Moyer <jmoyer@redhat.com>
Cc: Benjamin LaHaise <bcrl@kvack.org>
Cc: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Shaohua Li 2009-12-15 16:47:47 -08:00 committed by Linus Torvalds
parent ea58ceb543
commit fac046ad0b
2 changed files with 2 additions and 42 deletions

View file

@ -711,10 +711,8 @@ static ssize_t aio_run_iocb(struct kiocb *iocb)
*/ */
ret = retry(iocb); ret = retry(iocb);
if (ret != -EIOCBRETRY && ret != -EIOCBQUEUED) { if (ret != -EIOCBRETRY && ret != -EIOCBQUEUED)
BUG_ON(!list_empty(&iocb->ki_wait.task_list));
aio_complete(iocb, ret, 0); aio_complete(iocb, ret, 0);
}
out: out:
spin_lock_irq(&ctx->ctx_lock); spin_lock_irq(&ctx->ctx_lock);
@ -866,13 +864,6 @@ static void try_queue_kicked_iocb(struct kiocb *iocb)
unsigned long flags; unsigned long flags;
int run = 0; int run = 0;
/* We're supposed to be the only path putting the iocb back on the run
* list. If we find that the iocb is *back* on a wait queue already
* than retry has happened before we could queue the iocb. This also
* means that the retry could have completed and freed our iocb, no
* good. */
BUG_ON((!list_empty(&iocb->ki_wait.task_list)));
spin_lock_irqsave(&ctx->ctx_lock, flags); spin_lock_irqsave(&ctx->ctx_lock, flags);
/* set this inside the lock so that we can't race with aio_run_iocb() /* set this inside the lock so that we can't race with aio_run_iocb()
* testing it and putting the iocb on the run list under the lock */ * testing it and putting the iocb on the run list under the lock */
@ -886,7 +877,7 @@ static void try_queue_kicked_iocb(struct kiocb *iocb)
/* /*
* kick_iocb: * kick_iocb:
* Called typically from a wait queue callback context * Called typically from a wait queue callback context
* (aio_wake_function) to trigger a retry of the iocb. * to trigger a retry of the iocb.
* The retry is usually executed by aio workqueue * The retry is usually executed by aio workqueue
* threads (See aio_kick_handler). * threads (See aio_kick_handler).
*/ */
@ -1520,31 +1511,6 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
return 0; return 0;
} }
/*
* aio_wake_function:
* wait queue callback function for aio notification,
* Simply triggers a retry of the operation via kick_iocb.
*
* This callback is specified in the wait queue entry in
* a kiocb.
*
* Note:
* This routine is executed with the wait queue lock held.
* Since kick_iocb acquires iocb->ctx->ctx_lock, it nests
* the ioctx lock inside the wait queue lock. This is safe
* because this callback isn't used for wait queues which
* are nested inside ioctx lock (i.e. ctx->wait)
*/
static int aio_wake_function(wait_queue_t *wait, unsigned mode,
int sync, void *key)
{
struct kiocb *iocb = container_of(wait, struct kiocb, ki_wait);
list_del_init(&wait->task_list);
kick_iocb(iocb);
return 1;
}
static void aio_batch_add(struct address_space *mapping, static void aio_batch_add(struct address_space *mapping,
struct hlist_head *batch_hash) struct hlist_head *batch_hash)
{ {
@ -1642,8 +1608,6 @@ static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
req->ki_buf = (char __user *)(unsigned long)iocb->aio_buf; req->ki_buf = (char __user *)(unsigned long)iocb->aio_buf;
req->ki_left = req->ki_nbytes = iocb->aio_nbytes; req->ki_left = req->ki_nbytes = iocb->aio_nbytes;
req->ki_opcode = iocb->aio_lio_opcode; req->ki_opcode = iocb->aio_lio_opcode;
init_waitqueue_func_entry(&req->ki_wait, aio_wake_function);
INIT_LIST_HEAD(&req->ki_wait.task_list);
ret = aio_setup_iocb(req); ret = aio_setup_iocb(req);

View file

@ -102,7 +102,6 @@ struct kiocb {
} ki_obj; } ki_obj;
__u64 ki_user_data; /* user's data for completion */ __u64 ki_user_data; /* user's data for completion */
wait_queue_t ki_wait;
loff_t ki_pos; loff_t ki_pos;
void *private; void *private;
@ -140,7 +139,6 @@ struct kiocb {
(x)->ki_dtor = NULL; \ (x)->ki_dtor = NULL; \
(x)->ki_obj.tsk = tsk; \ (x)->ki_obj.tsk = tsk; \
(x)->ki_user_data = 0; \ (x)->ki_user_data = 0; \
init_wait((&(x)->ki_wait)); \
} while (0) } while (0)
#define AIO_RING_MAGIC 0xa10a10a1 #define AIO_RING_MAGIC 0xa10a10a1
@ -223,8 +221,6 @@ struct mm_struct;
static inline void exit_aio(struct mm_struct *mm) { } static inline void exit_aio(struct mm_struct *mm) { }
#endif /* CONFIG_AIO */ #endif /* CONFIG_AIO */
#define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait)
static inline struct kiocb *list_kiocb(struct list_head *h) static inline struct kiocb *list_kiocb(struct list_head *h)
{ {
return list_entry(h, struct kiocb, ki_list); return list_entry(h, struct kiocb, ki_list);