|
@@ -1005,8 +1005,10 @@ static blk_status_t __btree_submit_bio_done(void *private_data, struct bio *bio,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int check_async_write(unsigned long bio_flags)
|
|
|
+static int check_async_write(struct btrfs_inode *bi, unsigned long bio_flags)
|
|
|
{
|
|
|
+ if (atomic_read(&bi->sync_writers))
|
|
|
+ return 0;
|
|
|
if (bio_flags & EXTENT_BIO_TREE_LOG)
|
|
|
return 0;
|
|
|
#ifdef CONFIG_X86
|
|
@@ -1022,7 +1024,7 @@ static blk_status_t btree_submit_bio_hook(void *private_data, struct bio *bio,
|
|
|
{
|
|
|
struct inode *inode = private_data;
|
|
|
struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
|
|
|
- int async = check_async_write(bio_flags);
|
|
|
+ int async = check_async_write(BTRFS_I(inode), bio_flags);
|
|
|
blk_status_t ret;
|
|
|
|
|
|
if (bio_op(bio) != REQ_OP_WRITE) {
|