diff options
Diffstat (limited to 'fs/aio.c')
-rw-r--r-- | fs/aio.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -58,6 +58,7 @@ static DEFINE_SPINLOCK(fput_lock); | |||
58 | static LIST_HEAD(fput_head); | 58 | static LIST_HEAD(fput_head); |
59 | 59 | ||
60 | static void aio_kick_handler(void *); | 60 | static void aio_kick_handler(void *); |
61 | static void aio_queue_work(struct kioctx *); | ||
61 | 62 | ||
62 | /* aio_setup | 63 | /* aio_setup |
63 | * Creates the slab caches used by the aio routines, panic on | 64 | * Creates the slab caches used by the aio routines, panic on |
@@ -747,6 +748,14 @@ out: | |||
747 | * has already been kicked */ | 748 | * has already been kicked */ |
748 | if (kiocbIsKicked(iocb)) { | 749 | if (kiocbIsKicked(iocb)) { |
749 | __queue_kicked_iocb(iocb); | 750 | __queue_kicked_iocb(iocb); |
751 | |||
752 | /* | ||
753 | * __queue_kicked_iocb will always return 1 here, because | ||
754 | * iocb->ki_run_list is empty at this point so it should | ||
755 | * be safe to unconditionally queue the context into the | ||
756 | * work queue. | ||
757 | */ | ||
758 | aio_queue_work(ctx); | ||
750 | } | 759 | } |
751 | } | 760 | } |
752 | return ret; | 761 | return ret; |