Commit 5ff7ba3a authored by Chris Mason's avatar Chris Mason

Btrfs: don't look at bio flags after submit_bio

After callling submit_bio, the bio can be freed at any time.  The
btrfs submission thread helper was checking the bio flags too late,
which might not give the correct answer.

When CONFIG_DEBUG_PAGE_ALLOC is turned on, it can lead to oopsen.
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent a343832f
...@@ -256,13 +256,13 @@ static noinline int run_scheduled_bios(struct btrfs_device *device) ...@@ -256,13 +256,13 @@ static noinline int run_scheduled_bios(struct btrfs_device *device)
wake_up(&fs_info->async_submit_wait); wake_up(&fs_info->async_submit_wait);
BUG_ON(atomic_read(&cur->bi_cnt) == 0); BUG_ON(atomic_read(&cur->bi_cnt) == 0);
submit_bio(cur->bi_rw, cur);
num_run++;
batch_run++;
if (bio_rw_flagged(cur, BIO_RW_SYNCIO)) if (bio_rw_flagged(cur, BIO_RW_SYNCIO))
num_sync_run++; num_sync_run++;
submit_bio(cur->bi_rw, cur);
num_run++;
batch_run++;
if (need_resched()) { if (need_resched()) {
if (num_sync_run) { if (num_sync_run) {
blk_run_backing_dev(bdi, NULL); blk_run_backing_dev(bdi, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment