# \[PATCH\] loop: devirtualise ki\_complete call

- From: Pavel Begunkov \<asml.silence@gmail.com\>
- Date: 2021-01-09 15:56:17 
- List: lkml
- Page: https://ratatoskr.run/lkml/2021/01/6228551
- Thread: https://ratatoskr.run/linux-block/2021/01/6228551/t.md

```text
lo_rw_aio() knows what iocb.ki_complete it set, so instead of an
expensive indirect call it can call lo_rw_aio_complete() directly.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
 drivers/block/loop.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index e5ff328f0917..113d87f3b194 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -588,7 +588,7 @@ static int lo_rw_aio(struct loop_device *lo, struct loop_cmd *cmd,
 	kthread_associate_blkcg(NULL);
 
 	if (ret != -EIOCBQUEUED)
-		cmd->iocb.ki_complete(&cmd->iocb, ret, 0);
+		lo_rw_aio_complete(&cmd->iocb, ret, 0);
 	return 0;
 }
 
-- 
2.24.0

```
