diff options
author | Chris Mason <chris.mason@oracle.com> | 2008-01-08 15:46:30 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:03:59 -0400 |
commit | e2008b61401ecb467a8ce1788fcd2116ae1cfbc1 (patch) | |
tree | 8f13935108abaca29c894ca1f9309c9813c9e194 /fs/btrfs/transaction.c | |
parent | 3063d29f2a4d4a4e9fa1ec77c124514f287c6da7 (diff) |
Btrfs: Add some simple throttling to wait for data=ordered and snapshot deletion
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r-- | fs/btrfs/transaction.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index dc9865323e38..614903f5c884 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -424,6 +424,7 @@ static int drop_dirty_roots(struct btrfs_root *tree_root, | |||
424 | 424 | ||
425 | num_bytes = btrfs_root_used(&dirty->root->root_item); | 425 | num_bytes = btrfs_root_used(&dirty->root->root_item); |
426 | root = dirty->latest_root; | 426 | root = dirty->latest_root; |
427 | root->fs_info->throttles++; | ||
427 | 428 | ||
428 | while(1) { | 429 | while(1) { |
429 | trans = btrfs_start_transaction(tree_root, 1); | 430 | trans = btrfs_start_transaction(tree_root, 1); |
@@ -447,6 +448,7 @@ static int drop_dirty_roots(struct btrfs_root *tree_root, | |||
447 | mutex_lock(&tree_root->fs_info->fs_mutex); | 448 | mutex_lock(&tree_root->fs_info->fs_mutex); |
448 | } | 449 | } |
449 | BUG_ON(ret); | 450 | BUG_ON(ret); |
451 | root->fs_info->throttles--; | ||
450 | 452 | ||
451 | num_bytes -= btrfs_root_used(&dirty->root->root_item); | 453 | num_bytes -= btrfs_root_used(&dirty->root->root_item); |
452 | bytes_used = btrfs_root_used(&root->root_item); | 454 | bytes_used = btrfs_root_used(&root->root_item); |
@@ -484,6 +486,7 @@ int btrfs_write_ordered_inodes(struct btrfs_trans_handle *trans, | |||
484 | u64 objectid = 0; | 486 | u64 objectid = 0; |
485 | int ret; | 487 | int ret; |
486 | 488 | ||
489 | root->fs_info->throttles++; | ||
487 | while(1) { | 490 | while(1) { |
488 | ret = btrfs_find_first_ordered_inode( | 491 | ret = btrfs_find_first_ordered_inode( |
489 | &cur_trans->ordered_inode_tree, | 492 | &cur_trans->ordered_inode_tree, |
@@ -523,6 +526,7 @@ int btrfs_write_ordered_inodes(struct btrfs_trans_handle *trans, | |||
523 | mutex_lock(&root->fs_info->fs_mutex); | 526 | mutex_lock(&root->fs_info->fs_mutex); |
524 | mutex_lock(&root->fs_info->trans_mutex); | 527 | mutex_lock(&root->fs_info->trans_mutex); |
525 | } | 528 | } |
529 | root->fs_info->throttles--; | ||
526 | return 0; | 530 | return 0; |
527 | } | 531 | } |
528 | 532 | ||