aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r--fs/btrfs/inode.c286
1 files changed, 133 insertions, 153 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index b2d004ad66a0..f12747c9447b 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1792,12 +1792,12 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)
1792 } 1792 }
1793 ret = 0; 1793 ret = 0;
1794out: 1794out:
1795 if (nolock) { 1795 if (root != root->fs_info->tree_root)
1796 if (trans)
1797 btrfs_end_transaction_nolock(trans, root);
1798 } else {
1799 btrfs_delalloc_release_metadata(inode, ordered_extent->len); 1796 btrfs_delalloc_release_metadata(inode, ordered_extent->len);
1800 if (trans) 1797 if (trans) {
1798 if (nolock)
1799 btrfs_end_transaction_nolock(trans, root);
1800 else
1801 btrfs_end_transaction(trans, root); 1801 btrfs_end_transaction(trans, root);
1802 } 1802 }
1803 1803
@@ -2079,89 +2079,6 @@ void btrfs_run_delayed_iputs(struct btrfs_root *root)
2079 up_read(&root->fs_info->cleanup_work_sem); 2079 up_read(&root->fs_info->cleanup_work_sem);
2080} 2080}
2081 2081
2082/*
2083 * calculate extra metadata reservation when snapshotting a subvolume
2084 * contains orphan files.
2085 */
2086void btrfs_orphan_pre_snapshot(struct btrfs_trans_handle *trans,
2087 struct btrfs_pending_snapshot *pending,
2088 u64 *bytes_to_reserve)
2089{
2090 struct btrfs_root *root;
2091 struct btrfs_block_rsv *block_rsv;
2092 u64 num_bytes;
2093 int index;
2094
2095 root = pending->root;
2096 if (!root->orphan_block_rsv || list_empty(&root->orphan_list))
2097 return;
2098
2099 block_rsv = root->orphan_block_rsv;
2100
2101 /* orphan block reservation for the snapshot */
2102 num_bytes = block_rsv->size;
2103
2104 /*
2105 * after the snapshot is created, COWing tree blocks may use more
2106 * space than it frees. So we should make sure there is enough
2107 * reserved space.
2108 */
2109 index = trans->transid & 0x1;
2110 if (block_rsv->reserved + block_rsv->freed[index] < block_rsv->size) {
2111 num_bytes += block_rsv->size -
2112 (block_rsv->reserved + block_rsv->freed[index]);
2113 }
2114
2115 *bytes_to_reserve += num_bytes;
2116}
2117
2118void btrfs_orphan_post_snapshot(struct btrfs_trans_handle *trans,
2119 struct btrfs_pending_snapshot *pending)
2120{
2121 struct btrfs_root *root = pending->root;
2122 struct btrfs_root *snap = pending->snap;
2123 struct btrfs_block_rsv *block_rsv;
2124 u64 num_bytes;
2125 int index;
2126 int ret;
2127
2128 if (!root->orphan_block_rsv || list_empty(&root->orphan_list))
2129 return;
2130
2131 /* refill source subvolume's orphan block reservation */
2132 block_rsv = root->orphan_block_rsv;
2133 index = trans->transid & 0x1;
2134 if (block_rsv->reserved + block_rsv->freed[index] < block_rsv->size) {
2135 num_bytes = block_rsv->size -
2136 (block_rsv->reserved + block_rsv->freed[index]);
2137 ret = btrfs_block_rsv_migrate(&pending->block_rsv,
2138 root->orphan_block_rsv,
2139 num_bytes);
2140 BUG_ON(ret);
2141 }
2142
2143 /* setup orphan block reservation for the snapshot */
2144 block_rsv = btrfs_alloc_block_rsv(snap);
2145 BUG_ON(!block_rsv);
2146
2147 btrfs_add_durable_block_rsv(root->fs_info, block_rsv);
2148 snap->orphan_block_rsv = block_rsv;
2149
2150 num_bytes = root->orphan_block_rsv->size;
2151 ret = btrfs_block_rsv_migrate(&pending->block_rsv,
2152 block_rsv, num_bytes);
2153 BUG_ON(ret);
2154
2155#if 0
2156 /* insert orphan item for the snapshot */
2157 WARN_ON(!root->orphan_item_inserted);
2158 ret = btrfs_insert_orphan_item(trans, root->fs_info->tree_root,
2159 snap->root_key.objectid);
2160 BUG_ON(ret);
2161 snap->orphan_item_inserted = 1;
2162#endif
2163}
2164
2165enum btrfs_orphan_cleanup_state { 2082enum btrfs_orphan_cleanup_state {
2166 ORPHAN_CLEANUP_STARTED = 1, 2083 ORPHAN_CLEANUP_STARTED = 1,
2167 ORPHAN_CLEANUP_DONE = 2, 2084 ORPHAN_CLEANUP_DONE = 2,
@@ -2247,9 +2164,6 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)
2247 } 2164 }
2248 spin_unlock(&root->orphan_lock); 2165 spin_unlock(&root->orphan_lock);
2249 2166
2250 if (block_rsv)
2251 btrfs_add_durable_block_rsv(root->fs_info, block_rsv);
2252
2253 /* grab metadata reservation from transaction handle */ 2167 /* grab metadata reservation from transaction handle */
2254 if (reserve) { 2168 if (reserve) {
2255 ret = btrfs_orphan_reserve_metadata(trans, inode); 2169 ret = btrfs_orphan_reserve_metadata(trans, inode);
@@ -2316,6 +2230,7 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)
2316 struct btrfs_key key, found_key; 2230 struct btrfs_key key, found_key;
2317 struct btrfs_trans_handle *trans; 2231 struct btrfs_trans_handle *trans;
2318 struct inode *inode; 2232 struct inode *inode;
2233 u64 last_objectid = 0;
2319 int ret = 0, nr_unlink = 0, nr_truncate = 0; 2234 int ret = 0, nr_unlink = 0, nr_truncate = 0;
2320 2235
2321 if (cmpxchg(&root->orphan_cleanup_state, 0, ORPHAN_CLEANUP_STARTED)) 2236 if (cmpxchg(&root->orphan_cleanup_state, 0, ORPHAN_CLEANUP_STARTED))
@@ -2367,41 +2282,49 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)
2367 * crossing root thing. we store the inode number in the 2282 * crossing root thing. we store the inode number in the
2368 * offset of the orphan item. 2283 * offset of the orphan item.
2369 */ 2284 */
2285
2286 if (found_key.offset == last_objectid) {
2287 printk(KERN_ERR "btrfs: Error removing orphan entry, "
2288 "stopping orphan cleanup\n");
2289 ret = -EINVAL;
2290 goto out;
2291 }
2292
2293 last_objectid = found_key.offset;
2294
2370 found_key.objectid = found_key.offset; 2295 found_key.objectid = found_key.offset;
2371 found_key.type = BTRFS_INODE_ITEM_KEY; 2296 found_key.type = BTRFS_INODE_ITEM_KEY;
2372 found_key.offset = 0; 2297 found_key.offset = 0;
2373 inode = btrfs_iget(root->fs_info->sb, &found_key, root, NULL); 2298 inode = btrfs_iget(root->fs_info->sb, &found_key, root, NULL);
2374 if (IS_ERR(inode)) { 2299 ret = PTR_RET(inode);
2375 ret = PTR_ERR(inode); 2300 if (ret && ret != -ESTALE)
2376 goto out; 2301 goto out;
2377 }
2378
2379 /*
2380 * add this inode to the orphan list so btrfs_orphan_del does
2381 * the proper thing when we hit it
2382 */
2383 spin_lock(&root->orphan_lock);
2384 list_add(&BTRFS_I(inode)->i_orphan, &root->orphan_list);
2385 spin_unlock(&root->orphan_lock);
2386 2302
2387 /* 2303 /*
2388 * if this is a bad inode, means we actually succeeded in 2304 * Inode is already gone but the orphan item is still there,
2389 * removing the inode, but not the orphan record, which means 2305 * kill the orphan item.
2390 * we need to manually delete the orphan since iput will just
2391 * do a destroy_inode
2392 */ 2306 */
2393 if (is_bad_inode(inode)) { 2307 if (ret == -ESTALE) {
2394 trans = btrfs_start_transaction(root, 0); 2308 trans = btrfs_start_transaction(root, 1);
2395 if (IS_ERR(trans)) { 2309 if (IS_ERR(trans)) {
2396 ret = PTR_ERR(trans); 2310 ret = PTR_ERR(trans);
2397 goto out; 2311 goto out;
2398 } 2312 }
2399 btrfs_orphan_del(trans, inode); 2313 ret = btrfs_del_orphan_item(trans, root,
2314 found_key.objectid);
2315 BUG_ON(ret);
2400 btrfs_end_transaction(trans, root); 2316 btrfs_end_transaction(trans, root);
2401 iput(inode);
2402 continue; 2317 continue;
2403 } 2318 }
2404 2319
2320 /*
2321 * add this inode to the orphan list so btrfs_orphan_del does
2322 * the proper thing when we hit it
2323 */
2324 spin_lock(&root->orphan_lock);
2325 list_add(&BTRFS_I(inode)->i_orphan, &root->orphan_list);
2326 spin_unlock(&root->orphan_lock);
2327
2405 /* if we have links, this was a truncate, lets do that */ 2328 /* if we have links, this was a truncate, lets do that */
2406 if (inode->i_nlink) { 2329 if (inode->i_nlink) {
2407 if (!S_ISREG(inode->i_mode)) { 2330 if (!S_ISREG(inode->i_mode)) {
@@ -2835,7 +2758,16 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir,
2835 u64 ino = btrfs_ino(inode); 2758 u64 ino = btrfs_ino(inode);
2836 u64 dir_ino = btrfs_ino(dir); 2759 u64 dir_ino = btrfs_ino(dir);
2837 2760
2838 trans = btrfs_start_transaction(root, 10); 2761 /*
2762 * 1 for the possible orphan item
2763 * 1 for the dir item
2764 * 1 for the dir index
2765 * 1 for the inode ref
2766 * 1 for the inode ref in the tree log
2767 * 2 for the dir entries in the log
2768 * 1 for the inode
2769 */
2770 trans = btrfs_start_transaction(root, 8);
2839 if (!IS_ERR(trans) || PTR_ERR(trans) != -ENOSPC) 2771 if (!IS_ERR(trans) || PTR_ERR(trans) != -ENOSPC)
2840 return trans; 2772 return trans;
2841 2773
@@ -2858,7 +2790,8 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir,
2858 return ERR_PTR(-ENOMEM); 2790 return ERR_PTR(-ENOMEM);
2859 } 2791 }
2860 2792
2861 trans = btrfs_start_transaction(root, 0); 2793 /* 1 for the orphan item */
2794 trans = btrfs_start_transaction(root, 1);
2862 if (IS_ERR(trans)) { 2795 if (IS_ERR(trans)) {
2863 btrfs_free_path(path); 2796 btrfs_free_path(path);
2864 root->fs_info->enospc_unlink = 0; 2797 root->fs_info->enospc_unlink = 0;
@@ -2963,6 +2896,12 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir,
2963 err = 0; 2896 err = 0;
2964out: 2897out:
2965 btrfs_free_path(path); 2898 btrfs_free_path(path);
2899 /* Migrate the orphan reservation over */
2900 if (!err)
2901 err = btrfs_block_rsv_migrate(trans->block_rsv,
2902 &root->fs_info->global_block_rsv,
2903 btrfs_calc_trans_metadata_size(root, 1));
2904
2966 if (err) { 2905 if (err) {
2967 btrfs_end_transaction(trans, root); 2906 btrfs_end_transaction(trans, root);
2968 root->fs_info->enospc_unlink = 0; 2907 root->fs_info->enospc_unlink = 0;
@@ -3368,6 +3307,7 @@ static int btrfs_truncate_page(struct address_space *mapping, loff_t from)
3368 pgoff_t index = from >> PAGE_CACHE_SHIFT; 3307 pgoff_t index = from >> PAGE_CACHE_SHIFT;
3369 unsigned offset = from & (PAGE_CACHE_SIZE-1); 3308 unsigned offset = from & (PAGE_CACHE_SIZE-1);
3370 struct page *page; 3309 struct page *page;
3310 gfp_t mask = btrfs_alloc_write_mask(mapping);
3371 int ret = 0; 3311 int ret = 0;
3372 u64 page_start; 3312 u64 page_start;
3373 u64 page_end; 3313 u64 page_end;
@@ -3380,7 +3320,7 @@ static int btrfs_truncate_page(struct address_space *mapping, loff_t from)
3380 3320
3381 ret = -ENOMEM; 3321 ret = -ENOMEM;
3382again: 3322again:
3383 page = find_or_create_page(mapping, index, GFP_NOFS); 3323 page = find_or_create_page(mapping, index, mask);
3384 if (!page) { 3324 if (!page) {
3385 btrfs_delalloc_release_space(inode, PAGE_CACHE_SIZE); 3325 btrfs_delalloc_release_space(inode, PAGE_CACHE_SIZE);
3386 goto out; 3326 goto out;
@@ -3613,6 +3553,8 @@ void btrfs_evict_inode(struct inode *inode)
3613{ 3553{
3614 struct btrfs_trans_handle *trans; 3554 struct btrfs_trans_handle *trans;
3615 struct btrfs_root *root = BTRFS_I(inode)->root; 3555 struct btrfs_root *root = BTRFS_I(inode)->root;
3556 struct btrfs_block_rsv *rsv, *global_rsv;
3557 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1);
3616 unsigned long nr; 3558 unsigned long nr;
3617 int ret; 3559 int ret;
3618 3560
@@ -3640,22 +3582,55 @@ void btrfs_evict_inode(struct inode *inode)
3640 goto no_delete; 3582 goto no_delete;
3641 } 3583 }
3642 3584
3585 rsv = btrfs_alloc_block_rsv(root);
3586 if (!rsv) {
3587 btrfs_orphan_del(NULL, inode);
3588 goto no_delete;
3589 }
3590 rsv->size = min_size;
3591 global_rsv = &root->fs_info->global_block_rsv;
3592
3643 btrfs_i_size_write(inode, 0); 3593 btrfs_i_size_write(inode, 0);
3644 3594
3595 /*
3596 * This is a bit simpler than btrfs_truncate since
3597 *
3598 * 1) We've already reserved our space for our orphan item in the
3599 * unlink.
3600 * 2) We're going to delete the inode item, so we don't need to update
3601 * it at all.
3602 *
3603 * So we just need to reserve some slack space in case we add bytes when
3604 * doing the truncate.
3605 */
3645 while (1) { 3606 while (1) {
3646 trans = btrfs_join_transaction(root); 3607 ret = btrfs_block_rsv_refill(root, rsv, min_size);
3647 BUG_ON(IS_ERR(trans)); 3608
3648 trans->block_rsv = root->orphan_block_rsv; 3609 /*
3610 * Try and steal from the global reserve since we will
3611 * likely not use this space anyway, we want to try as
3612 * hard as possible to get this to work.
3613 */
3614 if (ret)
3615 ret = btrfs_block_rsv_migrate(global_rsv, rsv, min_size);
3649 3616
3650 ret = btrfs_block_rsv_check(trans, root,
3651 root->orphan_block_rsv, 0, 5);
3652 if (ret) { 3617 if (ret) {
3653 BUG_ON(ret != -EAGAIN); 3618 printk(KERN_WARNING "Could not get space for a "
3654 ret = btrfs_commit_transaction(trans, root); 3619 "delete, will truncate on mount %d\n", ret);
3655 BUG_ON(ret); 3620 btrfs_orphan_del(NULL, inode);
3656 continue; 3621 btrfs_free_block_rsv(root, rsv);
3622 goto no_delete;
3623 }
3624
3625 trans = btrfs_start_transaction(root, 0);
3626 if (IS_ERR(trans)) {
3627 btrfs_orphan_del(NULL, inode);
3628 btrfs_free_block_rsv(root, rsv);
3629 goto no_delete;
3657 } 3630 }
3658 3631
3632 trans->block_rsv = rsv;
3633
3659 ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0); 3634 ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0);
3660 if (ret != -EAGAIN) 3635 if (ret != -EAGAIN)
3661 break; 3636 break;
@@ -3664,14 +3639,17 @@ void btrfs_evict_inode(struct inode *inode)
3664 btrfs_end_transaction(trans, root); 3639 btrfs_end_transaction(trans, root);
3665 trans = NULL; 3640 trans = NULL;
3666 btrfs_btree_balance_dirty(root, nr); 3641 btrfs_btree_balance_dirty(root, nr);
3667
3668 } 3642 }
3669 3643
3644 btrfs_free_block_rsv(root, rsv);
3645
3670 if (ret == 0) { 3646 if (ret == 0) {
3647 trans->block_rsv = root->orphan_block_rsv;
3671 ret = btrfs_orphan_del(trans, inode); 3648 ret = btrfs_orphan_del(trans, inode);
3672 BUG_ON(ret); 3649 BUG_ON(ret);
3673 } 3650 }
3674 3651
3652 trans->block_rsv = &root->fs_info->trans_block_rsv;
3675 if (!(root == root->fs_info->tree_root || 3653 if (!(root == root->fs_info->tree_root ||
3676 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)) 3654 root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID))
3677 btrfs_return_ino(root, btrfs_ino(inode)); 3655 btrfs_return_ino(root, btrfs_ino(inode));
@@ -6541,6 +6519,7 @@ static int btrfs_truncate(struct inode *inode)
6541 struct btrfs_trans_handle *trans; 6519 struct btrfs_trans_handle *trans;
6542 unsigned long nr; 6520 unsigned long nr;
6543 u64 mask = root->sectorsize - 1; 6521 u64 mask = root->sectorsize - 1;
6522 u64 min_size = btrfs_calc_trunc_metadata_size(root, 1);
6544 6523
6545 ret = btrfs_truncate_page(inode->i_mapping, inode->i_size); 6524 ret = btrfs_truncate_page(inode->i_mapping, inode->i_size);
6546 if (ret) 6525 if (ret)
@@ -6588,19 +6567,23 @@ static int btrfs_truncate(struct inode *inode)
6588 rsv = btrfs_alloc_block_rsv(root); 6567 rsv = btrfs_alloc_block_rsv(root);
6589 if (!rsv) 6568 if (!rsv)
6590 return -ENOMEM; 6569 return -ENOMEM;
6591 btrfs_add_durable_block_rsv(root->fs_info, rsv); 6570 rsv->size = min_size;
6592 6571
6572 /*
6573 * 1 for the truncate slack space
6574 * 1 for the orphan item we're going to add
6575 * 1 for the orphan item deletion
6576 * 1 for updating the inode.
6577 */
6593 trans = btrfs_start_transaction(root, 4); 6578 trans = btrfs_start_transaction(root, 4);
6594 if (IS_ERR(trans)) { 6579 if (IS_ERR(trans)) {
6595 err = PTR_ERR(trans); 6580 err = PTR_ERR(trans);
6596 goto out; 6581 goto out;
6597 } 6582 }
6598 6583
6599 /* 6584 /* Migrate the slack space for the truncate to our reserve */
6600 * Reserve space for the truncate process. Truncate should be adding 6585 ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, rsv,
6601 * space, but if there are snapshots it may end up using space. 6586 min_size);
6602 */
6603 ret = btrfs_truncate_reserve_metadata(trans, root, rsv);
6604 BUG_ON(ret); 6587 BUG_ON(ret);
6605 6588
6606 ret = btrfs_orphan_add(trans, inode); 6589 ret = btrfs_orphan_add(trans, inode);
@@ -6609,21 +6592,6 @@ static int btrfs_truncate(struct inode *inode)
6609 goto out; 6592 goto out;
6610 } 6593 }
6611 6594
6612 nr = trans->blocks_used;
6613 btrfs_end_transaction(trans, root);
6614 btrfs_btree_balance_dirty(root, nr);
6615
6616 /*
6617 * Ok so we've already migrated our bytes over for the truncate, so here
6618 * just reserve the one slot we need for updating the inode.
6619 */
6620 trans = btrfs_start_transaction(root, 1);
6621 if (IS_ERR(trans)) {
6622 err = PTR_ERR(trans);
6623 goto out;
6624 }
6625 trans->block_rsv = rsv;
6626
6627 /* 6595 /*
6628 * setattr is responsible for setting the ordered_data_close flag, 6596 * setattr is responsible for setting the ordered_data_close flag,
6629 * but that is only tested during the last file release. That 6597 * but that is only tested during the last file release. That
@@ -6645,20 +6613,30 @@ static int btrfs_truncate(struct inode *inode)
6645 btrfs_add_ordered_operation(trans, root, inode); 6613 btrfs_add_ordered_operation(trans, root, inode);
6646 6614
6647 while (1) { 6615 while (1) {
6616 ret = btrfs_block_rsv_refill(root, rsv, min_size);
6617 if (ret) {
6618 /*
6619 * This can only happen with the original transaction we
6620 * started above, every other time we shouldn't have a
6621 * transaction started yet.
6622 */
6623 if (ret == -EAGAIN)
6624 goto end_trans;
6625 err = ret;
6626 break;
6627 }
6628
6648 if (!trans) { 6629 if (!trans) {
6649 trans = btrfs_start_transaction(root, 3); 6630 /* Just need the 1 for updating the inode */
6631 trans = btrfs_start_transaction(root, 1);
6650 if (IS_ERR(trans)) { 6632 if (IS_ERR(trans)) {
6651 err = PTR_ERR(trans); 6633 err = PTR_ERR(trans);
6652 goto out; 6634 goto out;
6653 } 6635 }
6654
6655 ret = btrfs_truncate_reserve_metadata(trans, root,
6656 rsv);
6657 BUG_ON(ret);
6658
6659 trans->block_rsv = rsv;
6660 } 6636 }
6661 6637
6638 trans->block_rsv = rsv;
6639
6662 ret = btrfs_truncate_inode_items(trans, root, inode, 6640 ret = btrfs_truncate_inode_items(trans, root, inode,
6663 inode->i_size, 6641 inode->i_size,
6664 BTRFS_EXTENT_DATA_KEY); 6642 BTRFS_EXTENT_DATA_KEY);
@@ -6673,7 +6651,7 @@ static int btrfs_truncate(struct inode *inode)
6673 err = ret; 6651 err = ret;
6674 break; 6652 break;
6675 } 6653 }
6676 6654end_trans:
6677 nr = trans->blocks_used; 6655 nr = trans->blocks_used;
6678 btrfs_end_transaction(trans, root); 6656 btrfs_end_transaction(trans, root);
6679 trans = NULL; 6657 trans = NULL;
@@ -6755,9 +6733,9 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
6755 ei->last_sub_trans = 0; 6733 ei->last_sub_trans = 0;
6756 ei->logged_trans = 0; 6734 ei->logged_trans = 0;
6757 ei->delalloc_bytes = 0; 6735 ei->delalloc_bytes = 0;
6758 ei->reserved_bytes = 0;
6759 ei->disk_i_size = 0; 6736 ei->disk_i_size = 0;
6760 ei->flags = 0; 6737 ei->flags = 0;
6738 ei->csum_bytes = 0;
6761 ei->index_cnt = (u64)-1; 6739 ei->index_cnt = (u64)-1;
6762 ei->last_unlink_trans = 0; 6740 ei->last_unlink_trans = 0;
6763 6741
@@ -6803,6 +6781,8 @@ void btrfs_destroy_inode(struct inode *inode)
6803 WARN_ON(inode->i_data.nrpages); 6781 WARN_ON(inode->i_data.nrpages);
6804 WARN_ON(BTRFS_I(inode)->outstanding_extents); 6782 WARN_ON(BTRFS_I(inode)->outstanding_extents);
6805 WARN_ON(BTRFS_I(inode)->reserved_extents); 6783 WARN_ON(BTRFS_I(inode)->reserved_extents);
6784 WARN_ON(BTRFS_I(inode)->delalloc_bytes);
6785 WARN_ON(BTRFS_I(inode)->csum_bytes);
6806 6786
6807 /* 6787 /*
6808 * This can happen where we create an inode, but somebody else also 6788 * This can happen where we create an inode, but somebody else also