[PATCH][FIX][AIO] sync iocb wakeup

From: Suparna Bhattacharya (suparna@in.ibm.com)
Date: Fri Mar 14 2003 - 01:47:13 EST


In aio_complete, sync iocbs aren't being woken up if
iocb->ki_users == 1. The following patch should fix this.

(Ben, let me know if I'm missing anything here)

diff -ur linux-2.5.62/fs/aio.c linux-2.5.62-aio/fs/aio.c
--- linux-2.5.62/fs/aio.c Tue Feb 18 04:26:14 2003
+++ linux-2.5.62-aio/fs/aio.c Tue Mar 11 21:07:35 2003
@@ -642,13 +717,13 @@
                 iocb->ki_user_data = res;
                 if (iocb->ki_users == 1) {
                         iocb->ki_users = 0;
- return 1;
+ ret = 1;
+ } else {
+ spin_lock_irq(&ctx->ctx_lock);
+ iocb->ki_users--;
+ ret = (0 == iocb->ki_users);
+ spin_unlock_irq(&ctx->ctx_lock);
                 }
- spin_lock_irq(&ctx->ctx_lock);
- iocb->ki_users--;
- ret = (0 == iocb->ki_users);
- spin_unlock_irq(&ctx->ctx_lock);
-
                 /* sync iocbs put the task here for us */
                 wake_up_process(iocb->ki_user_obj);
                 return ret;

-- 
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Labs, India

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Mar 15 2003 - 22:00:38 EST