Messages in this thread Patch in this message |  | | Date | Fri, 14 Mar 2003 12:17:13 +0530 | From | Suparna Bhattacharya <> | Subject | [PATCH][FIX][AIO] sync iocb wakeup |
| |
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/
|  |