Skip to content

Commit

Permalink
block: move blk_io_schedule() out of header file
Browse files Browse the repository at this point in the history
blk_io_schedule() isn't called from performance sensitive code path, and
it is easier to maintain by exporting it as symbol.

Also blk_io_schedule() is only called by CONFIG_BLOCK code, so it is safe
to do this way. Meantime fixes build failure when CONFIG_BLOCK is off.

Cc: Christoph Hellwig <[email protected]>
Fixes: e6249cd ("block: add blk_io_schedule() for avoiding task hung in sync dio")
Reported-by: Satya Tangirala <[email protected]>
Tested-by: Satya Tangirala <[email protected]>
Signed-off-by: Ming Lei <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Ming Lei authored and axboe committed May 14, 2020
1 parent 02ef12a commit 71ac860
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
13 changes: 13 additions & 0 deletions block/blk-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include <linux/debugfs.h>
#include <linux/bpf.h>
#include <linux/psi.h>
#include <linux/sched/sysctl.h>

#define CREATE_TRACE_POINTS
#include <trace/events/block.h>
Expand Down Expand Up @@ -1812,6 +1813,18 @@ void blk_finish_plug(struct blk_plug *plug)
}
EXPORT_SYMBOL(blk_finish_plug);

void blk_io_schedule(void)
{
/* Prevent hang_check timer from firing at us during very long I/O */
unsigned long timeout = sysctl_hung_task_timeout_secs * HZ / 2;

if (timeout)
io_schedule_timeout(timeout);
else
io_schedule();
}
EXPORT_SYMBOL_GPL(blk_io_schedule);

int __init blk_dev_init(void)
{
BUILD_BUG_ON(REQ_OP_LAST >= (1 << REQ_OP_BITS));
Expand Down
14 changes: 2 additions & 12 deletions include/linux/blkdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
#include <linux/percpu-refcount.h>
#include <linux/scatterlist.h>
#include <linux/blkzoned.h>
#include <linux/sched/sysctl.h>

struct module;
struct scsi_ioctl_command;
Expand Down Expand Up @@ -1221,6 +1220,8 @@ static inline bool blk_needs_flush_plug(struct task_struct *tsk)
!list_empty(&plug->cb_list));
}

extern void blk_io_schedule(void);

extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *);
extern int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
sector_t nr_sects, gfp_t gfp_mask, struct page *page);
Expand Down Expand Up @@ -1851,15 +1852,4 @@ static inline void blk_wake_io_task(struct task_struct *waiter)
wake_up_process(waiter);
}

static inline void blk_io_schedule(void)
{
/* Prevent hang_check timer from firing at us during very long I/O */
unsigned long timeout = sysctl_hung_task_timeout_secs * HZ / 2;

if (timeout)
io_schedule_timeout(timeout);
else
io_schedule();
}

#endif

0 comments on commit 71ac860

Please sign in to comment.