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; |
