diff options
Diffstat (limited to 'fs/btrfs/delayed-inode.c')
-rw-r--r-- | fs/btrfs/delayed-inode.c | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index c8ffceb2aff9..33ed79b8d6cc 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c | |||
@@ -529,10 +529,9 @@ static struct btrfs_delayed_item *__btrfs_next_delayed_item( | |||
529 | } | 529 | } |
530 | 530 | ||
531 | static int btrfs_delayed_item_reserve_metadata(struct btrfs_trans_handle *trans, | 531 | static int btrfs_delayed_item_reserve_metadata(struct btrfs_trans_handle *trans, |
532 | struct btrfs_root *root, | 532 | struct btrfs_fs_info *fs_info, |
533 | struct btrfs_delayed_item *item) | 533 | struct btrfs_delayed_item *item) |
534 | { | 534 | { |
535 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
536 | struct btrfs_block_rsv *src_rsv; | 535 | struct btrfs_block_rsv *src_rsv; |
537 | struct btrfs_block_rsv *dst_rsv; | 536 | struct btrfs_block_rsv *dst_rsv; |
538 | u64 num_bytes; | 537 | u64 num_bytes; |
@@ -556,10 +555,9 @@ static int btrfs_delayed_item_reserve_metadata(struct btrfs_trans_handle *trans, | |||
556 | return ret; | 555 | return ret; |
557 | } | 556 | } |
558 | 557 | ||
559 | static void btrfs_delayed_item_release_metadata(struct btrfs_root *root, | 558 | static void btrfs_delayed_item_release_metadata(struct btrfs_fs_info *fs_info, |
560 | struct btrfs_delayed_item *item) | 559 | struct btrfs_delayed_item *item) |
561 | { | 560 | { |
562 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
563 | struct btrfs_block_rsv *rsv; | 561 | struct btrfs_block_rsv *rsv; |
564 | 562 | ||
565 | if (!item->bytes_reserved) | 563 | if (!item->bytes_reserved) |
@@ -569,7 +567,7 @@ static void btrfs_delayed_item_release_metadata(struct btrfs_root *root, | |||
569 | trace_btrfs_space_reservation(fs_info, "delayed_item", | 567 | trace_btrfs_space_reservation(fs_info, "delayed_item", |
570 | item->key.objectid, item->bytes_reserved, | 568 | item->key.objectid, item->bytes_reserved, |
571 | 0); | 569 | 0); |
572 | btrfs_block_rsv_release(root, rsv, | 570 | btrfs_block_rsv_release(fs_info, rsv, |
573 | item->bytes_reserved); | 571 | item->bytes_reserved); |
574 | } | 572 | } |
575 | 573 | ||
@@ -669,16 +667,15 @@ static int btrfs_delayed_inode_reserve_metadata( | |||
669 | if (release) { | 667 | if (release) { |
670 | trace_btrfs_space_reservation(fs_info, "delalloc", | 668 | trace_btrfs_space_reservation(fs_info, "delalloc", |
671 | btrfs_ino(inode), num_bytes, 0); | 669 | btrfs_ino(inode), num_bytes, 0); |
672 | btrfs_block_rsv_release(root, src_rsv, num_bytes); | 670 | btrfs_block_rsv_release(fs_info, src_rsv, num_bytes); |
673 | } | 671 | } |
674 | 672 | ||
675 | return ret; | 673 | return ret; |
676 | } | 674 | } |
677 | 675 | ||
678 | static void btrfs_delayed_inode_release_metadata(struct btrfs_root *root, | 676 | static void btrfs_delayed_inode_release_metadata(struct btrfs_fs_info *fs_info, |
679 | struct btrfs_delayed_node *node) | 677 | struct btrfs_delayed_node *node) |
680 | { | 678 | { |
681 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
682 | struct btrfs_block_rsv *rsv; | 679 | struct btrfs_block_rsv *rsv; |
683 | 680 | ||
684 | if (!node->bytes_reserved) | 681 | if (!node->bytes_reserved) |
@@ -687,7 +684,7 @@ static void btrfs_delayed_inode_release_metadata(struct btrfs_root *root, | |||
687 | rsv = &fs_info->delayed_block_rsv; | 684 | rsv = &fs_info->delayed_block_rsv; |
688 | trace_btrfs_space_reservation(fs_info, "delayed_inode", | 685 | trace_btrfs_space_reservation(fs_info, "delayed_inode", |
689 | node->inode_id, node->bytes_reserved, 0); | 686 | node->inode_id, node->bytes_reserved, 0); |
690 | btrfs_block_rsv_release(root, rsv, | 687 | btrfs_block_rsv_release(fs_info, rsv, |
691 | node->bytes_reserved); | 688 | node->bytes_reserved); |
692 | node->bytes_reserved = 0; | 689 | node->bytes_reserved = 0; |
693 | } | 690 | } |
@@ -700,6 +697,7 @@ static int btrfs_batch_insert_items(struct btrfs_root *root, | |||
700 | struct btrfs_path *path, | 697 | struct btrfs_path *path, |
701 | struct btrfs_delayed_item *item) | 698 | struct btrfs_delayed_item *item) |
702 | { | 699 | { |
700 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
703 | struct btrfs_delayed_item *curr, *next; | 701 | struct btrfs_delayed_item *curr, *next; |
704 | int free_space; | 702 | int free_space; |
705 | int total_data_size = 0, total_size = 0; | 703 | int total_data_size = 0, total_size = 0; |
@@ -716,7 +714,7 @@ static int btrfs_batch_insert_items(struct btrfs_root *root, | |||
716 | BUG_ON(!path->nodes[0]); | 714 | BUG_ON(!path->nodes[0]); |
717 | 715 | ||
718 | leaf = path->nodes[0]; | 716 | leaf = path->nodes[0]; |
719 | free_space = btrfs_leaf_free_space(root, leaf); | 717 | free_space = btrfs_leaf_free_space(fs_info, leaf); |
720 | INIT_LIST_HEAD(&head); | 718 | INIT_LIST_HEAD(&head); |
721 | 719 | ||
722 | next = item; | 720 | next = item; |
@@ -789,7 +787,7 @@ static int btrfs_batch_insert_items(struct btrfs_root *root, | |||
789 | curr->data_len); | 787 | curr->data_len); |
790 | slot++; | 788 | slot++; |
791 | 789 | ||
792 | btrfs_delayed_item_release_metadata(root, curr); | 790 | btrfs_delayed_item_release_metadata(fs_info, curr); |
793 | 791 | ||
794 | list_del(&curr->tree_list); | 792 | list_del(&curr->tree_list); |
795 | btrfs_release_delayed_item(curr); | 793 | btrfs_release_delayed_item(curr); |
@@ -811,6 +809,7 @@ static int btrfs_insert_delayed_item(struct btrfs_trans_handle *trans, | |||
811 | struct btrfs_path *path, | 809 | struct btrfs_path *path, |
812 | struct btrfs_delayed_item *delayed_item) | 810 | struct btrfs_delayed_item *delayed_item) |
813 | { | 811 | { |
812 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
814 | struct extent_buffer *leaf; | 813 | struct extent_buffer *leaf; |
815 | char *ptr; | 814 | char *ptr; |
816 | int ret; | 815 | int ret; |
@@ -828,7 +827,7 @@ static int btrfs_insert_delayed_item(struct btrfs_trans_handle *trans, | |||
828 | delayed_item->data_len); | 827 | delayed_item->data_len); |
829 | btrfs_mark_buffer_dirty(leaf); | 828 | btrfs_mark_buffer_dirty(leaf); |
830 | 829 | ||
831 | btrfs_delayed_item_release_metadata(root, delayed_item); | 830 | btrfs_delayed_item_release_metadata(fs_info, delayed_item); |
832 | return 0; | 831 | return 0; |
833 | } | 832 | } |
834 | 833 | ||
@@ -880,6 +879,7 @@ static int btrfs_batch_delete_items(struct btrfs_trans_handle *trans, | |||
880 | struct btrfs_path *path, | 879 | struct btrfs_path *path, |
881 | struct btrfs_delayed_item *item) | 880 | struct btrfs_delayed_item *item) |
882 | { | 881 | { |
882 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
883 | struct btrfs_delayed_item *curr, *next; | 883 | struct btrfs_delayed_item *curr, *next; |
884 | struct extent_buffer *leaf; | 884 | struct extent_buffer *leaf; |
885 | struct btrfs_key key; | 885 | struct btrfs_key key; |
@@ -929,7 +929,7 @@ static int btrfs_batch_delete_items(struct btrfs_trans_handle *trans, | |||
929 | goto out; | 929 | goto out; |
930 | 930 | ||
931 | list_for_each_entry_safe(curr, next, &head, tree_list) { | 931 | list_for_each_entry_safe(curr, next, &head, tree_list) { |
932 | btrfs_delayed_item_release_metadata(root, curr); | 932 | btrfs_delayed_item_release_metadata(fs_info, curr); |
933 | list_del(&curr->tree_list); | 933 | list_del(&curr->tree_list); |
934 | btrfs_release_delayed_item(curr); | 934 | btrfs_release_delayed_item(curr); |
935 | } | 935 | } |
@@ -1015,6 +1015,7 @@ static int __btrfs_update_delayed_inode(struct btrfs_trans_handle *trans, | |||
1015 | struct btrfs_path *path, | 1015 | struct btrfs_path *path, |
1016 | struct btrfs_delayed_node *node) | 1016 | struct btrfs_delayed_node *node) |
1017 | { | 1017 | { |
1018 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
1018 | struct btrfs_key key; | 1019 | struct btrfs_key key; |
1019 | struct btrfs_inode_item *inode_item; | 1020 | struct btrfs_inode_item *inode_item; |
1020 | struct extent_buffer *leaf; | 1021 | struct extent_buffer *leaf; |
@@ -1071,7 +1072,7 @@ out: | |||
1071 | no_iref: | 1072 | no_iref: |
1072 | btrfs_release_path(path); | 1073 | btrfs_release_path(path); |
1073 | err_out: | 1074 | err_out: |
1074 | btrfs_delayed_inode_release_metadata(root, node); | 1075 | btrfs_delayed_inode_release_metadata(fs_info, node); |
1075 | btrfs_release_delayed_inode(node); | 1076 | btrfs_release_delayed_inode(node); |
1076 | 1077 | ||
1077 | return ret; | 1078 | return ret; |
@@ -1136,9 +1137,8 @@ __btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans, | |||
1136 | * outstanding delayed items cleaned up. | 1137 | * outstanding delayed items cleaned up. |
1137 | */ | 1138 | */ |
1138 | static int __btrfs_run_delayed_items(struct btrfs_trans_handle *trans, | 1139 | static int __btrfs_run_delayed_items(struct btrfs_trans_handle *trans, |
1139 | struct btrfs_root *root, int nr) | 1140 | struct btrfs_fs_info *fs_info, int nr) |
1140 | { | 1141 | { |
1141 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
1142 | struct btrfs_delayed_root *delayed_root; | 1142 | struct btrfs_delayed_root *delayed_root; |
1143 | struct btrfs_delayed_node *curr_node, *prev_node; | 1143 | struct btrfs_delayed_node *curr_node, *prev_node; |
1144 | struct btrfs_path *path; | 1144 | struct btrfs_path *path; |
@@ -1184,15 +1184,15 @@ static int __btrfs_run_delayed_items(struct btrfs_trans_handle *trans, | |||
1184 | } | 1184 | } |
1185 | 1185 | ||
1186 | int btrfs_run_delayed_items(struct btrfs_trans_handle *trans, | 1186 | int btrfs_run_delayed_items(struct btrfs_trans_handle *trans, |
1187 | struct btrfs_root *root) | 1187 | struct btrfs_fs_info *fs_info) |
1188 | { | 1188 | { |
1189 | return __btrfs_run_delayed_items(trans, root, -1); | 1189 | return __btrfs_run_delayed_items(trans, fs_info, -1); |
1190 | } | 1190 | } |
1191 | 1191 | ||
1192 | int btrfs_run_delayed_items_nr(struct btrfs_trans_handle *trans, | 1192 | int btrfs_run_delayed_items_nr(struct btrfs_trans_handle *trans, |
1193 | struct btrfs_root *root, int nr) | 1193 | struct btrfs_fs_info *fs_info, int nr) |
1194 | { | 1194 | { |
1195 | return __btrfs_run_delayed_items(trans, root, nr); | 1195 | return __btrfs_run_delayed_items(trans, fs_info, nr); |
1196 | } | 1196 | } |
1197 | 1197 | ||
1198 | int btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans, | 1198 | int btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans, |
@@ -1235,6 +1235,7 @@ int btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans, | |||
1235 | 1235 | ||
1236 | int btrfs_commit_inode_delayed_inode(struct inode *inode) | 1236 | int btrfs_commit_inode_delayed_inode(struct inode *inode) |
1237 | { | 1237 | { |
1238 | struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); | ||
1238 | struct btrfs_trans_handle *trans; | 1239 | struct btrfs_trans_handle *trans; |
1239 | struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); | 1240 | struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); |
1240 | struct btrfs_path *path; | 1241 | struct btrfs_path *path; |
@@ -1266,7 +1267,7 @@ int btrfs_commit_inode_delayed_inode(struct inode *inode) | |||
1266 | path->leave_spinning = 1; | 1267 | path->leave_spinning = 1; |
1267 | 1268 | ||
1268 | block_rsv = trans->block_rsv; | 1269 | block_rsv = trans->block_rsv; |
1269 | trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv; | 1270 | trans->block_rsv = &fs_info->delayed_block_rsv; |
1270 | 1271 | ||
1271 | mutex_lock(&delayed_node->mutex); | 1272 | mutex_lock(&delayed_node->mutex); |
1272 | if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) | 1273 | if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) |
@@ -1280,7 +1281,7 @@ int btrfs_commit_inode_delayed_inode(struct inode *inode) | |||
1280 | trans->block_rsv = block_rsv; | 1281 | trans->block_rsv = block_rsv; |
1281 | trans_out: | 1282 | trans_out: |
1282 | btrfs_end_transaction(trans, delayed_node->root); | 1283 | btrfs_end_transaction(trans, delayed_node->root); |
1283 | btrfs_btree_balance_dirty(delayed_node->root); | 1284 | btrfs_btree_balance_dirty(fs_info); |
1284 | out: | 1285 | out: |
1285 | btrfs_release_delayed_node(delayed_node); | 1286 | btrfs_release_delayed_node(delayed_node); |
1286 | 1287 | ||
@@ -1345,7 +1346,7 @@ again: | |||
1345 | 1346 | ||
1346 | trans->block_rsv = block_rsv; | 1347 | trans->block_rsv = block_rsv; |
1347 | btrfs_end_transaction(trans, root); | 1348 | btrfs_end_transaction(trans, root); |
1348 | btrfs_btree_balance_dirty_nodelay(root); | 1349 | btrfs_btree_balance_dirty_nodelay(root->fs_info); |
1349 | 1350 | ||
1350 | release_path: | 1351 | release_path: |
1351 | btrfs_release_path(path); | 1352 | btrfs_release_path(path); |
@@ -1402,12 +1403,9 @@ static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq) | |||
1402 | return 0; | 1403 | return 0; |
1403 | } | 1404 | } |
1404 | 1405 | ||
1405 | void btrfs_balance_delayed_items(struct btrfs_root *root) | 1406 | void btrfs_balance_delayed_items(struct btrfs_fs_info *fs_info) |
1406 | { | 1407 | { |
1407 | struct btrfs_delayed_root *delayed_root; | 1408 | struct btrfs_delayed_root *delayed_root = fs_info->delayed_root; |
1408 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
1409 | |||
1410 | delayed_root = fs_info->delayed_root; | ||
1411 | 1409 | ||
1412 | if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND) | 1410 | if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND) |
1413 | return; | 1411 | return; |
@@ -1432,8 +1430,9 @@ void btrfs_balance_delayed_items(struct btrfs_root *root) | |||
1432 | 1430 | ||
1433 | /* Will return 0 or -ENOMEM */ | 1431 | /* Will return 0 or -ENOMEM */ |
1434 | int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans, | 1432 | int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans, |
1435 | struct btrfs_root *root, const char *name, | 1433 | struct btrfs_fs_info *fs_info, |
1436 | int name_len, struct inode *dir, | 1434 | const char *name, int name_len, |
1435 | struct inode *dir, | ||
1437 | struct btrfs_disk_key *disk_key, u8 type, | 1436 | struct btrfs_disk_key *disk_key, u8 type, |
1438 | u64 index) | 1437 | u64 index) |
1439 | { | 1438 | { |
@@ -1464,7 +1463,7 @@ int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans, | |||
1464 | btrfs_set_stack_dir_type(dir_item, type); | 1463 | btrfs_set_stack_dir_type(dir_item, type); |
1465 | memcpy((char *)(dir_item + 1), name, name_len); | 1464 | memcpy((char *)(dir_item + 1), name, name_len); |
1466 | 1465 | ||
1467 | ret = btrfs_delayed_item_reserve_metadata(trans, root, delayed_item); | 1466 | ret = btrfs_delayed_item_reserve_metadata(trans, fs_info, delayed_item); |
1468 | /* | 1467 | /* |
1469 | * we have reserved enough space when we start a new transaction, | 1468 | * we have reserved enough space when we start a new transaction, |
1470 | * so reserving metadata failure is impossible | 1469 | * so reserving metadata failure is impossible |
@@ -1475,7 +1474,7 @@ int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans, | |||
1475 | mutex_lock(&delayed_node->mutex); | 1474 | mutex_lock(&delayed_node->mutex); |
1476 | ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item); | 1475 | ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item); |
1477 | if (unlikely(ret)) { | 1476 | if (unlikely(ret)) { |
1478 | btrfs_err(root->fs_info, | 1477 | btrfs_err(fs_info, |
1479 | "err add delayed dir index item(name: %.*s) into the insertion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)", | 1478 | "err add delayed dir index item(name: %.*s) into the insertion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)", |
1480 | name_len, name, delayed_node->root->objectid, | 1479 | name_len, name, delayed_node->root->objectid, |
1481 | delayed_node->inode_id, ret); | 1480 | delayed_node->inode_id, ret); |
@@ -1488,7 +1487,7 @@ release_node: | |||
1488 | return ret; | 1487 | return ret; |
1489 | } | 1488 | } |
1490 | 1489 | ||
1491 | static int btrfs_delete_delayed_insertion_item(struct btrfs_root *root, | 1490 | static int btrfs_delete_delayed_insertion_item(struct btrfs_fs_info *fs_info, |
1492 | struct btrfs_delayed_node *node, | 1491 | struct btrfs_delayed_node *node, |
1493 | struct btrfs_key *key) | 1492 | struct btrfs_key *key) |
1494 | { | 1493 | { |
@@ -1501,15 +1500,15 @@ static int btrfs_delete_delayed_insertion_item(struct btrfs_root *root, | |||
1501 | return 1; | 1500 | return 1; |
1502 | } | 1501 | } |
1503 | 1502 | ||
1504 | btrfs_delayed_item_release_metadata(root, item); | 1503 | btrfs_delayed_item_release_metadata(fs_info, item); |
1505 | btrfs_release_delayed_item(item); | 1504 | btrfs_release_delayed_item(item); |
1506 | mutex_unlock(&node->mutex); | 1505 | mutex_unlock(&node->mutex); |
1507 | return 0; | 1506 | return 0; |
1508 | } | 1507 | } |
1509 | 1508 | ||
1510 | int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans, | 1509 | int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans, |
1511 | struct btrfs_root *root, struct inode *dir, | 1510 | struct btrfs_fs_info *fs_info, |
1512 | u64 index) | 1511 | struct inode *dir, u64 index) |
1513 | { | 1512 | { |
1514 | struct btrfs_delayed_node *node; | 1513 | struct btrfs_delayed_node *node; |
1515 | struct btrfs_delayed_item *item; | 1514 | struct btrfs_delayed_item *item; |
@@ -1524,7 +1523,7 @@ int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans, | |||
1524 | item_key.type = BTRFS_DIR_INDEX_KEY; | 1523 | item_key.type = BTRFS_DIR_INDEX_KEY; |
1525 | item_key.offset = index; | 1524 | item_key.offset = index; |
1526 | 1525 | ||
1527 | ret = btrfs_delete_delayed_insertion_item(root, node, &item_key); | 1526 | ret = btrfs_delete_delayed_insertion_item(fs_info, node, &item_key); |
1528 | if (!ret) | 1527 | if (!ret) |
1529 | goto end; | 1528 | goto end; |
1530 | 1529 | ||
@@ -1536,7 +1535,7 @@ int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans, | |||
1536 | 1535 | ||
1537 | item->key = item_key; | 1536 | item->key = item_key; |
1538 | 1537 | ||
1539 | ret = btrfs_delayed_item_reserve_metadata(trans, root, item); | 1538 | ret = btrfs_delayed_item_reserve_metadata(trans, fs_info, item); |
1540 | /* | 1539 | /* |
1541 | * we have reserved enough space when we start a new transaction, | 1540 | * we have reserved enough space when we start a new transaction, |
1542 | * so reserving metadata failure is impossible. | 1541 | * so reserving metadata failure is impossible. |
@@ -1546,7 +1545,7 @@ int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans, | |||
1546 | mutex_lock(&node->mutex); | 1545 | mutex_lock(&node->mutex); |
1547 | ret = __btrfs_add_delayed_deletion_item(node, item); | 1546 | ret = __btrfs_add_delayed_deletion_item(node, item); |
1548 | if (unlikely(ret)) { | 1547 | if (unlikely(ret)) { |
1549 | btrfs_err(root->fs_info, | 1548 | btrfs_err(fs_info, |
1550 | "err add delayed dir index item(index: %llu) into the deletion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)", | 1549 | "err add delayed dir index item(index: %llu) into the deletion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)", |
1551 | index, node->root->objectid, node->inode_id, ret); | 1550 | index, node->root->objectid, node->inode_id, ret); |
1552 | BUG(); | 1551 | BUG(); |
@@ -1902,12 +1901,13 @@ release_node: | |||
1902 | static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) | 1901 | static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) |
1903 | { | 1902 | { |
1904 | struct btrfs_root *root = delayed_node->root; | 1903 | struct btrfs_root *root = delayed_node->root; |
1904 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
1905 | struct btrfs_delayed_item *curr_item, *prev_item; | 1905 | struct btrfs_delayed_item *curr_item, *prev_item; |
1906 | 1906 | ||
1907 | mutex_lock(&delayed_node->mutex); | 1907 | mutex_lock(&delayed_node->mutex); |
1908 | curr_item = __btrfs_first_delayed_insertion_item(delayed_node); | 1908 | curr_item = __btrfs_first_delayed_insertion_item(delayed_node); |
1909 | while (curr_item) { | 1909 | while (curr_item) { |
1910 | btrfs_delayed_item_release_metadata(root, curr_item); | 1910 | btrfs_delayed_item_release_metadata(fs_info, curr_item); |
1911 | prev_item = curr_item; | 1911 | prev_item = curr_item; |
1912 | curr_item = __btrfs_next_delayed_item(prev_item); | 1912 | curr_item = __btrfs_next_delayed_item(prev_item); |
1913 | btrfs_release_delayed_item(prev_item); | 1913 | btrfs_release_delayed_item(prev_item); |
@@ -1915,7 +1915,7 @@ static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) | |||
1915 | 1915 | ||
1916 | curr_item = __btrfs_first_delayed_deletion_item(delayed_node); | 1916 | curr_item = __btrfs_first_delayed_deletion_item(delayed_node); |
1917 | while (curr_item) { | 1917 | while (curr_item) { |
1918 | btrfs_delayed_item_release_metadata(root, curr_item); | 1918 | btrfs_delayed_item_release_metadata(fs_info, curr_item); |
1919 | prev_item = curr_item; | 1919 | prev_item = curr_item; |
1920 | curr_item = __btrfs_next_delayed_item(prev_item); | 1920 | curr_item = __btrfs_next_delayed_item(prev_item); |
1921 | btrfs_release_delayed_item(prev_item); | 1921 | btrfs_release_delayed_item(prev_item); |
@@ -1925,7 +1925,7 @@ static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) | |||
1925 | btrfs_release_delayed_iref(delayed_node); | 1925 | btrfs_release_delayed_iref(delayed_node); |
1926 | 1926 | ||
1927 | if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { | 1927 | if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { |
1928 | btrfs_delayed_inode_release_metadata(root, delayed_node); | 1928 | btrfs_delayed_inode_release_metadata(fs_info, delayed_node); |
1929 | btrfs_release_delayed_inode(delayed_node); | 1929 | btrfs_release_delayed_inode(delayed_node); |
1930 | } | 1930 | } |
1931 | mutex_unlock(&delayed_node->mutex); | 1931 | mutex_unlock(&delayed_node->mutex); |