Lines Matching refs:fs_info
112 struct btrfs_fs_info *fs_info) in switch_commit_roots() argument
116 down_write(&fs_info->commit_root_sem); in switch_commit_roots()
134 btrfs_drop_and_free_fs_root(fs_info, root); in switch_commit_roots()
138 up_write(&fs_info->commit_root_sem); in switch_commit_roots()
172 struct btrfs_fs_info *fs_info = root->fs_info; in join_transaction() local
174 spin_lock(&fs_info->trans_lock); in join_transaction()
177 if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) { in join_transaction()
178 spin_unlock(&fs_info->trans_lock); in join_transaction()
182 cur_trans = fs_info->running_transaction; in join_transaction()
185 spin_unlock(&fs_info->trans_lock); in join_transaction()
189 spin_unlock(&fs_info->trans_lock); in join_transaction()
195 spin_unlock(&fs_info->trans_lock); in join_transaction()
198 spin_unlock(&fs_info->trans_lock); in join_transaction()
217 spin_lock(&fs_info->trans_lock); in join_transaction()
218 if (fs_info->running_transaction) { in join_transaction()
225 } else if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) { in join_transaction()
226 spin_unlock(&fs_info->trans_lock); in join_transaction()
257 if (!list_empty(&fs_info->tree_mod_seq_list)) in join_transaction()
260 if (!RB_EMPTY_ROOT(&fs_info->tree_mod_log)) in join_transaction()
263 atomic64_set(&fs_info->tree_mod_seq, 0); in join_transaction()
278 list_add_tail(&cur_trans->list, &fs_info->trans_list); in join_transaction()
280 fs_info->btree_inode->i_mapping); in join_transaction()
281 fs_info->generation++; in join_transaction()
282 cur_trans->transid = fs_info->generation; in join_transaction()
283 fs_info->running_transaction = cur_trans; in join_transaction()
285 spin_unlock(&fs_info->trans_lock); in join_transaction()
301 WARN_ON(root == root->fs_info->extent_root); in record_root_in_trans()
316 spin_lock(&root->fs_info->fs_roots_radix_lock); in record_root_in_trans()
318 spin_unlock(&root->fs_info->fs_roots_radix_lock); in record_root_in_trans()
321 radix_tree_tag_set(&root->fs_info->fs_roots_radix, in record_root_in_trans()
324 spin_unlock(&root->fs_info->fs_roots_radix_lock); in record_root_in_trans()
365 spin_lock(&root->fs_info->fs_roots_radix_lock); in btrfs_add_dropped_root()
366 radix_tree_tag_clear(&root->fs_info->fs_roots_radix, in btrfs_add_dropped_root()
369 spin_unlock(&root->fs_info->fs_roots_radix_lock); in btrfs_add_dropped_root()
387 mutex_lock(&root->fs_info->reloc_mutex); in btrfs_record_root_in_trans()
389 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_record_root_in_trans()
409 spin_lock(&root->fs_info->trans_lock); in wait_current_trans()
410 cur_trans = root->fs_info->running_transaction; in wait_current_trans()
413 spin_unlock(&root->fs_info->trans_lock); in wait_current_trans()
415 wait_event(root->fs_info->transaction_wait, in wait_current_trans()
420 spin_unlock(&root->fs_info->trans_lock); in wait_current_trans()
426 if (root->fs_info->log_root_recovering) in may_wait_transaction()
433 !atomic_read(&root->fs_info->open_ioctl_trans)) in may_wait_transaction()
441 if (!root->fs_info->reloc_ctl || in need_reserve_reloc_root()
464 if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) in start_transaction()
481 if (num_items > 0 && root != root->fs_info->chunk_root) { in start_transaction()
497 &root->fs_info->trans_block_rsv, in start_transaction()
520 sb_start_intwrite(root->fs_info->sb); in start_transaction()
540 cur_trans = root->fs_info->running_transaction; in start_transaction()
561 trace_btrfs_space_reservation(root->fs_info, "transaction", in start_transaction()
563 h->block_rsv = &root->fs_info->trans_block_rsv; in start_transaction()
577 sb_end_intwrite(root->fs_info->sb); in start_transaction()
581 btrfs_block_rsv_release(root, &root->fs_info->trans_block_rsv, in start_transaction()
612 ret = btrfs_cond_migrate_bytes(root->fs_info, in btrfs_start_transaction_fallback_global_rsv()
613 &root->fs_info->trans_block_rsv, in btrfs_start_transaction_fallback_global_rsv()
621 trans->block_rsv = &root->fs_info->trans_block_rsv; in btrfs_start_transaction_fallback_global_rsv()
700 if (transid <= root->fs_info->last_trans_committed) in btrfs_wait_for_commit()
704 spin_lock(&root->fs_info->trans_lock); in btrfs_wait_for_commit()
705 list_for_each_entry(t, &root->fs_info->trans_list, list) { in btrfs_wait_for_commit()
717 spin_unlock(&root->fs_info->trans_lock); in btrfs_wait_for_commit()
724 if (transid > root->fs_info->last_trans_committed) in btrfs_wait_for_commit()
730 spin_lock(&root->fs_info->trans_lock); in btrfs_wait_for_commit()
731 list_for_each_entry_reverse(t, &root->fs_info->trans_list, in btrfs_wait_for_commit()
741 spin_unlock(&root->fs_info->trans_lock); in btrfs_wait_for_commit()
754 if (!atomic_read(&root->fs_info->open_ioctl_trans)) in btrfs_throttle()
761 if (root->fs_info->global_block_rsv.space_info->full && in should_end_transaction()
765 return !!btrfs_block_rsv_check(root, &root->fs_info->global_block_rsv, 5); in should_end_transaction()
795 struct btrfs_fs_info *info = root->fs_info; in __btrfs_end_transaction()
836 if (lock && !atomic_read(&root->fs_info->open_ioctl_trans) && in __btrfs_end_transaction()
853 sb_end_intwrite(root->fs_info->sb); in __btrfs_end_transaction()
875 test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) { in __btrfs_end_transaction()
911 struct address_space *mapping = root->fs_info->btree_inode->i_mapping; in btrfs_write_marked_extents()
965 struct address_space *mapping = root->fs_info->btree_inode->i_mapping; in btrfs_wait_marked_extents()
969 struct btrfs_inode *btree_ino = BTRFS_I(root->fs_info->btree_inode); in btrfs_wait_marked_extents()
1074 struct btrfs_root *tree_root = root->fs_info->tree_root; in update_cowonly_root()
1107 struct btrfs_fs_info *fs_info = root->fs_info; in commit_cowonly_roots() local
1114 eb = btrfs_lock_root_node(fs_info->tree_root); in commit_cowonly_roots()
1115 ret = btrfs_cow_block(trans, fs_info->tree_root, eb, NULL, in commit_cowonly_roots()
1127 ret = btrfs_run_dev_stats(trans, root->fs_info); in commit_cowonly_roots()
1130 ret = btrfs_run_dev_replace(trans, root->fs_info); in commit_cowonly_roots()
1133 ret = btrfs_run_qgroups(trans, root->fs_info); in commit_cowonly_roots()
1146 while (!list_empty(&fs_info->dirty_cowonly_roots)) { in commit_cowonly_roots()
1147 next = fs_info->dirty_cowonly_roots.next; in commit_cowonly_roots()
1152 if (root != fs_info->extent_root) in commit_cowonly_roots()
1172 if (!list_empty(&fs_info->dirty_cowonly_roots)) in commit_cowonly_roots()
1175 list_add_tail(&fs_info->extent_root->dirty_list, in commit_cowonly_roots()
1177 btrfs_after_dev_replace_commit(fs_info); in commit_cowonly_roots()
1189 spin_lock(&root->fs_info->trans_lock); in btrfs_add_dead_root()
1191 list_add_tail(&root->root_list, &root->fs_info->dead_roots); in btrfs_add_dead_root()
1192 spin_unlock(&root->fs_info->trans_lock); in btrfs_add_dead_root()
1202 struct btrfs_fs_info *fs_info = root->fs_info; in commit_fs_roots() local
1207 spin_lock(&fs_info->fs_roots_radix_lock); in commit_fs_roots()
1209 ret = radix_tree_gang_lookup_tag(&fs_info->fs_roots_radix, in commit_fs_roots()
1217 radix_tree_tag_clear(&fs_info->fs_roots_radix, in commit_fs_roots()
1220 spin_unlock(&fs_info->fs_roots_radix_lock); in commit_fs_roots()
1239 err = btrfs_update_root(trans, fs_info->tree_root, in commit_fs_roots()
1242 spin_lock(&fs_info->fs_roots_radix_lock); in commit_fs_roots()
1248 spin_unlock(&fs_info->fs_roots_radix_lock); in commit_fs_roots()
1258 struct btrfs_fs_info *info = root->fs_info; in btrfs_defrag_root()
1276 if (btrfs_fs_closing(root->fs_info) || ret != -EAGAIN) in btrfs_defrag_root()
1279 if (btrfs_defrag_cancelled(root->fs_info)) { in btrfs_defrag_root()
1299 struct btrfs_fs_info *fs_info, in create_pending_snapshot() argument
1304 struct btrfs_root *tree_root = fs_info->tree_root; in create_pending_snapshot()
1478 pending->snap = btrfs_read_fs_root_no_name(root->fs_info, &key); in create_pending_snapshot()
1516 ret = btrfs_uuid_tree_add(trans, fs_info->uuid_root, new_uuid.b, in create_pending_snapshot()
1523 ret = btrfs_uuid_tree_add(trans, fs_info->uuid_root, in create_pending_snapshot()
1542 ret = btrfs_qgroup_prepare_account_extents(trans, fs_info); in create_pending_snapshot()
1545 ret = btrfs_qgroup_account_extents(trans, fs_info); in create_pending_snapshot()
1548 ret = btrfs_qgroup_inherit(trans, fs_info, in create_pending_snapshot()
1574 struct btrfs_fs_info *fs_info) in create_pending_snapshots() argument
1582 ret = create_pending_snapshot(trans, fs_info, pending); in create_pending_snapshots()
1594 super = root->fs_info->super_copy; in update_super_roots()
1596 root_item = &root->fs_info->chunk_root->root_item; in update_super_roots()
1601 root_item = &root->fs_info->tree_root->root_item; in update_super_roots()
1607 if (root->fs_info->update_uuid_tree_gen) in update_super_roots()
1644 wait_event(root->fs_info->transaction_blocked_wait, in wait_current_trans_commit_start()
1656 wait_event(root->fs_info->transaction_wait, in wait_current_trans_commit_start_and_unblock()
1681 __sb_writers_acquired(ac->root->fs_info->sb, SB_FREEZE_FS); in do_async_commit()
1720 __sb_writers_release(root->fs_info->sb, SB_FREEZE_FS); in btrfs_commit_transaction_async()
1748 spin_lock(&root->fs_info->trans_lock); in cleanup_transaction()
1758 if (cur_trans == root->fs_info->running_transaction) { in cleanup_transaction()
1760 spin_unlock(&root->fs_info->trans_lock); in cleanup_transaction()
1764 spin_lock(&root->fs_info->trans_lock); in cleanup_transaction()
1766 spin_unlock(&root->fs_info->trans_lock); in cleanup_transaction()
1770 spin_lock(&root->fs_info->trans_lock); in cleanup_transaction()
1771 if (cur_trans == root->fs_info->running_transaction) in cleanup_transaction()
1772 root->fs_info->running_transaction = NULL; in cleanup_transaction()
1773 spin_unlock(&root->fs_info->trans_lock); in cleanup_transaction()
1776 sb_end_intwrite(root->fs_info->sb); in cleanup_transaction()
1784 btrfs_scrub_cancel(root->fs_info); in cleanup_transaction()
1789 static inline int btrfs_start_delalloc_flush(struct btrfs_fs_info *fs_info) in btrfs_start_delalloc_flush() argument
1791 if (btrfs_test_opt(fs_info->tree_root, FLUSHONCOMMIT)) in btrfs_start_delalloc_flush()
1792 return btrfs_start_delalloc_roots(fs_info, 1, -1); in btrfs_start_delalloc_flush()
1796 static inline void btrfs_wait_delalloc_flush(struct btrfs_fs_info *fs_info) in btrfs_wait_delalloc_flush() argument
1798 if (btrfs_test_opt(fs_info->tree_root, FLUSHONCOMMIT)) in btrfs_wait_delalloc_flush()
1799 btrfs_wait_ordered_roots(fs_info, -1); in btrfs_wait_delalloc_flush()
1814 struct btrfs_inode *btree_ino = BTRFS_I(root->fs_info->btree_inode); in btrfs_commit_transaction()
1870 mutex_lock(&root->fs_info->ro_block_group_mutex); in btrfs_commit_transaction()
1874 mutex_unlock(&root->fs_info->ro_block_group_mutex); in btrfs_commit_transaction()
1884 spin_lock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
1886 spin_unlock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
1901 wake_up(&root->fs_info->transaction_blocked_wait); in btrfs_commit_transaction()
1903 if (cur_trans->list.prev != &root->fs_info->trans_list) { in btrfs_commit_transaction()
1908 spin_unlock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
1917 spin_unlock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
1920 spin_unlock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
1925 ret = btrfs_start_delalloc_flush(root->fs_info); in btrfs_commit_transaction()
1941 btrfs_wait_delalloc_flush(root->fs_info); in btrfs_commit_transaction()
1951 spin_lock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
1953 spin_unlock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
1967 mutex_lock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
1974 ret = create_pending_snapshots(trans, root->fs_info); in btrfs_commit_transaction()
1976 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
1992 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
1998 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
2003 ret = btrfs_qgroup_prepare_account_extents(trans, root->fs_info); in btrfs_commit_transaction()
2005 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
2030 mutex_lock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2034 mutex_unlock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2035 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
2043 btrfs_apply_pending_changes(root->fs_info); in btrfs_commit_transaction()
2048 btrfs_free_log_root_tree(trans, root->fs_info); in btrfs_commit_transaction()
2054 ret = btrfs_qgroup_account_extents(trans, root->fs_info); in btrfs_commit_transaction()
2056 mutex_unlock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2057 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
2063 mutex_unlock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2064 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
2074 mutex_unlock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2075 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
2081 cur_trans = root->fs_info->running_transaction; in btrfs_commit_transaction()
2083 btrfs_set_root_node(&root->fs_info->tree_root->root_item, in btrfs_commit_transaction()
2084 root->fs_info->tree_root->node); in btrfs_commit_transaction()
2085 list_add_tail(&root->fs_info->tree_root->dirty_list, in btrfs_commit_transaction()
2088 btrfs_set_root_node(&root->fs_info->chunk_root->root_item, in btrfs_commit_transaction()
2089 root->fs_info->chunk_root->node); in btrfs_commit_transaction()
2090 list_add_tail(&root->fs_info->chunk_root->dirty_list, in btrfs_commit_transaction()
2093 switch_commit_roots(cur_trans, root->fs_info); in btrfs_commit_transaction()
2100 btrfs_set_super_log_root(root->fs_info->super_copy, 0); in btrfs_commit_transaction()
2101 btrfs_set_super_log_root_level(root->fs_info->super_copy, 0); in btrfs_commit_transaction()
2102 memcpy(root->fs_info->super_for_commit, root->fs_info->super_copy, in btrfs_commit_transaction()
2103 sizeof(*root->fs_info->super_copy)); in btrfs_commit_transaction()
2105 btrfs_update_commit_device_size(root->fs_info); in btrfs_commit_transaction()
2113 spin_lock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
2115 root->fs_info->running_transaction = NULL; in btrfs_commit_transaction()
2116 spin_unlock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
2117 mutex_unlock(&root->fs_info->reloc_mutex); in btrfs_commit_transaction()
2119 wake_up(&root->fs_info->transaction_wait); in btrfs_commit_transaction()
2123 btrfs_std_error(root->fs_info, ret, in btrfs_commit_transaction()
2125 mutex_unlock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2131 mutex_unlock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2139 mutex_unlock(&root->fs_info->tree_log_mutex); in btrfs_commit_transaction()
2144 btrfs_clear_space_info_full(root->fs_info); in btrfs_commit_transaction()
2146 root->fs_info->last_trans_committed = cur_trans->transid; in btrfs_commit_transaction()
2154 spin_lock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
2156 spin_unlock(&root->fs_info->trans_lock); in btrfs_commit_transaction()
2162 sb_end_intwrite(root->fs_info->sb); in btrfs_commit_transaction()
2173 if (current != root->fs_info->transaction_kthread && in btrfs_commit_transaction()
2174 current != root->fs_info->cleaner_kthread) in btrfs_commit_transaction()
2185 btrfs_warn(root->fs_info, "Skipping commit of aborted transaction."); in btrfs_commit_transaction()
2206 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_clean_one_deleted_snapshot() local
2208 spin_lock(&fs_info->trans_lock); in btrfs_clean_one_deleted_snapshot()
2209 if (list_empty(&fs_info->dead_roots)) { in btrfs_clean_one_deleted_snapshot()
2210 spin_unlock(&fs_info->trans_lock); in btrfs_clean_one_deleted_snapshot()
2213 root = list_first_entry(&fs_info->dead_roots, in btrfs_clean_one_deleted_snapshot()
2216 spin_unlock(&fs_info->trans_lock); in btrfs_clean_one_deleted_snapshot()
2231 void btrfs_apply_pending_changes(struct btrfs_fs_info *fs_info) in btrfs_apply_pending_changes() argument
2236 prev = xchg(&fs_info->pending_changes, 0); in btrfs_apply_pending_changes()
2242 btrfs_set_opt(fs_info->mount_opt, INODE_MAP_CACHE); in btrfs_apply_pending_changes()
2247 btrfs_clear_opt(fs_info->mount_opt, INODE_MAP_CACHE); in btrfs_apply_pending_changes()
2252 btrfs_debug(fs_info, "pending commit done"); in btrfs_apply_pending_changes()
2256 btrfs_warn(fs_info, in btrfs_apply_pending_changes()