struct task_struct *waiter = bio->bi_private;
WRITE_ONCE(bio->bi_private, NULL);
- blk_wake_io_task(waiter);
+ wake_io_task(waiter);
}
static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb,
struct task_struct *waiter = dio->waiter;
WRITE_ONCE(dio->waiter, NULL);
- blk_wake_io_task(waiter);
+ wake_io_task(waiter);
}
}
if (dio->wait_for_completion) {
struct task_struct *waiter = dio->submit.waiter;
WRITE_ONCE(dio->submit.waiter, NULL);
- blk_wake_io_task(waiter);
+ wake_io_task(waiter);
} else if (dio->flags & IOMAP_DIO_WRITE) {
struct inode *inode = file_inode(dio->iocb->ki_filp);
extern int bdev_write_page(struct block_device *, sector_t, struct page *,
struct writeback_control *);
-static inline void blk_wake_io_task(struct task_struct *waiter)
-{
- /*
- * If we're polling, the task itself is doing the completions. For
- * that case, we don't need to signal a wakeup, it's enough to just
- * mark us as RUNNING.
- */
- if (waiter == current)
- __set_current_state(TASK_RUNNING);
- else
- wake_up_process(waiter);
-}
-
unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors,
unsigned int op);
void disk_end_io_acct(struct gendisk *disk, unsigned int op,
extern int wake_up_process(struct task_struct *tsk);
extern void wake_up_new_task(struct task_struct *tsk);
+static inline void wake_io_task(struct task_struct *waiter)
+{
+ /*
+ * If we're polling, the task itself is doing the completions. For
+ * that case, we don't need to signal a wakeup, it's enough to just
+ * mark us as RUNNING.
+ */
+ if (waiter == current)
+ __set_current_state(TASK_RUNNING);
+ else
+ wake_up_process(waiter);
+}
+
#ifdef CONFIG_SMP
extern void kick_process(struct task_struct *tsk);
#else
WRITE_ONCE(bio->bi_private, NULL);
bio_put(bio);
if (waiter) {
- blk_wake_io_task(waiter);
+ wake_io_task(waiter);
put_task_struct(waiter);
}
}