|
@@ -329,6 +329,8 @@ again:
|
|
|
if (!h)
|
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
|
|
+ sb_start_intwrite(root->fs_info->sb);
|
|
|
+
|
|
|
if (may_wait_transaction(root, type))
|
|
|
wait_current_trans(root);
|
|
|
|
|
@@ -339,6 +341,7 @@ again:
|
|
|
} while (ret == -EBUSY);
|
|
|
|
|
|
if (ret < 0) {
|
|
|
+ sb_end_intwrite(root->fs_info->sb);
|
|
|
kmem_cache_free(btrfs_trans_handle_cachep, h);
|
|
|
return ERR_PTR(ret);
|
|
|
}
|
|
@@ -528,6 +531,8 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans,
|
|
|
count++;
|
|
|
}
|
|
|
|
|
|
+ sb_end_intwrite(root->fs_info->sb);
|
|
|
+
|
|
|
if (lock && !atomic_read(&root->fs_info->open_ioctl_trans) &&
|
|
|
should_end_transaction(trans, root)) {
|
|
|
trans->transaction->blocked = 1;
|
|
@@ -1517,6 +1522,8 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
|
|
|
put_transaction(cur_trans);
|
|
|
put_transaction(cur_trans);
|
|
|
|
|
|
+ sb_end_intwrite(root->fs_info->sb);
|
|
|
+
|
|
|
trace_btrfs_transaction_commit(root);
|
|
|
|
|
|
btrfs_scrub_continue(root);
|