|
@@ -443,8 +443,7 @@ static int may_wait_transaction(struct btrfs_fs_info *fs_info, int type)
|
|
if (test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags))
|
|
if (test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags))
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
- if (type == TRANS_START &&
|
|
|
|
- !atomic_read(&fs_info->open_ioctl_trans))
|
|
|
|
|
|
+ if (type == TRANS_START)
|
|
return 1;
|
|
return 1;
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -766,8 +765,7 @@ out:
|
|
|
|
|
|
void btrfs_throttle(struct btrfs_fs_info *fs_info)
|
|
void btrfs_throttle(struct btrfs_fs_info *fs_info)
|
|
{
|
|
{
|
|
- if (!atomic_read(&fs_info->open_ioctl_trans))
|
|
|
|
- wait_current_trans(fs_info);
|
|
|
|
|
|
+ wait_current_trans(fs_info);
|
|
}
|
|
}
|
|
|
|
|
|
static int should_end_transaction(struct btrfs_trans_handle *trans)
|
|
static int should_end_transaction(struct btrfs_trans_handle *trans)
|
|
@@ -870,8 +868,7 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans,
|
|
|
|
|
|
btrfs_trans_release_chunk_metadata(trans);
|
|
btrfs_trans_release_chunk_metadata(trans);
|
|
|
|
|
|
- if (lock && !atomic_read(&info->open_ioctl_trans) &&
|
|
|
|
- should_end_transaction(trans) &&
|
|
|
|
|
|
+ if (lock && should_end_transaction(trans) &&
|
|
READ_ONCE(cur_trans->state) == TRANS_STATE_RUNNING) {
|
|
READ_ONCE(cur_trans->state) == TRANS_STATE_RUNNING) {
|
|
spin_lock(&info->trans_lock);
|
|
spin_lock(&info->trans_lock);
|
|
if (cur_trans->state == TRANS_STATE_RUNNING)
|
|
if (cur_trans->state == TRANS_STATE_RUNNING)
|