Lines Matching refs:fs_info
151 btrfs_err(transaction->fs_info,
179 struct btrfs_fs_info *fs_info = trans->fs_info;
188 down_write(&fs_info->commit_root_sem);
190 if (test_bit(BTRFS_FS_RELOC_RUNNING, &fs_info->flags))
191 fs_info->last_reloc_trans = trans->transid;
210 btrfs_drop_and_free_fs_root(fs_info, root);
215 up_write(&fs_info->commit_root_sem);
252 struct btrfs_fs_info *fs_info = trans->fs_info;
257 btrfs_block_rsv_release(fs_info, &fs_info->chunk_block_rsv,
265 static noinline int join_transaction(struct btrfs_fs_info *fs_info,
270 spin_lock(&fs_info->trans_lock);
273 if (BTRFS_FS_ERROR(fs_info)) {
274 spin_unlock(&fs_info->trans_lock);
278 cur_trans = fs_info->running_transaction;
281 spin_unlock(&fs_info->trans_lock);
285 spin_unlock(&fs_info->trans_lock);
291 spin_unlock(&fs_info->trans_lock);
292 btrfs_lockdep_acquire(fs_info, btrfs_trans_num_writers);
293 btrfs_lockdep_acquire(fs_info, btrfs_trans_num_extwriters);
296 spin_unlock(&fs_info->trans_lock);
316 btrfs_lockdep_acquire(fs_info, btrfs_trans_num_writers);
317 btrfs_lockdep_acquire(fs_info, btrfs_trans_num_extwriters);
319 spin_lock(&fs_info->trans_lock);
320 if (fs_info->running_transaction) {
325 btrfs_lockdep_release(fs_info, btrfs_trans_num_extwriters);
326 btrfs_lockdep_release(fs_info, btrfs_trans_num_writers);
329 } else if (BTRFS_FS_ERROR(fs_info)) {
330 spin_unlock(&fs_info->trans_lock);
331 btrfs_lockdep_release(fs_info, btrfs_trans_num_extwriters);
332 btrfs_lockdep_release(fs_info, btrfs_trans_num_writers);
337 cur_trans->fs_info = fs_info;
364 if (!list_empty(&fs_info->tree_mod_seq_list))
366 if (!RB_EMPTY_ROOT(&fs_info->tree_mod_log))
368 atomic64_set(&fs_info->tree_mod_seq, 0);
382 list_add_tail(&cur_trans->list, &fs_info->trans_list);
383 extent_io_tree_init(fs_info, &cur_trans->dirty_pages,
385 extent_io_tree_init(fs_info, &cur_trans->pinned_extents,
387 fs_info->generation++;
388 cur_trans->transid = fs_info->generation;
389 fs_info->running_transaction = cur_trans;
391 spin_unlock(&fs_info->trans_lock);
406 struct btrfs_fs_info *fs_info = root->fs_info;
425 spin_lock(&fs_info->fs_roots_radix_lock);
427 spin_unlock(&fs_info->fs_roots_radix_lock);
430 radix_tree_tag_set(&fs_info->fs_roots_radix,
433 spin_unlock(&fs_info->fs_roots_radix_lock);
466 struct btrfs_fs_info *fs_info = root->fs_info;
475 spin_lock(&fs_info->fs_roots_radix_lock);
476 radix_tree_tag_clear(&fs_info->fs_roots_radix,
479 spin_unlock(&fs_info->fs_roots_radix_lock);
485 struct btrfs_fs_info *fs_info = root->fs_info;
500 mutex_lock(&fs_info->reloc_mutex);
502 mutex_unlock(&fs_info->reloc_mutex);
518 static void wait_current_trans(struct btrfs_fs_info *fs_info)
522 spin_lock(&fs_info->trans_lock);
523 cur_trans = fs_info->running_transaction;
526 spin_unlock(&fs_info->trans_lock);
528 btrfs_might_wait_for_state(fs_info, BTRFS_LOCKDEP_TRANS_UNBLOCKED);
529 wait_event(fs_info->transaction_wait,
534 spin_unlock(&fs_info->trans_lock);
538 static int may_wait_transaction(struct btrfs_fs_info *fs_info, int type)
540 if (test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags))
551 struct btrfs_fs_info *fs_info = root->fs_info;
553 if (!fs_info->reloc_ctl ||
567 struct btrfs_fs_info *fs_info = root->fs_info;
568 struct btrfs_block_rsv *delayed_refs_rsv = &fs_info->delayed_refs_rsv;
577 if (BTRFS_FS_ERROR(fs_info))
594 if (num_items && root != fs_info->chunk_root) {
595 struct btrfs_block_rsv *rsv = &fs_info->trans_block_rsv;
598 qgroup_reserved = num_items * fs_info->nodesize;
616 num_bytes = btrfs_calc_insert_metadata_size(fs_info, num_items);
619 delayed_refs_bytes = btrfs_calc_delayed_ref_bytes(fs_info,
628 num_bytes += fs_info->nodesize;
632 ret = btrfs_reserve_metadata_bytes(fs_info, rsv, num_bytes, flush);
636 btrfs_migrate_to_delayed_refs_rsv(fs_info, delayed_refs_bytes);
652 ret = btrfs_delayed_refs_rsv_refill(fs_info, flush);
674 sb_start_intwrite(fs_info->sb);
676 if (may_wait_transaction(fs_info, type))
677 wait_current_trans(fs_info);
680 ret = join_transaction(fs_info, type);
682 wait_current_trans(fs_info);
692 cur_trans = fs_info->running_transaction;
697 h->fs_info = root->fs_info;
704 may_wait_transaction(fs_info, type)) {
711 trace_btrfs_space_reservation(fs_info, "transaction",
713 h->block_rsv = &fs_info->trans_block_rsv;
739 btrfs_chunk_alloc(h, btrfs_get_alloc_profile(fs_info, flags),
766 sb_end_intwrite(fs_info->sb);
770 btrfs_block_rsv_release(fs_info, &fs_info->trans_block_rsv,
853 ret = btrfs_wait_for_commit(root->fs_info, 0);
865 struct btrfs_fs_info *fs_info = commit->fs_info;
874 btrfs_might_wait_for_state(fs_info, BTRFS_LOCKDEP_TRANS_COMPLETED);
876 btrfs_might_wait_for_state(fs_info, BTRFS_LOCKDEP_TRANS_SUPER_COMMITTED);
893 spin_lock(&fs_info->trans_lock);
894 commit = list_first_entry_or_null(&fs_info->trans_list,
898 spin_unlock(&fs_info->trans_lock);
903 spin_unlock(&fs_info->trans_lock);
907 int btrfs_wait_for_commit(struct btrfs_fs_info *fs_info, u64 transid)
913 if (transid <= fs_info->last_trans_committed)
917 spin_lock(&fs_info->trans_lock);
918 list_for_each_entry(t, &fs_info->trans_list, list) {
930 spin_unlock(&fs_info->trans_lock);
937 if (transid > fs_info->last_trans_committed)
943 spin_lock(&fs_info->trans_lock);
944 list_for_each_entry_reverse(t, &fs_info->trans_list,
954 spin_unlock(&fs_info->trans_lock);
966 void btrfs_throttle(struct btrfs_fs_info *fs_info)
968 wait_current_trans(fs_info);
979 if (btrfs_check_space_for_delayed_refs(trans->fs_info))
982 return !!btrfs_block_rsv_check(&trans->fs_info->global_block_rsv, 50);
988 struct btrfs_fs_info *fs_info = trans->fs_info;
998 ASSERT(trans->block_rsv == &fs_info->trans_block_rsv);
999 trace_btrfs_space_reservation(fs_info, "transaction",
1001 btrfs_block_rsv_release(fs_info, trans->block_rsv,
1009 struct btrfs_fs_info *info = trans->fs_info;
1074 int btrfs_write_marked_extents(struct btrfs_fs_info *fs_info,
1079 struct address_space *mapping = fs_info->btree_inode->i_mapping;
1128 static int __btrfs_wait_marked_extents(struct btrfs_fs_info *fs_info,
1133 struct address_space *mapping = fs_info->btree_inode->i_mapping;
1166 static int btrfs_wait_extents(struct btrfs_fs_info *fs_info,
1172 err = __btrfs_wait_marked_extents(fs_info, dirty_pages);
1173 if (test_and_clear_bit(BTRFS_FS_BTREE_ERR, &fs_info->flags))
1183 struct btrfs_fs_info *fs_info = log_root->fs_info;
1190 err = __btrfs_wait_marked_extents(fs_info, dirty_pages);
1192 test_and_clear_bit(BTRFS_FS_LOG1_ERR, &fs_info->flags))
1196 test_and_clear_bit(BTRFS_FS_LOG2_ERR, &fs_info->flags))
1216 struct btrfs_fs_info *fs_info = trans->fs_info;
1220 ret = btrfs_write_marked_extents(fs_info, dirty_pages, EXTENT_DIRTY);
1222 ret2 = btrfs_wait_extents(fs_info, dirty_pages);
1250 struct btrfs_fs_info *fs_info = root->fs_info;
1251 struct btrfs_root *tree_root = fs_info->tree_root;
1283 struct btrfs_fs_info *fs_info = trans->fs_info;
1296 eb = btrfs_lock_root_node(fs_info->tree_root);
1297 ret = btrfs_cow_block(trans, fs_info->tree_root, eb, NULL,
1320 while (!list_empty(&fs_info->dirty_cowonly_roots)) {
1322 next = fs_info->dirty_cowonly_roots.next;
1355 if (!list_empty(&fs_info->dirty_cowonly_roots))
1359 fs_info->dev_replace.committed_cursor_left =
1360 fs_info->dev_replace.cursor_left_last_write_of_item;
1369 void btrfs_maybe_wake_unfinished_drop(struct btrfs_fs_info *fs_info)
1376 spin_lock(&fs_info->trans_lock);
1377 if (!list_empty(&fs_info->dead_roots)) {
1378 struct btrfs_root *root = list_first_entry(&fs_info->dead_roots,
1382 spin_unlock(&fs_info->trans_lock);
1386 spin_unlock(&fs_info->trans_lock);
1388 btrfs_wake_unfinished_drop(fs_info);
1398 struct btrfs_fs_info *fs_info = root->fs_info;
1400 spin_lock(&fs_info->trans_lock);
1406 list_add(&root->root_list, &fs_info->dead_roots);
1408 list_add_tail(&root->root_list, &fs_info->dead_roots);
1410 spin_unlock(&fs_info->trans_lock);
1419 struct btrfs_fs_info *fs_info = trans->fs_info;
1430 spin_lock(&fs_info->fs_roots_radix_lock);
1432 ret = radix_tree_gang_lookup_tag(&fs_info->fs_roots_radix,
1450 radix_tree_tag_clear(&fs_info->fs_roots_radix,
1453 spin_unlock(&fs_info->fs_roots_radix_lock);
1471 ret2 = btrfs_update_root(trans, fs_info->tree_root,
1476 spin_lock(&fs_info->fs_roots_radix_lock);
1480 spin_unlock(&fs_info->fs_roots_radix_lock);
1490 struct btrfs_fs_info *info = root->fs_info;
1536 struct btrfs_fs_info *fs_info = src->fs_info;
1544 if (!test_bit(BTRFS_FS_QUOTA_ENABLED, &fs_info->flags))
1605 btrfs_handle_fs_error(fs_info, ret,
1633 struct btrfs_fs_info *fs_info = trans->fs_info;
1636 struct btrfs_root *tree_root = fs_info->tree_root;
1686 pending->error = btrfs_block_rsv_add(fs_info,
1701 trace_btrfs_space_reservation(fs_info, "transaction",
1824 pending->snap = btrfs_get_new_fs_root(fs_info, objectid, &pending->anon_dev);
1920 static void update_super_roots(struct btrfs_fs_info *fs_info)
1925 super = fs_info->super_copy;
1927 root_item = &fs_info->chunk_root->root_item;
1932 root_item = &fs_info->tree_root->root_item;
1936 if (btrfs_test_opt(fs_info, SPACE_CACHE))
1938 else if (test_bit(BTRFS_FS_CLEANUP_SPACE_CACHE_V1, &fs_info->flags))
1940 if (test_bit(BTRFS_FS_UPDATE_UUID_TREE_GEN, &fs_info->flags))
1972 struct btrfs_fs_info *fs_info = trans->fs_info;
1976 set_bit(BTRFS_FS_COMMIT_TRANS, &fs_info->flags);
1977 wake_up_process(fs_info->transaction_kthread);
1989 btrfs_might_wait_for_state(fs_info, BTRFS_LOCKDEP_TRANS_COMMIT_PREP);
1990 wait_event(fs_info->transaction_blocked_wait,
1998 struct btrfs_fs_info *fs_info = trans->fs_info;
2005 spin_lock(&fs_info->trans_lock);
2014 if (cur_trans == fs_info->running_transaction) {
2016 spin_unlock(&fs_info->trans_lock);
2022 btrfs_might_wait_for_event(fs_info, btrfs_trans_num_writers);
2026 spin_lock(&fs_info->trans_lock);
2039 spin_unlock(&fs_info->trans_lock);
2041 btrfs_cleanup_one_transaction(trans->transaction, fs_info);
2043 spin_lock(&fs_info->trans_lock);
2044 if (cur_trans == fs_info->running_transaction)
2045 fs_info->running_transaction = NULL;
2046 spin_unlock(&fs_info->trans_lock);
2049 sb_end_intwrite(fs_info->sb);
2053 trace_btrfs_transaction_commit(fs_info);
2069 if (!test_bit(BTRFS_FS_RELOC_RUNNING, &fs_info->flags))
2070 btrfs_scrub_cancel(fs_info);
2081 struct btrfs_fs_info *fs_info = trans->fs_info;
2085 btrfs_delayed_refs_rsv_release(fs_info, 1);
2090 static inline int btrfs_start_delalloc_flush(struct btrfs_fs_info *fs_info)
2109 if (btrfs_test_opt(fs_info, FLUSHONCOMMIT))
2110 try_to_writeback_inodes_sb(fs_info->sb, WB_REASON_SYNC);
2114 static inline void btrfs_wait_delalloc_flush(struct btrfs_fs_info *fs_info)
2116 if (btrfs_test_opt(fs_info, FLUSHONCOMMIT))
2117 btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1);
2123 * and while holding fs_info->trans_lock.
2135 lockdep_assert_held(&trans->fs_info->trans_lock);
2141 static void update_commit_stats(struct btrfs_fs_info *fs_info, ktime_t interval)
2143 fs_info->commit_stats.commit_count++;
2144 fs_info->commit_stats.last_commit_dur = interval;
2145 fs_info->commit_stats.max_commit_dur =
2146 max_t(u64, fs_info->commit_stats.max_commit_dur, interval);
2147 fs_info->commit_stats.total_commit_dur += interval;
2152 struct btrfs_fs_info *fs_info = trans->fs_info;
2160 btrfs_trans_state_lockdep_acquire(fs_info, BTRFS_LOCKDEP_TRANS_COMMIT_PREP);
2162 clear_bit(BTRFS_FS_NEED_TRANS_COMMIT, &fs_info->flags);
2206 mutex_lock(&fs_info->ro_block_group_mutex);
2210 mutex_unlock(&fs_info->ro_block_group_mutex);
2219 spin_lock(&fs_info->trans_lock);
2225 spin_unlock(&fs_info->trans_lock);
2231 btrfs_trans_state_lockdep_release(fs_info,
2245 wake_up(&fs_info->transaction_blocked_wait);
2246 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_COMMIT_PREP);
2248 if (cur_trans->list.prev != &fs_info->trans_list) {
2258 spin_unlock(&fs_info->trans_lock);
2267 spin_lock(&fs_info->trans_lock);
2272 * from the list of transactions at fs_info->trans_list. So we
2276 if (BTRFS_FS_ERROR(fs_info)) {
2277 spin_unlock(&fs_info->trans_lock);
2284 wake_up(&fs_info->transaction_blocked_wait);
2285 spin_unlock(&fs_info->trans_lock);
2295 ret = btrfs_start_delalloc_flush(fs_info);
2308 btrfs_lockdep_release(fs_info, btrfs_trans_num_extwriters);
2309 btrfs_might_wait_for_event(fs_info, btrfs_trans_num_extwriters);
2316 btrfs_lockdep_release(fs_info, btrfs_trans_num_writers);
2320 btrfs_wait_delalloc_flush(fs_info);
2327 btrfs_might_wait_for_event(fs_info, btrfs_trans_pending_ordered);
2331 btrfs_scrub_pause(fs_info);
2337 spin_lock(&fs_info->trans_lock);
2340 spin_unlock(&fs_info->trans_lock);
2347 btrfs_lockdep_release(fs_info, btrfs_trans_num_writers);
2348 btrfs_might_wait_for_event(fs_info, btrfs_trans_num_writers);
2358 btrfs_trans_state_lockdep_acquire(fs_info, BTRFS_LOCKDEP_TRANS_COMPLETED);
2359 btrfs_trans_state_lockdep_acquire(fs_info, BTRFS_LOCKDEP_TRANS_SUPER_COMMITTED);
2360 btrfs_trans_state_lockdep_acquire(fs_info, BTRFS_LOCKDEP_TRANS_UNBLOCKED);
2367 clear_bit(BTRFS_FS_COMMIT_TRANS, &fs_info->flags);
2371 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_UNBLOCKED);
2379 mutex_lock(&fs_info->reloc_mutex);
2412 btrfs_assert_delayed_root_empty(fs_info);
2423 btrfs_free_log_root_tree(trans, fs_info);
2446 cur_trans = fs_info->running_transaction;
2448 btrfs_set_root_node(&fs_info->tree_root->root_item,
2449 fs_info->tree_root->node);
2450 list_add_tail(&fs_info->tree_root->dirty_list,
2453 btrfs_set_root_node(&fs_info->chunk_root->root_item,
2454 fs_info->chunk_root->node);
2455 list_add_tail(&fs_info->chunk_root->dirty_list,
2458 if (btrfs_fs_incompat(fs_info, EXTENT_TREE_V2)) {
2459 btrfs_set_root_node(&fs_info->block_group_root->root_item,
2460 fs_info->block_group_root->node);
2461 list_add_tail(&fs_info->block_group_root->dirty_list,
2469 update_super_roots(fs_info);
2471 btrfs_set_super_log_root(fs_info->super_copy, 0);
2472 btrfs_set_super_log_root_level(fs_info->super_copy, 0);
2473 memcpy(fs_info->super_for_commit, fs_info->super_copy,
2474 sizeof(*fs_info->super_copy));
2478 clear_bit(BTRFS_FS_LOG1_ERR, &fs_info->flags);
2479 clear_bit(BTRFS_FS_LOG2_ERR, &fs_info->flags);
2485 * setting fs_info->running_transaction to NULL, lock tree_log_mutex to
2491 mutex_lock(&fs_info->tree_log_mutex);
2493 spin_lock(&fs_info->trans_lock);
2495 fs_info->running_transaction = NULL;
2496 spin_unlock(&fs_info->trans_lock);
2497 mutex_unlock(&fs_info->reloc_mutex);
2499 wake_up(&fs_info->transaction_wait);
2500 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_UNBLOCKED);
2503 if (test_bit(BTRFS_FS_FEATURE_CHANGED, &fs_info->flags) &&
2504 fs_info->cleaner_kthread)
2505 wake_up_process(fs_info->cleaner_kthread);
2509 btrfs_handle_fs_error(fs_info, ret,
2511 mutex_unlock(&fs_info->tree_log_mutex);
2515 ret = write_all_supers(fs_info, 0);
2520 mutex_unlock(&fs_info->tree_log_mutex);
2530 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_SUPER_COMMITTED);
2535 btrfs_clear_space_info_full(fs_info);
2537 fs_info->last_trans_committed = cur_trans->transid;
2544 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_COMPLETED);
2546 spin_lock(&fs_info->trans_lock);
2548 spin_unlock(&fs_info->trans_lock);
2554 sb_end_intwrite(fs_info->sb);
2556 trace_btrfs_transaction_commit(fs_info);
2560 btrfs_scrub_continue(fs_info);
2567 update_commit_stats(fs_info, interval);
2572 mutex_unlock(&fs_info->reloc_mutex);
2573 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_UNBLOCKED);
2575 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_SUPER_COMMITTED);
2576 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_COMPLETED);
2577 btrfs_scrub_continue(fs_info);
2583 btrfs_warn(fs_info, "Skipping commit of aborted transaction.");
2591 btrfs_lockdep_release(fs_info, btrfs_trans_num_extwriters);
2592 btrfs_lockdep_release(fs_info, btrfs_trans_num_writers);
2596 btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_COMMIT_PREP);
2611 int btrfs_clean_one_deleted_snapshot(struct btrfs_fs_info *fs_info)
2616 spin_lock(&fs_info->trans_lock);
2617 if (list_empty(&fs_info->dead_roots)) {
2618 spin_unlock(&fs_info->trans_lock);
2621 root = list_first_entry(&fs_info->dead_roots,
2624 spin_unlock(&fs_info->trans_lock);
2626 btrfs_debug(fs_info, "cleaner removing %llu", root->root_key.objectid);
2657 struct btrfs_fs_info *fs_info = trans->fs_info;
2662 btrfs_dump_space_info_for_trans_abort(fs_info);
2664 wake_up(&fs_info->transaction_wait);
2665 wake_up(&fs_info->transaction_blocked_wait);
2666 __btrfs_handle_fs_error(fs_info, function, line, errno, NULL);