GNU Linux-libre 4.14.332-gnu1
[releases.git] / fs / btrfs / delayed-inode.c
1 /*
2  * Copyright (C) 2011 Fujitsu.  All rights reserved.
3  * Written by Miao Xie <miaox@cn.fujitsu.com>
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public
7  * License v2 as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public
15  * License along with this program; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 021110-1307, USA.
18  */
19
20 #include <linux/slab.h>
21 #include <linux/sched/mm.h>
22 #include "delayed-inode.h"
23 #include "disk-io.h"
24 #include "transaction.h"
25 #include "ctree.h"
26
27 #define BTRFS_DELAYED_WRITEBACK         512
28 #define BTRFS_DELAYED_BACKGROUND        128
29 #define BTRFS_DELAYED_BATCH             16
30
31 static struct kmem_cache *delayed_node_cache;
32
33 int __init btrfs_delayed_inode_init(void)
34 {
35         delayed_node_cache = kmem_cache_create("btrfs_delayed_node",
36                                         sizeof(struct btrfs_delayed_node),
37                                         0,
38                                         SLAB_MEM_SPREAD,
39                                         NULL);
40         if (!delayed_node_cache)
41                 return -ENOMEM;
42         return 0;
43 }
44
45 void btrfs_delayed_inode_exit(void)
46 {
47         kmem_cache_destroy(delayed_node_cache);
48 }
49
50 static inline void btrfs_init_delayed_node(
51                                 struct btrfs_delayed_node *delayed_node,
52                                 struct btrfs_root *root, u64 inode_id)
53 {
54         delayed_node->root = root;
55         delayed_node->inode_id = inode_id;
56         refcount_set(&delayed_node->refs, 0);
57         delayed_node->ins_root = RB_ROOT;
58         delayed_node->del_root = RB_ROOT;
59         mutex_init(&delayed_node->mutex);
60         INIT_LIST_HEAD(&delayed_node->n_list);
61         INIT_LIST_HEAD(&delayed_node->p_list);
62 }
63
64 static inline int btrfs_is_continuous_delayed_item(
65                                         struct btrfs_delayed_item *item1,
66                                         struct btrfs_delayed_item *item2)
67 {
68         if (item1->key.type == BTRFS_DIR_INDEX_KEY &&
69             item1->key.objectid == item2->key.objectid &&
70             item1->key.type == item2->key.type &&
71             item1->key.offset + 1 == item2->key.offset)
72                 return 1;
73         return 0;
74 }
75
76 static struct btrfs_delayed_node *btrfs_get_delayed_node(
77                 struct btrfs_inode *btrfs_inode)
78 {
79         struct btrfs_root *root = btrfs_inode->root;
80         u64 ino = btrfs_ino(btrfs_inode);
81         struct btrfs_delayed_node *node;
82
83         node = READ_ONCE(btrfs_inode->delayed_node);
84         if (node) {
85                 refcount_inc(&node->refs);
86                 return node;
87         }
88
89         spin_lock(&root->inode_lock);
90         node = radix_tree_lookup(&root->delayed_nodes_tree, ino);
91
92         if (node) {
93                 if (btrfs_inode->delayed_node) {
94                         refcount_inc(&node->refs);      /* can be accessed */
95                         BUG_ON(btrfs_inode->delayed_node != node);
96                         spin_unlock(&root->inode_lock);
97                         return node;
98                 }
99
100                 /*
101                  * It's possible that we're racing into the middle of removing
102                  * this node from the radix tree.  In this case, the refcount
103                  * was zero and it should never go back to one.  Just return
104                  * NULL like it was never in the radix at all; our release
105                  * function is in the process of removing it.
106                  *
107                  * Some implementations of refcount_inc refuse to bump the
108                  * refcount once it has hit zero.  If we don't do this dance
109                  * here, refcount_inc() may decide to just WARN_ONCE() instead
110                  * of actually bumping the refcount.
111                  *
112                  * If this node is properly in the radix, we want to bump the
113                  * refcount twice, once for the inode and once for this get
114                  * operation.
115                  */
116                 if (refcount_inc_not_zero(&node->refs)) {
117                         refcount_inc(&node->refs);
118                         btrfs_inode->delayed_node = node;
119                 } else {
120                         node = NULL;
121                 }
122
123                 spin_unlock(&root->inode_lock);
124                 return node;
125         }
126         spin_unlock(&root->inode_lock);
127
128         return NULL;
129 }
130
131 /* Will return either the node or PTR_ERR(-ENOMEM) */
132 static struct btrfs_delayed_node *btrfs_get_or_create_delayed_node(
133                 struct btrfs_inode *btrfs_inode)
134 {
135         struct btrfs_delayed_node *node;
136         struct btrfs_root *root = btrfs_inode->root;
137         u64 ino = btrfs_ino(btrfs_inode);
138         int ret;
139
140 again:
141         node = btrfs_get_delayed_node(btrfs_inode);
142         if (node)
143                 return node;
144
145         node = kmem_cache_zalloc(delayed_node_cache, GFP_NOFS);
146         if (!node)
147                 return ERR_PTR(-ENOMEM);
148         btrfs_init_delayed_node(node, root, ino);
149
150         /* cached in the btrfs inode and can be accessed */
151         refcount_set(&node->refs, 2);
152
153         ret = radix_tree_preload(GFP_NOFS);
154         if (ret) {
155                 kmem_cache_free(delayed_node_cache, node);
156                 return ERR_PTR(ret);
157         }
158
159         spin_lock(&root->inode_lock);
160         ret = radix_tree_insert(&root->delayed_nodes_tree, ino, node);
161         if (ret == -EEXIST) {
162                 spin_unlock(&root->inode_lock);
163                 kmem_cache_free(delayed_node_cache, node);
164                 radix_tree_preload_end();
165                 goto again;
166         }
167         btrfs_inode->delayed_node = node;
168         spin_unlock(&root->inode_lock);
169         radix_tree_preload_end();
170
171         return node;
172 }
173
174 /*
175  * Call it when holding delayed_node->mutex
176  *
177  * If mod = 1, add this node into the prepared list.
178  */
179 static void btrfs_queue_delayed_node(struct btrfs_delayed_root *root,
180                                      struct btrfs_delayed_node *node,
181                                      int mod)
182 {
183         spin_lock(&root->lock);
184         if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
185                 if (!list_empty(&node->p_list))
186                         list_move_tail(&node->p_list, &root->prepare_list);
187                 else if (mod)
188                         list_add_tail(&node->p_list, &root->prepare_list);
189         } else {
190                 list_add_tail(&node->n_list, &root->node_list);
191                 list_add_tail(&node->p_list, &root->prepare_list);
192                 refcount_inc(&node->refs);      /* inserted into list */
193                 root->nodes++;
194                 set_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
195         }
196         spin_unlock(&root->lock);
197 }
198
199 /* Call it when holding delayed_node->mutex */
200 static void btrfs_dequeue_delayed_node(struct btrfs_delayed_root *root,
201                                        struct btrfs_delayed_node *node)
202 {
203         spin_lock(&root->lock);
204         if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
205                 root->nodes--;
206                 refcount_dec(&node->refs);      /* not in the list */
207                 list_del_init(&node->n_list);
208                 if (!list_empty(&node->p_list))
209                         list_del_init(&node->p_list);
210                 clear_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
211         }
212         spin_unlock(&root->lock);
213 }
214
215 static struct btrfs_delayed_node *btrfs_first_delayed_node(
216                         struct btrfs_delayed_root *delayed_root)
217 {
218         struct list_head *p;
219         struct btrfs_delayed_node *node = NULL;
220
221         spin_lock(&delayed_root->lock);
222         if (list_empty(&delayed_root->node_list))
223                 goto out;
224
225         p = delayed_root->node_list.next;
226         node = list_entry(p, struct btrfs_delayed_node, n_list);
227         refcount_inc(&node->refs);
228 out:
229         spin_unlock(&delayed_root->lock);
230
231         return node;
232 }
233
234 static struct btrfs_delayed_node *btrfs_next_delayed_node(
235                                                 struct btrfs_delayed_node *node)
236 {
237         struct btrfs_delayed_root *delayed_root;
238         struct list_head *p;
239         struct btrfs_delayed_node *next = NULL;
240
241         delayed_root = node->root->fs_info->delayed_root;
242         spin_lock(&delayed_root->lock);
243         if (!test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
244                 /* not in the list */
245                 if (list_empty(&delayed_root->node_list))
246                         goto out;
247                 p = delayed_root->node_list.next;
248         } else if (list_is_last(&node->n_list, &delayed_root->node_list))
249                 goto out;
250         else
251                 p = node->n_list.next;
252
253         next = list_entry(p, struct btrfs_delayed_node, n_list);
254         refcount_inc(&next->refs);
255 out:
256         spin_unlock(&delayed_root->lock);
257
258         return next;
259 }
260
261 static void __btrfs_release_delayed_node(
262                                 struct btrfs_delayed_node *delayed_node,
263                                 int mod)
264 {
265         struct btrfs_delayed_root *delayed_root;
266
267         if (!delayed_node)
268                 return;
269
270         delayed_root = delayed_node->root->fs_info->delayed_root;
271
272         mutex_lock(&delayed_node->mutex);
273         if (delayed_node->count)
274                 btrfs_queue_delayed_node(delayed_root, delayed_node, mod);
275         else
276                 btrfs_dequeue_delayed_node(delayed_root, delayed_node);
277         mutex_unlock(&delayed_node->mutex);
278
279         if (refcount_dec_and_test(&delayed_node->refs)) {
280                 struct btrfs_root *root = delayed_node->root;
281
282                 spin_lock(&root->inode_lock);
283                 /*
284                  * Once our refcount goes to zero, nobody is allowed to bump it
285                  * back up.  We can delete it now.
286                  */
287                 ASSERT(refcount_read(&delayed_node->refs) == 0);
288                 radix_tree_delete(&root->delayed_nodes_tree,
289                                   delayed_node->inode_id);
290                 spin_unlock(&root->inode_lock);
291                 kmem_cache_free(delayed_node_cache, delayed_node);
292         }
293 }
294
295 static inline void btrfs_release_delayed_node(struct btrfs_delayed_node *node)
296 {
297         __btrfs_release_delayed_node(node, 0);
298 }
299
300 static struct btrfs_delayed_node *btrfs_first_prepared_delayed_node(
301                                         struct btrfs_delayed_root *delayed_root)
302 {
303         struct list_head *p;
304         struct btrfs_delayed_node *node = NULL;
305
306         spin_lock(&delayed_root->lock);
307         if (list_empty(&delayed_root->prepare_list))
308                 goto out;
309
310         p = delayed_root->prepare_list.next;
311         list_del_init(p);
312         node = list_entry(p, struct btrfs_delayed_node, p_list);
313         refcount_inc(&node->refs);
314 out:
315         spin_unlock(&delayed_root->lock);
316
317         return node;
318 }
319
320 static inline void btrfs_release_prepared_delayed_node(
321                                         struct btrfs_delayed_node *node)
322 {
323         __btrfs_release_delayed_node(node, 1);
324 }
325
326 static struct btrfs_delayed_item *btrfs_alloc_delayed_item(u32 data_len)
327 {
328         struct btrfs_delayed_item *item;
329         item = kmalloc(sizeof(*item) + data_len, GFP_NOFS);
330         if (item) {
331                 item->data_len = data_len;
332                 item->ins_or_del = 0;
333                 item->bytes_reserved = 0;
334                 item->delayed_node = NULL;
335                 refcount_set(&item->refs, 1);
336         }
337         return item;
338 }
339
340 /*
341  * __btrfs_lookup_delayed_item - look up the delayed item by key
342  * @delayed_node: pointer to the delayed node
343  * @key:          the key to look up
344  * @prev:         used to store the prev item if the right item isn't found
345  * @next:         used to store the next item if the right item isn't found
346  *
347  * Note: if we don't find the right item, we will return the prev item and
348  * the next item.
349  */
350 static struct btrfs_delayed_item *__btrfs_lookup_delayed_item(
351                                 struct rb_root *root,
352                                 struct btrfs_key *key,
353                                 struct btrfs_delayed_item **prev,
354                                 struct btrfs_delayed_item **next)
355 {
356         struct rb_node *node, *prev_node = NULL;
357         struct btrfs_delayed_item *delayed_item = NULL;
358         int ret = 0;
359
360         node = root->rb_node;
361
362         while (node) {
363                 delayed_item = rb_entry(node, struct btrfs_delayed_item,
364                                         rb_node);
365                 prev_node = node;
366                 ret = btrfs_comp_cpu_keys(&delayed_item->key, key);
367                 if (ret < 0)
368                         node = node->rb_right;
369                 else if (ret > 0)
370                         node = node->rb_left;
371                 else
372                         return delayed_item;
373         }
374
375         if (prev) {
376                 if (!prev_node)
377                         *prev = NULL;
378                 else if (ret < 0)
379                         *prev = delayed_item;
380                 else if ((node = rb_prev(prev_node)) != NULL) {
381                         *prev = rb_entry(node, struct btrfs_delayed_item,
382                                          rb_node);
383                 } else
384                         *prev = NULL;
385         }
386
387         if (next) {
388                 if (!prev_node)
389                         *next = NULL;
390                 else if (ret > 0)
391                         *next = delayed_item;
392                 else if ((node = rb_next(prev_node)) != NULL) {
393                         *next = rb_entry(node, struct btrfs_delayed_item,
394                                          rb_node);
395                 } else
396                         *next = NULL;
397         }
398         return NULL;
399 }
400
401 static struct btrfs_delayed_item *__btrfs_lookup_delayed_insertion_item(
402                                         struct btrfs_delayed_node *delayed_node,
403                                         struct btrfs_key *key)
404 {
405         return __btrfs_lookup_delayed_item(&delayed_node->ins_root, key,
406                                            NULL, NULL);
407 }
408
409 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node,
410                                     struct btrfs_delayed_item *ins,
411                                     int action)
412 {
413         struct rb_node **p, *node;
414         struct rb_node *parent_node = NULL;
415         struct rb_root *root;
416         struct btrfs_delayed_item *item;
417         int cmp;
418
419         if (action == BTRFS_DELAYED_INSERTION_ITEM)
420                 root = &delayed_node->ins_root;
421         else if (action == BTRFS_DELAYED_DELETION_ITEM)
422                 root = &delayed_node->del_root;
423         else
424                 BUG();
425         p = &root->rb_node;
426         node = &ins->rb_node;
427
428         while (*p) {
429                 parent_node = *p;
430                 item = rb_entry(parent_node, struct btrfs_delayed_item,
431                                  rb_node);
432
433                 cmp = btrfs_comp_cpu_keys(&item->key, &ins->key);
434                 if (cmp < 0)
435                         p = &(*p)->rb_right;
436                 else if (cmp > 0)
437                         p = &(*p)->rb_left;
438                 else
439                         return -EEXIST;
440         }
441
442         rb_link_node(node, parent_node, p);
443         rb_insert_color(node, root);
444         ins->delayed_node = delayed_node;
445         ins->ins_or_del = action;
446
447         if (ins->key.type == BTRFS_DIR_INDEX_KEY &&
448             action == BTRFS_DELAYED_INSERTION_ITEM &&
449             ins->key.offset >= delayed_node->index_cnt)
450                         delayed_node->index_cnt = ins->key.offset + 1;
451
452         delayed_node->count++;
453         atomic_inc(&delayed_node->root->fs_info->delayed_root->items);
454         return 0;
455 }
456
457 static int __btrfs_add_delayed_insertion_item(struct btrfs_delayed_node *node,
458                                               struct btrfs_delayed_item *item)
459 {
460         return __btrfs_add_delayed_item(node, item,
461                                         BTRFS_DELAYED_INSERTION_ITEM);
462 }
463
464 static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
465                                              struct btrfs_delayed_item *item)
466 {
467         return __btrfs_add_delayed_item(node, item,
468                                         BTRFS_DELAYED_DELETION_ITEM);
469 }
470
471 static void finish_one_item(struct btrfs_delayed_root *delayed_root)
472 {
473         int seq = atomic_inc_return(&delayed_root->items_seq);
474
475         /*
476          * atomic_dec_return implies a barrier for waitqueue_active
477          */
478         if ((atomic_dec_return(&delayed_root->items) <
479             BTRFS_DELAYED_BACKGROUND || seq % BTRFS_DELAYED_BATCH == 0) &&
480             waitqueue_active(&delayed_root->wait))
481                 wake_up(&delayed_root->wait);
482 }
483
484 static void __btrfs_remove_delayed_item(struct btrfs_delayed_item *delayed_item)
485 {
486         struct rb_root *root;
487         struct btrfs_delayed_root *delayed_root;
488
489         delayed_root = delayed_item->delayed_node->root->fs_info->delayed_root;
490
491         BUG_ON(!delayed_root);
492         BUG_ON(delayed_item->ins_or_del != BTRFS_DELAYED_DELETION_ITEM &&
493                delayed_item->ins_or_del != BTRFS_DELAYED_INSERTION_ITEM);
494
495         if (delayed_item->ins_or_del == BTRFS_DELAYED_INSERTION_ITEM)
496                 root = &delayed_item->delayed_node->ins_root;
497         else
498                 root = &delayed_item->delayed_node->del_root;
499
500         rb_erase(&delayed_item->rb_node, root);
501         delayed_item->delayed_node->count--;
502
503         finish_one_item(delayed_root);
504 }
505
506 static void btrfs_release_delayed_item(struct btrfs_delayed_item *item)
507 {
508         if (item) {
509                 __btrfs_remove_delayed_item(item);
510                 if (refcount_dec_and_test(&item->refs))
511                         kfree(item);
512         }
513 }
514
515 static struct btrfs_delayed_item *__btrfs_first_delayed_insertion_item(
516                                         struct btrfs_delayed_node *delayed_node)
517 {
518         struct rb_node *p;
519         struct btrfs_delayed_item *item = NULL;
520
521         p = rb_first(&delayed_node->ins_root);
522         if (p)
523                 item = rb_entry(p, struct btrfs_delayed_item, rb_node);
524
525         return item;
526 }
527
528 static struct btrfs_delayed_item *__btrfs_first_delayed_deletion_item(
529                                         struct btrfs_delayed_node *delayed_node)
530 {
531         struct rb_node *p;
532         struct btrfs_delayed_item *item = NULL;
533
534         p = rb_first(&delayed_node->del_root);
535         if (p)
536                 item = rb_entry(p, struct btrfs_delayed_item, rb_node);
537
538         return item;
539 }
540
541 static struct btrfs_delayed_item *__btrfs_next_delayed_item(
542                                                 struct btrfs_delayed_item *item)
543 {
544         struct rb_node *p;
545         struct btrfs_delayed_item *next = NULL;
546
547         p = rb_next(&item->rb_node);
548         if (p)
549                 next = rb_entry(p, struct btrfs_delayed_item, rb_node);
550
551         return next;
552 }
553
554 static int btrfs_delayed_item_reserve_metadata(struct btrfs_trans_handle *trans,
555                                                struct btrfs_fs_info *fs_info,
556                                                struct btrfs_delayed_item *item)
557 {
558         struct btrfs_block_rsv *src_rsv;
559         struct btrfs_block_rsv *dst_rsv;
560         u64 num_bytes;
561         int ret;
562
563         if (!trans->bytes_reserved)
564                 return 0;
565
566         src_rsv = trans->block_rsv;
567         dst_rsv = &fs_info->delayed_block_rsv;
568
569         num_bytes = btrfs_calc_trans_metadata_size(fs_info, 1);
570         ret = btrfs_block_rsv_migrate(src_rsv, dst_rsv, num_bytes, 1);
571         if (!ret) {
572                 trace_btrfs_space_reservation(fs_info, "delayed_item",
573                                               item->key.objectid,
574                                               num_bytes, 1);
575                 item->bytes_reserved = num_bytes;
576         }
577
578         return ret;
579 }
580
581 static void btrfs_delayed_item_release_metadata(struct btrfs_fs_info *fs_info,
582                                                 struct btrfs_delayed_item *item)
583 {
584         struct btrfs_block_rsv *rsv;
585
586         if (!item->bytes_reserved)
587                 return;
588
589         rsv = &fs_info->delayed_block_rsv;
590         trace_btrfs_space_reservation(fs_info, "delayed_item",
591                                       item->key.objectid, item->bytes_reserved,
592                                       0);
593         btrfs_block_rsv_release(fs_info, rsv,
594                                 item->bytes_reserved);
595 }
596
597 static int btrfs_delayed_inode_reserve_metadata(
598                                         struct btrfs_trans_handle *trans,
599                                         struct btrfs_root *root,
600                                         struct btrfs_inode *inode,
601                                         struct btrfs_delayed_node *node)
602 {
603         struct btrfs_fs_info *fs_info = root->fs_info;
604         struct btrfs_block_rsv *src_rsv;
605         struct btrfs_block_rsv *dst_rsv;
606         u64 num_bytes;
607         int ret;
608         bool release = false;
609
610         src_rsv = trans->block_rsv;
611         dst_rsv = &fs_info->delayed_block_rsv;
612
613         num_bytes = btrfs_calc_trans_metadata_size(fs_info, 1);
614
615         /*
616          * If our block_rsv is the delalloc block reserve then check and see if
617          * we have our extra reservation for updating the inode.  If not fall
618          * through and try to reserve space quickly.
619          *
620          * We used to try and steal from the delalloc block rsv or the global
621          * reserve, but we'd steal a full reservation, which isn't kind.  We are
622          * here through delalloc which means we've likely just cowed down close
623          * to the leaf that contains the inode, so we would steal less just
624          * doing the fallback inode update, so if we do end up having to steal
625          * from the global block rsv we hopefully only steal one or two blocks
626          * worth which is less likely to hurt us.
627          */
628         if (src_rsv && src_rsv->type == BTRFS_BLOCK_RSV_DELALLOC) {
629                 spin_lock(&inode->lock);
630                 if (test_and_clear_bit(BTRFS_INODE_DELALLOC_META_RESERVED,
631                                        &inode->runtime_flags))
632                         release = true;
633                 else
634                         src_rsv = NULL;
635                 spin_unlock(&inode->lock);
636         }
637
638         /*
639          * btrfs_dirty_inode will update the inode under btrfs_join_transaction
640          * which doesn't reserve space for speed.  This is a problem since we
641          * still need to reserve space for this update, so try to reserve the
642          * space.
643          *
644          * Now if src_rsv == delalloc_block_rsv we'll let it just steal since
645          * we're accounted for.
646          */
647         if (!src_rsv || (!trans->bytes_reserved &&
648                          src_rsv->type != BTRFS_BLOCK_RSV_DELALLOC)) {
649                 ret = btrfs_block_rsv_add(root, dst_rsv, num_bytes,
650                                           BTRFS_RESERVE_NO_FLUSH);
651                 /*
652                  * Since we're under a transaction reserve_metadata_bytes could
653                  * try to commit the transaction which will make it return
654                  * EAGAIN to make us stop the transaction we have, so return
655                  * ENOSPC instead so that btrfs_dirty_inode knows what to do.
656                  */
657                 if (ret == -EAGAIN)
658                         ret = -ENOSPC;
659                 if (!ret) {
660                         node->bytes_reserved = num_bytes;
661                         trace_btrfs_space_reservation(fs_info,
662                                                       "delayed_inode",
663                                                       btrfs_ino(inode),
664                                                       num_bytes, 1);
665                 }
666                 return ret;
667         }
668
669         ret = btrfs_block_rsv_migrate(src_rsv, dst_rsv, num_bytes, 1);
670
671         /*
672          * Migrate only takes a reservation, it doesn't touch the size of the
673          * block_rsv.  This is to simplify people who don't normally have things
674          * migrated from their block rsv.  If they go to release their
675          * reservation, that will decrease the size as well, so if migrate
676          * reduced size we'd end up with a negative size.  But for the
677          * delalloc_meta_reserved stuff we will only know to drop 1 reservation,
678          * but we could in fact do this reserve/migrate dance several times
679          * between the time we did the original reservation and we'd clean it
680          * up.  So to take care of this, release the space for the meta
681          * reservation here.  I think it may be time for a documentation page on
682          * how block rsvs. work.
683          */
684         if (!ret) {
685                 trace_btrfs_space_reservation(fs_info, "delayed_inode",
686                                               btrfs_ino(inode), num_bytes, 1);
687                 node->bytes_reserved = num_bytes;
688         }
689
690         if (release) {
691                 trace_btrfs_space_reservation(fs_info, "delalloc",
692                                               btrfs_ino(inode), num_bytes, 0);
693                 btrfs_block_rsv_release(fs_info, src_rsv, num_bytes);
694         }
695
696         return ret;
697 }
698
699 static void btrfs_delayed_inode_release_metadata(struct btrfs_fs_info *fs_info,
700                                                 struct btrfs_delayed_node *node)
701 {
702         struct btrfs_block_rsv *rsv;
703
704         if (!node->bytes_reserved)
705                 return;
706
707         rsv = &fs_info->delayed_block_rsv;
708         trace_btrfs_space_reservation(fs_info, "delayed_inode",
709                                       node->inode_id, node->bytes_reserved, 0);
710         btrfs_block_rsv_release(fs_info, rsv,
711                                 node->bytes_reserved);
712         node->bytes_reserved = 0;
713 }
714
715 /*
716  * This helper will insert some continuous items into the same leaf according
717  * to the free space of the leaf.
718  */
719 static int btrfs_batch_insert_items(struct btrfs_root *root,
720                                     struct btrfs_path *path,
721                                     struct btrfs_delayed_item *item)
722 {
723         struct btrfs_fs_info *fs_info = root->fs_info;
724         struct btrfs_delayed_item *curr, *next;
725         int free_space;
726         int total_data_size = 0, total_size = 0;
727         struct extent_buffer *leaf;
728         char *data_ptr;
729         struct btrfs_key *keys;
730         u32 *data_size;
731         struct list_head head;
732         int slot;
733         int nitems;
734         int i;
735         int ret = 0;
736
737         BUG_ON(!path->nodes[0]);
738
739         leaf = path->nodes[0];
740         free_space = btrfs_leaf_free_space(fs_info, leaf);
741         INIT_LIST_HEAD(&head);
742
743         next = item;
744         nitems = 0;
745
746         /*
747          * count the number of the continuous items that we can insert in batch
748          */
749         while (total_size + next->data_len + sizeof(struct btrfs_item) <=
750                free_space) {
751                 total_data_size += next->data_len;
752                 total_size += next->data_len + sizeof(struct btrfs_item);
753                 list_add_tail(&next->tree_list, &head);
754                 nitems++;
755
756                 curr = next;
757                 next = __btrfs_next_delayed_item(curr);
758                 if (!next)
759                         break;
760
761                 if (!btrfs_is_continuous_delayed_item(curr, next))
762                         break;
763         }
764
765         if (!nitems) {
766                 ret = 0;
767                 goto out;
768         }
769
770         /*
771          * we need allocate some memory space, but it might cause the task
772          * to sleep, so we set all locked nodes in the path to blocking locks
773          * first.
774          */
775         btrfs_set_path_blocking(path);
776
777         keys = kmalloc_array(nitems, sizeof(struct btrfs_key), GFP_NOFS);
778         if (!keys) {
779                 ret = -ENOMEM;
780                 goto out;
781         }
782
783         data_size = kmalloc_array(nitems, sizeof(u32), GFP_NOFS);
784         if (!data_size) {
785                 ret = -ENOMEM;
786                 goto error;
787         }
788
789         /* get keys of all the delayed items */
790         i = 0;
791         list_for_each_entry(next, &head, tree_list) {
792                 keys[i] = next->key;
793                 data_size[i] = next->data_len;
794                 i++;
795         }
796
797         /* reset all the locked nodes in the patch to spinning locks. */
798         btrfs_clear_path_blocking(path, NULL, 0);
799
800         /* insert the keys of the items */
801         setup_items_for_insert(root, path, keys, data_size,
802                                total_data_size, total_size, nitems);
803
804         /* insert the dir index items */
805         slot = path->slots[0];
806         list_for_each_entry_safe(curr, next, &head, tree_list) {
807                 data_ptr = btrfs_item_ptr(leaf, slot, char);
808                 write_extent_buffer(leaf, &curr->data,
809                                     (unsigned long)data_ptr,
810                                     curr->data_len);
811                 slot++;
812
813                 btrfs_delayed_item_release_metadata(fs_info, curr);
814
815                 list_del(&curr->tree_list);
816                 btrfs_release_delayed_item(curr);
817         }
818
819 error:
820         kfree(data_size);
821         kfree(keys);
822 out:
823         return ret;
824 }
825
826 /*
827  * This helper can just do simple insertion that needn't extend item for new
828  * data, such as directory name index insertion, inode insertion.
829  */
830 static int btrfs_insert_delayed_item(struct btrfs_trans_handle *trans,
831                                      struct btrfs_root *root,
832                                      struct btrfs_path *path,
833                                      struct btrfs_delayed_item *delayed_item)
834 {
835         struct btrfs_fs_info *fs_info = root->fs_info;
836         struct extent_buffer *leaf;
837         unsigned int nofs_flag;
838         char *ptr;
839         int ret;
840
841         nofs_flag = memalloc_nofs_save();
842         ret = btrfs_insert_empty_item(trans, root, path, &delayed_item->key,
843                                       delayed_item->data_len);
844         memalloc_nofs_restore(nofs_flag);
845         if (ret < 0 && ret != -EEXIST)
846                 return ret;
847
848         leaf = path->nodes[0];
849
850         ptr = btrfs_item_ptr(leaf, path->slots[0], char);
851
852         write_extent_buffer(leaf, delayed_item->data, (unsigned long)ptr,
853                             delayed_item->data_len);
854         btrfs_mark_buffer_dirty(leaf);
855
856         btrfs_delayed_item_release_metadata(fs_info, delayed_item);
857         return 0;
858 }
859
860 /*
861  * we insert an item first, then if there are some continuous items, we try
862  * to insert those items into the same leaf.
863  */
864 static int btrfs_insert_delayed_items(struct btrfs_trans_handle *trans,
865                                       struct btrfs_path *path,
866                                       struct btrfs_root *root,
867                                       struct btrfs_delayed_node *node)
868 {
869         struct btrfs_delayed_item *curr, *prev;
870         int ret = 0;
871
872 do_again:
873         mutex_lock(&node->mutex);
874         curr = __btrfs_first_delayed_insertion_item(node);
875         if (!curr)
876                 goto insert_end;
877
878         ret = btrfs_insert_delayed_item(trans, root, path, curr);
879         if (ret < 0) {
880                 btrfs_release_path(path);
881                 goto insert_end;
882         }
883
884         prev = curr;
885         curr = __btrfs_next_delayed_item(prev);
886         if (curr && btrfs_is_continuous_delayed_item(prev, curr)) {
887                 /* insert the continuous items into the same leaf */
888                 path->slots[0]++;
889                 btrfs_batch_insert_items(root, path, curr);
890         }
891         btrfs_release_delayed_item(prev);
892         btrfs_mark_buffer_dirty(path->nodes[0]);
893
894         btrfs_release_path(path);
895         mutex_unlock(&node->mutex);
896         goto do_again;
897
898 insert_end:
899         mutex_unlock(&node->mutex);
900         return ret;
901 }
902
903 static int btrfs_batch_delete_items(struct btrfs_trans_handle *trans,
904                                     struct btrfs_root *root,
905                                     struct btrfs_path *path,
906                                     struct btrfs_delayed_item *item)
907 {
908         struct btrfs_fs_info *fs_info = root->fs_info;
909         struct btrfs_delayed_item *curr, *next;
910         struct extent_buffer *leaf;
911         struct btrfs_key key;
912         struct list_head head;
913         int nitems, i, last_item;
914         int ret = 0;
915
916         BUG_ON(!path->nodes[0]);
917
918         leaf = path->nodes[0];
919
920         i = path->slots[0];
921         last_item = btrfs_header_nritems(leaf) - 1;
922         if (i > last_item)
923                 return -ENOENT; /* FIXME: Is errno suitable? */
924
925         next = item;
926         INIT_LIST_HEAD(&head);
927         btrfs_item_key_to_cpu(leaf, &key, i);
928         nitems = 0;
929         /*
930          * count the number of the dir index items that we can delete in batch
931          */
932         while (btrfs_comp_cpu_keys(&next->key, &key) == 0) {
933                 list_add_tail(&next->tree_list, &head);
934                 nitems++;
935
936                 curr = next;
937                 next = __btrfs_next_delayed_item(curr);
938                 if (!next)
939                         break;
940
941                 if (!btrfs_is_continuous_delayed_item(curr, next))
942                         break;
943
944                 i++;
945                 if (i > last_item)
946                         break;
947                 btrfs_item_key_to_cpu(leaf, &key, i);
948         }
949
950         if (!nitems)
951                 return 0;
952
953         ret = btrfs_del_items(trans, root, path, path->slots[0], nitems);
954         if (ret)
955                 goto out;
956
957         list_for_each_entry_safe(curr, next, &head, tree_list) {
958                 btrfs_delayed_item_release_metadata(fs_info, curr);
959                 list_del(&curr->tree_list);
960                 btrfs_release_delayed_item(curr);
961         }
962
963 out:
964         return ret;
965 }
966
967 static int btrfs_delete_delayed_items(struct btrfs_trans_handle *trans,
968                                       struct btrfs_path *path,
969                                       struct btrfs_root *root,
970                                       struct btrfs_delayed_node *node)
971 {
972         struct btrfs_delayed_item *curr, *prev;
973         unsigned int nofs_flag;
974         int ret = 0;
975
976 do_again:
977         mutex_lock(&node->mutex);
978         curr = __btrfs_first_delayed_deletion_item(node);
979         if (!curr)
980                 goto delete_fail;
981
982         nofs_flag = memalloc_nofs_save();
983         ret = btrfs_search_slot(trans, root, &curr->key, path, -1, 1);
984         memalloc_nofs_restore(nofs_flag);
985         if (ret < 0)
986                 goto delete_fail;
987         else if (ret > 0) {
988                 /*
989                  * can't find the item which the node points to, so this node
990                  * is invalid, just drop it.
991                  */
992                 prev = curr;
993                 curr = __btrfs_next_delayed_item(prev);
994                 btrfs_release_delayed_item(prev);
995                 ret = 0;
996                 btrfs_release_path(path);
997                 if (curr) {
998                         mutex_unlock(&node->mutex);
999                         goto do_again;
1000                 } else
1001                         goto delete_fail;
1002         }
1003
1004         btrfs_batch_delete_items(trans, root, path, curr);
1005         btrfs_release_path(path);
1006         mutex_unlock(&node->mutex);
1007         goto do_again;
1008
1009 delete_fail:
1010         btrfs_release_path(path);
1011         mutex_unlock(&node->mutex);
1012         return ret;
1013 }
1014
1015 static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node)
1016 {
1017         struct btrfs_delayed_root *delayed_root;
1018
1019         if (delayed_node &&
1020             test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1021                 BUG_ON(!delayed_node->root);
1022                 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
1023                 delayed_node->count--;
1024
1025                 delayed_root = delayed_node->root->fs_info->delayed_root;
1026                 finish_one_item(delayed_root);
1027         }
1028 }
1029
1030 static void btrfs_release_delayed_iref(struct btrfs_delayed_node *delayed_node)
1031 {
1032         struct btrfs_delayed_root *delayed_root;
1033
1034         ASSERT(delayed_node->root);
1035         clear_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags);
1036         delayed_node->count--;
1037
1038         delayed_root = delayed_node->root->fs_info->delayed_root;
1039         finish_one_item(delayed_root);
1040 }
1041
1042 static int __btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
1043                                         struct btrfs_root *root,
1044                                         struct btrfs_path *path,
1045                                         struct btrfs_delayed_node *node)
1046 {
1047         struct btrfs_fs_info *fs_info = root->fs_info;
1048         struct btrfs_key key;
1049         struct btrfs_inode_item *inode_item;
1050         struct extent_buffer *leaf;
1051         unsigned int nofs_flag;
1052         int mod;
1053         int ret;
1054
1055         key.objectid = node->inode_id;
1056         key.type = BTRFS_INODE_ITEM_KEY;
1057         key.offset = 0;
1058
1059         if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags))
1060                 mod = -1;
1061         else
1062                 mod = 1;
1063
1064         nofs_flag = memalloc_nofs_save();
1065         ret = btrfs_lookup_inode(trans, root, path, &key, mod);
1066         memalloc_nofs_restore(nofs_flag);
1067         if (ret > 0)
1068                 ret = -ENOENT;
1069         if (ret < 0)
1070                 goto out;
1071
1072         leaf = path->nodes[0];
1073         inode_item = btrfs_item_ptr(leaf, path->slots[0],
1074                                     struct btrfs_inode_item);
1075         write_extent_buffer(leaf, &node->inode_item, (unsigned long)inode_item,
1076                             sizeof(struct btrfs_inode_item));
1077         btrfs_mark_buffer_dirty(leaf);
1078
1079         if (!test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags))
1080                 goto no_iref;
1081
1082         path->slots[0]++;
1083         if (path->slots[0] >= btrfs_header_nritems(leaf))
1084                 goto search;
1085 again:
1086         btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
1087         if (key.objectid != node->inode_id)
1088                 goto out;
1089
1090         if (key.type != BTRFS_INODE_REF_KEY &&
1091             key.type != BTRFS_INODE_EXTREF_KEY)
1092                 goto out;
1093
1094         /*
1095          * Delayed iref deletion is for the inode who has only one link,
1096          * so there is only one iref. The case that several irefs are
1097          * in the same item doesn't exist.
1098          */
1099         btrfs_del_item(trans, root, path);
1100 out:
1101         btrfs_release_delayed_iref(node);
1102 no_iref:
1103         btrfs_release_path(path);
1104 err_out:
1105         btrfs_delayed_inode_release_metadata(fs_info, node);
1106         btrfs_release_delayed_inode(node);
1107
1108         /*
1109          * If we fail to update the delayed inode we need to abort the
1110          * transaction, because we could leave the inode with the improper
1111          * counts behind.
1112          */
1113         if (ret && ret != -ENOENT)
1114                 btrfs_abort_transaction(trans, ret);
1115
1116         return ret;
1117
1118 search:
1119         btrfs_release_path(path);
1120
1121         key.type = BTRFS_INODE_EXTREF_KEY;
1122         key.offset = -1;
1123
1124         nofs_flag = memalloc_nofs_save();
1125         ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
1126         memalloc_nofs_restore(nofs_flag);
1127         if (ret < 0)
1128                 goto err_out;
1129         ASSERT(ret);
1130
1131         ret = 0;
1132         leaf = path->nodes[0];
1133         path->slots[0]--;
1134         goto again;
1135 }
1136
1137 static inline int btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
1138                                              struct btrfs_root *root,
1139                                              struct btrfs_path *path,
1140                                              struct btrfs_delayed_node *node)
1141 {
1142         int ret;
1143
1144         mutex_lock(&node->mutex);
1145         if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &node->flags)) {
1146                 mutex_unlock(&node->mutex);
1147                 return 0;
1148         }
1149
1150         ret = __btrfs_update_delayed_inode(trans, root, path, node);
1151         mutex_unlock(&node->mutex);
1152         return ret;
1153 }
1154
1155 static inline int
1156 __btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans,
1157                                    struct btrfs_path *path,
1158                                    struct btrfs_delayed_node *node)
1159 {
1160         int ret;
1161
1162         ret = btrfs_insert_delayed_items(trans, path, node->root, node);
1163         if (ret)
1164                 return ret;
1165
1166         ret = btrfs_delete_delayed_items(trans, path, node->root, node);
1167         if (ret)
1168                 return ret;
1169
1170         ret = btrfs_update_delayed_inode(trans, node->root, path, node);
1171         return ret;
1172 }
1173
1174 /*
1175  * Called when committing the transaction.
1176  * Returns 0 on success.
1177  * Returns < 0 on error and returns with an aborted transaction with any
1178  * outstanding delayed items cleaned up.
1179  */
1180 static int __btrfs_run_delayed_items(struct btrfs_trans_handle *trans,
1181                                      struct btrfs_fs_info *fs_info, int nr)
1182 {
1183         struct btrfs_delayed_root *delayed_root;
1184         struct btrfs_delayed_node *curr_node, *prev_node;
1185         struct btrfs_path *path;
1186         struct btrfs_block_rsv *block_rsv;
1187         int ret = 0;
1188         bool count = (nr > 0);
1189
1190         if (trans->aborted)
1191                 return -EIO;
1192
1193         path = btrfs_alloc_path();
1194         if (!path)
1195                 return -ENOMEM;
1196         path->leave_spinning = 1;
1197
1198         block_rsv = trans->block_rsv;
1199         trans->block_rsv = &fs_info->delayed_block_rsv;
1200
1201         delayed_root = fs_info->delayed_root;
1202
1203         curr_node = btrfs_first_delayed_node(delayed_root);
1204         while (curr_node && (!count || (count && nr--))) {
1205                 ret = __btrfs_commit_inode_delayed_items(trans, path,
1206                                                          curr_node);
1207                 if (ret) {
1208                         btrfs_abort_transaction(trans, ret);
1209                         break;
1210                 }
1211
1212                 prev_node = curr_node;
1213                 curr_node = btrfs_next_delayed_node(curr_node);
1214                 /*
1215                  * See the comment below about releasing path before releasing
1216                  * node. If the commit of delayed items was successful the path
1217                  * should always be released, but in case of an error, it may
1218                  * point to locked extent buffers (a leaf at the very least).
1219                  */
1220                 ASSERT(path->nodes[0] == NULL);
1221                 btrfs_release_delayed_node(prev_node);
1222         }
1223
1224         /*
1225          * Release the path to avoid a potential deadlock and lockdep splat when
1226          * releasing the delayed node, as that requires taking the delayed node's
1227          * mutex. If another task starts running delayed items before we take
1228          * the mutex, it will first lock the mutex and then it may try to lock
1229          * the same btree path (leaf).
1230          */
1231         btrfs_free_path(path);
1232
1233         if (curr_node)
1234                 btrfs_release_delayed_node(curr_node);
1235         trans->block_rsv = block_rsv;
1236
1237         return ret;
1238 }
1239
1240 int btrfs_run_delayed_items(struct btrfs_trans_handle *trans,
1241                             struct btrfs_fs_info *fs_info)
1242 {
1243         return __btrfs_run_delayed_items(trans, fs_info, -1);
1244 }
1245
1246 int btrfs_run_delayed_items_nr(struct btrfs_trans_handle *trans,
1247                                struct btrfs_fs_info *fs_info, int nr)
1248 {
1249         return __btrfs_run_delayed_items(trans, fs_info, nr);
1250 }
1251
1252 int btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans,
1253                                      struct btrfs_inode *inode)
1254 {
1255         struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1256         struct btrfs_path *path;
1257         struct btrfs_block_rsv *block_rsv;
1258         int ret;
1259
1260         if (!delayed_node)
1261                 return 0;
1262
1263         mutex_lock(&delayed_node->mutex);
1264         if (!delayed_node->count) {
1265                 mutex_unlock(&delayed_node->mutex);
1266                 btrfs_release_delayed_node(delayed_node);
1267                 return 0;
1268         }
1269         mutex_unlock(&delayed_node->mutex);
1270
1271         path = btrfs_alloc_path();
1272         if (!path) {
1273                 btrfs_release_delayed_node(delayed_node);
1274                 return -ENOMEM;
1275         }
1276         path->leave_spinning = 1;
1277
1278         block_rsv = trans->block_rsv;
1279         trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv;
1280
1281         ret = __btrfs_commit_inode_delayed_items(trans, path, delayed_node);
1282
1283         btrfs_release_delayed_node(delayed_node);
1284         btrfs_free_path(path);
1285         trans->block_rsv = block_rsv;
1286
1287         return ret;
1288 }
1289
1290 int btrfs_commit_inode_delayed_inode(struct btrfs_inode *inode)
1291 {
1292         struct btrfs_fs_info *fs_info = btrfs_sb(inode->vfs_inode.i_sb);
1293         struct btrfs_trans_handle *trans;
1294         struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1295         struct btrfs_path *path;
1296         struct btrfs_block_rsv *block_rsv;
1297         int ret;
1298
1299         if (!delayed_node)
1300                 return 0;
1301
1302         mutex_lock(&delayed_node->mutex);
1303         if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1304                 mutex_unlock(&delayed_node->mutex);
1305                 btrfs_release_delayed_node(delayed_node);
1306                 return 0;
1307         }
1308         mutex_unlock(&delayed_node->mutex);
1309
1310         trans = btrfs_join_transaction(delayed_node->root);
1311         if (IS_ERR(trans)) {
1312                 ret = PTR_ERR(trans);
1313                 goto out;
1314         }
1315
1316         path = btrfs_alloc_path();
1317         if (!path) {
1318                 ret = -ENOMEM;
1319                 goto trans_out;
1320         }
1321         path->leave_spinning = 1;
1322
1323         block_rsv = trans->block_rsv;
1324         trans->block_rsv = &fs_info->delayed_block_rsv;
1325
1326         mutex_lock(&delayed_node->mutex);
1327         if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags))
1328                 ret = __btrfs_update_delayed_inode(trans, delayed_node->root,
1329                                                    path, delayed_node);
1330         else
1331                 ret = 0;
1332         mutex_unlock(&delayed_node->mutex);
1333
1334         btrfs_free_path(path);
1335         trans->block_rsv = block_rsv;
1336 trans_out:
1337         btrfs_end_transaction(trans);
1338         btrfs_btree_balance_dirty(fs_info);
1339 out:
1340         btrfs_release_delayed_node(delayed_node);
1341
1342         return ret;
1343 }
1344
1345 void btrfs_remove_delayed_node(struct btrfs_inode *inode)
1346 {
1347         struct btrfs_delayed_node *delayed_node;
1348
1349         delayed_node = READ_ONCE(inode->delayed_node);
1350         if (!delayed_node)
1351                 return;
1352
1353         inode->delayed_node = NULL;
1354         btrfs_release_delayed_node(delayed_node);
1355 }
1356
1357 struct btrfs_async_delayed_work {
1358         struct btrfs_delayed_root *delayed_root;
1359         int nr;
1360         struct btrfs_work work;
1361 };
1362
1363 static void btrfs_async_run_delayed_root(struct btrfs_work *work)
1364 {
1365         struct btrfs_async_delayed_work *async_work;
1366         struct btrfs_delayed_root *delayed_root;
1367         struct btrfs_trans_handle *trans;
1368         struct btrfs_path *path;
1369         struct btrfs_delayed_node *delayed_node = NULL;
1370         struct btrfs_root *root;
1371         struct btrfs_block_rsv *block_rsv;
1372         int total_done = 0;
1373
1374         async_work = container_of(work, struct btrfs_async_delayed_work, work);
1375         delayed_root = async_work->delayed_root;
1376
1377         path = btrfs_alloc_path();
1378         if (!path)
1379                 goto out;
1380
1381 again:
1382         if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND / 2)
1383                 goto free_path;
1384
1385         delayed_node = btrfs_first_prepared_delayed_node(delayed_root);
1386         if (!delayed_node)
1387                 goto free_path;
1388
1389         path->leave_spinning = 1;
1390         root = delayed_node->root;
1391
1392         trans = btrfs_join_transaction(root);
1393         if (IS_ERR(trans))
1394                 goto release_path;
1395
1396         block_rsv = trans->block_rsv;
1397         trans->block_rsv = &root->fs_info->delayed_block_rsv;
1398
1399         __btrfs_commit_inode_delayed_items(trans, path, delayed_node);
1400
1401         trans->block_rsv = block_rsv;
1402         btrfs_end_transaction(trans);
1403         btrfs_btree_balance_dirty_nodelay(root->fs_info);
1404
1405 release_path:
1406         btrfs_release_path(path);
1407         total_done++;
1408
1409         btrfs_release_prepared_delayed_node(delayed_node);
1410         if ((async_work->nr == 0 && total_done < BTRFS_DELAYED_WRITEBACK) ||
1411             total_done < async_work->nr)
1412                 goto again;
1413
1414 free_path:
1415         btrfs_free_path(path);
1416 out:
1417         wake_up(&delayed_root->wait);
1418         kfree(async_work);
1419 }
1420
1421
1422 static int btrfs_wq_run_delayed_node(struct btrfs_delayed_root *delayed_root,
1423                                      struct btrfs_fs_info *fs_info, int nr)
1424 {
1425         struct btrfs_async_delayed_work *async_work;
1426
1427         if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND ||
1428             btrfs_workqueue_normal_congested(fs_info->delayed_workers))
1429                 return 0;
1430
1431         async_work = kmalloc(sizeof(*async_work), GFP_NOFS);
1432         if (!async_work)
1433                 return -ENOMEM;
1434
1435         async_work->delayed_root = delayed_root;
1436         btrfs_init_work(&async_work->work, btrfs_delayed_meta_helper,
1437                         btrfs_async_run_delayed_root, NULL, NULL);
1438         async_work->nr = nr;
1439
1440         btrfs_queue_work(fs_info->delayed_workers, &async_work->work);
1441         return 0;
1442 }
1443
1444 void btrfs_assert_delayed_root_empty(struct btrfs_fs_info *fs_info)
1445 {
1446         WARN_ON(btrfs_first_delayed_node(fs_info->delayed_root));
1447 }
1448
1449 static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
1450 {
1451         int val = atomic_read(&delayed_root->items_seq);
1452
1453         if (val < seq || val >= seq + BTRFS_DELAYED_BATCH)
1454                 return 1;
1455
1456         if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND)
1457                 return 1;
1458
1459         return 0;
1460 }
1461
1462 void btrfs_balance_delayed_items(struct btrfs_fs_info *fs_info)
1463 {
1464         struct btrfs_delayed_root *delayed_root = fs_info->delayed_root;
1465
1466         if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND)
1467                 return;
1468
1469         if (atomic_read(&delayed_root->items) >= BTRFS_DELAYED_WRITEBACK) {
1470                 int seq;
1471                 int ret;
1472
1473                 seq = atomic_read(&delayed_root->items_seq);
1474
1475                 ret = btrfs_wq_run_delayed_node(delayed_root, fs_info, 0);
1476                 if (ret)
1477                         return;
1478
1479                 wait_event_interruptible(delayed_root->wait,
1480                                          could_end_wait(delayed_root, seq));
1481                 return;
1482         }
1483
1484         btrfs_wq_run_delayed_node(delayed_root, fs_info, BTRFS_DELAYED_BATCH);
1485 }
1486
1487 /* Will return 0 or -ENOMEM */
1488 int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans,
1489                                    struct btrfs_fs_info *fs_info,
1490                                    const char *name, int name_len,
1491                                    struct btrfs_inode *dir,
1492                                    struct btrfs_disk_key *disk_key, u8 type,
1493                                    u64 index)
1494 {
1495         struct btrfs_delayed_node *delayed_node;
1496         struct btrfs_delayed_item *delayed_item;
1497         struct btrfs_dir_item *dir_item;
1498         int ret;
1499
1500         delayed_node = btrfs_get_or_create_delayed_node(dir);
1501         if (IS_ERR(delayed_node))
1502                 return PTR_ERR(delayed_node);
1503
1504         delayed_item = btrfs_alloc_delayed_item(sizeof(*dir_item) + name_len);
1505         if (!delayed_item) {
1506                 ret = -ENOMEM;
1507                 goto release_node;
1508         }
1509
1510         delayed_item->key.objectid = btrfs_ino(dir);
1511         delayed_item->key.type = BTRFS_DIR_INDEX_KEY;
1512         delayed_item->key.offset = index;
1513
1514         dir_item = (struct btrfs_dir_item *)delayed_item->data;
1515         dir_item->location = *disk_key;
1516         btrfs_set_stack_dir_transid(dir_item, trans->transid);
1517         btrfs_set_stack_dir_data_len(dir_item, 0);
1518         btrfs_set_stack_dir_name_len(dir_item, name_len);
1519         btrfs_set_stack_dir_type(dir_item, type);
1520         memcpy((char *)(dir_item + 1), name, name_len);
1521
1522         ret = btrfs_delayed_item_reserve_metadata(trans, fs_info, delayed_item);
1523         /*
1524          * we have reserved enough space when we start a new transaction,
1525          * so reserving metadata failure is impossible
1526          */
1527         BUG_ON(ret);
1528
1529
1530         mutex_lock(&delayed_node->mutex);
1531         ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item);
1532         if (unlikely(ret)) {
1533                 btrfs_err(fs_info,
1534                           "err add delayed dir index item(name: %.*s) into the insertion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)",
1535                           name_len, name, delayed_node->root->objectid,
1536                           delayed_node->inode_id, ret);
1537                 BUG();
1538         }
1539         mutex_unlock(&delayed_node->mutex);
1540
1541 release_node:
1542         btrfs_release_delayed_node(delayed_node);
1543         return ret;
1544 }
1545
1546 static int btrfs_delete_delayed_insertion_item(struct btrfs_fs_info *fs_info,
1547                                                struct btrfs_delayed_node *node,
1548                                                struct btrfs_key *key)
1549 {
1550         struct btrfs_delayed_item *item;
1551
1552         mutex_lock(&node->mutex);
1553         item = __btrfs_lookup_delayed_insertion_item(node, key);
1554         if (!item) {
1555                 mutex_unlock(&node->mutex);
1556                 return 1;
1557         }
1558
1559         btrfs_delayed_item_release_metadata(fs_info, item);
1560         btrfs_release_delayed_item(item);
1561         mutex_unlock(&node->mutex);
1562         return 0;
1563 }
1564
1565 int btrfs_delete_delayed_dir_index(struct btrfs_trans_handle *trans,
1566                                    struct btrfs_fs_info *fs_info,
1567                                    struct btrfs_inode *dir, u64 index)
1568 {
1569         struct btrfs_delayed_node *node;
1570         struct btrfs_delayed_item *item;
1571         struct btrfs_key item_key;
1572         int ret;
1573
1574         node = btrfs_get_or_create_delayed_node(dir);
1575         if (IS_ERR(node))
1576                 return PTR_ERR(node);
1577
1578         item_key.objectid = btrfs_ino(dir);
1579         item_key.type = BTRFS_DIR_INDEX_KEY;
1580         item_key.offset = index;
1581
1582         ret = btrfs_delete_delayed_insertion_item(fs_info, node, &item_key);
1583         if (!ret)
1584                 goto end;
1585
1586         item = btrfs_alloc_delayed_item(0);
1587         if (!item) {
1588                 ret = -ENOMEM;
1589                 goto end;
1590         }
1591
1592         item->key = item_key;
1593
1594         ret = btrfs_delayed_item_reserve_metadata(trans, fs_info, item);
1595         /*
1596          * we have reserved enough space when we start a new transaction,
1597          * so reserving metadata failure is impossible.
1598          */
1599         BUG_ON(ret);
1600
1601         mutex_lock(&node->mutex);
1602         ret = __btrfs_add_delayed_deletion_item(node, item);
1603         if (unlikely(ret)) {
1604                 btrfs_err(fs_info,
1605                           "err add delayed dir index item(index: %llu) into the deletion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)",
1606                           index, node->root->objectid, node->inode_id, ret);
1607                 BUG();
1608         }
1609         mutex_unlock(&node->mutex);
1610 end:
1611         btrfs_release_delayed_node(node);
1612         return ret;
1613 }
1614
1615 int btrfs_inode_delayed_dir_index_count(struct btrfs_inode *inode)
1616 {
1617         struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1618
1619         if (!delayed_node)
1620                 return -ENOENT;
1621
1622         /*
1623          * Since we have held i_mutex of this directory, it is impossible that
1624          * a new directory index is added into the delayed node and index_cnt
1625          * is updated now. So we needn't lock the delayed node.
1626          */
1627         if (!delayed_node->index_cnt) {
1628                 btrfs_release_delayed_node(delayed_node);
1629                 return -EINVAL;
1630         }
1631
1632         inode->index_cnt = delayed_node->index_cnt;
1633         btrfs_release_delayed_node(delayed_node);
1634         return 0;
1635 }
1636
1637 bool btrfs_readdir_get_delayed_items(struct inode *inode,
1638                                      struct list_head *ins_list,
1639                                      struct list_head *del_list)
1640 {
1641         struct btrfs_delayed_node *delayed_node;
1642         struct btrfs_delayed_item *item;
1643
1644         delayed_node = btrfs_get_delayed_node(BTRFS_I(inode));
1645         if (!delayed_node)
1646                 return false;
1647
1648         /*
1649          * We can only do one readdir with delayed items at a time because of
1650          * item->readdir_list.
1651          */
1652         inode_unlock_shared(inode);
1653         inode_lock(inode);
1654
1655         mutex_lock(&delayed_node->mutex);
1656         item = __btrfs_first_delayed_insertion_item(delayed_node);
1657         while (item) {
1658                 refcount_inc(&item->refs);
1659                 list_add_tail(&item->readdir_list, ins_list);
1660                 item = __btrfs_next_delayed_item(item);
1661         }
1662
1663         item = __btrfs_first_delayed_deletion_item(delayed_node);
1664         while (item) {
1665                 refcount_inc(&item->refs);
1666                 list_add_tail(&item->readdir_list, del_list);
1667                 item = __btrfs_next_delayed_item(item);
1668         }
1669         mutex_unlock(&delayed_node->mutex);
1670         /*
1671          * This delayed node is still cached in the btrfs inode, so refs
1672          * must be > 1 now, and we needn't check it is going to be freed
1673          * or not.
1674          *
1675          * Besides that, this function is used to read dir, we do not
1676          * insert/delete delayed items in this period. So we also needn't
1677          * requeue or dequeue this delayed node.
1678          */
1679         refcount_dec(&delayed_node->refs);
1680
1681         return true;
1682 }
1683
1684 void btrfs_readdir_put_delayed_items(struct inode *inode,
1685                                      struct list_head *ins_list,
1686                                      struct list_head *del_list)
1687 {
1688         struct btrfs_delayed_item *curr, *next;
1689
1690         list_for_each_entry_safe(curr, next, ins_list, readdir_list) {
1691                 list_del(&curr->readdir_list);
1692                 if (refcount_dec_and_test(&curr->refs))
1693                         kfree(curr);
1694         }
1695
1696         list_for_each_entry_safe(curr, next, del_list, readdir_list) {
1697                 list_del(&curr->readdir_list);
1698                 if (refcount_dec_and_test(&curr->refs))
1699                         kfree(curr);
1700         }
1701
1702         /*
1703          * The VFS is going to do up_read(), so we need to downgrade back to a
1704          * read lock.
1705          */
1706         downgrade_write(&inode->i_rwsem);
1707 }
1708
1709 int btrfs_should_delete_dir_index(struct list_head *del_list,
1710                                   u64 index)
1711 {
1712         struct btrfs_delayed_item *curr;
1713         int ret = 0;
1714
1715         list_for_each_entry(curr, del_list, readdir_list) {
1716                 if (curr->key.offset > index)
1717                         break;
1718                 if (curr->key.offset == index) {
1719                         ret = 1;
1720                         break;
1721                 }
1722         }
1723         return ret;
1724 }
1725
1726 /*
1727  * btrfs_readdir_delayed_dir_index - read dir info stored in the delayed tree
1728  *
1729  */
1730 int btrfs_readdir_delayed_dir_index(struct dir_context *ctx,
1731                                     struct list_head *ins_list)
1732 {
1733         struct btrfs_dir_item *di;
1734         struct btrfs_delayed_item *curr, *next;
1735         struct btrfs_key location;
1736         char *name;
1737         int name_len;
1738         int over = 0;
1739         unsigned char d_type;
1740
1741         if (list_empty(ins_list))
1742                 return 0;
1743
1744         /*
1745          * Changing the data of the delayed item is impossible. So
1746          * we needn't lock them. And we have held i_mutex of the
1747          * directory, nobody can delete any directory indexes now.
1748          */
1749         list_for_each_entry_safe(curr, next, ins_list, readdir_list) {
1750                 list_del(&curr->readdir_list);
1751
1752                 if (curr->key.offset < ctx->pos) {
1753                         if (refcount_dec_and_test(&curr->refs))
1754                                 kfree(curr);
1755                         continue;
1756                 }
1757
1758                 ctx->pos = curr->key.offset;
1759
1760                 di = (struct btrfs_dir_item *)curr->data;
1761                 name = (char *)(di + 1);
1762                 name_len = btrfs_stack_dir_name_len(di);
1763
1764                 d_type = btrfs_filetype_table[di->type];
1765                 btrfs_disk_key_to_cpu(&location, &di->location);
1766
1767                 over = !dir_emit(ctx, name, name_len,
1768                                location.objectid, d_type);
1769
1770                 if (refcount_dec_and_test(&curr->refs))
1771                         kfree(curr);
1772
1773                 if (over)
1774                         return 1;
1775                 ctx->pos++;
1776         }
1777         return 0;
1778 }
1779
1780 static void fill_stack_inode_item(struct btrfs_trans_handle *trans,
1781                                   struct btrfs_inode_item *inode_item,
1782                                   struct inode *inode)
1783 {
1784         btrfs_set_stack_inode_uid(inode_item, i_uid_read(inode));
1785         btrfs_set_stack_inode_gid(inode_item, i_gid_read(inode));
1786         btrfs_set_stack_inode_size(inode_item, BTRFS_I(inode)->disk_i_size);
1787         btrfs_set_stack_inode_mode(inode_item, inode->i_mode);
1788         btrfs_set_stack_inode_nlink(inode_item, inode->i_nlink);
1789         btrfs_set_stack_inode_nbytes(inode_item, inode_get_bytes(inode));
1790         btrfs_set_stack_inode_generation(inode_item,
1791                                          BTRFS_I(inode)->generation);
1792         btrfs_set_stack_inode_sequence(inode_item, inode->i_version);
1793         btrfs_set_stack_inode_transid(inode_item, trans->transid);
1794         btrfs_set_stack_inode_rdev(inode_item, inode->i_rdev);
1795         btrfs_set_stack_inode_flags(inode_item, BTRFS_I(inode)->flags);
1796         btrfs_set_stack_inode_block_group(inode_item, 0);
1797
1798         btrfs_set_stack_timespec_sec(&inode_item->atime,
1799                                      inode->i_atime.tv_sec);
1800         btrfs_set_stack_timespec_nsec(&inode_item->atime,
1801                                       inode->i_atime.tv_nsec);
1802
1803         btrfs_set_stack_timespec_sec(&inode_item->mtime,
1804                                      inode->i_mtime.tv_sec);
1805         btrfs_set_stack_timespec_nsec(&inode_item->mtime,
1806                                       inode->i_mtime.tv_nsec);
1807
1808         btrfs_set_stack_timespec_sec(&inode_item->ctime,
1809                                      inode->i_ctime.tv_sec);
1810         btrfs_set_stack_timespec_nsec(&inode_item->ctime,
1811                                       inode->i_ctime.tv_nsec);
1812
1813         btrfs_set_stack_timespec_sec(&inode_item->otime,
1814                                      BTRFS_I(inode)->i_otime.tv_sec);
1815         btrfs_set_stack_timespec_nsec(&inode_item->otime,
1816                                      BTRFS_I(inode)->i_otime.tv_nsec);
1817 }
1818
1819 int btrfs_fill_inode(struct inode *inode, u32 *rdev)
1820 {
1821         struct btrfs_delayed_node *delayed_node;
1822         struct btrfs_inode_item *inode_item;
1823
1824         delayed_node = btrfs_get_delayed_node(BTRFS_I(inode));
1825         if (!delayed_node)
1826                 return -ENOENT;
1827
1828         mutex_lock(&delayed_node->mutex);
1829         if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1830                 mutex_unlock(&delayed_node->mutex);
1831                 btrfs_release_delayed_node(delayed_node);
1832                 return -ENOENT;
1833         }
1834
1835         inode_item = &delayed_node->inode_item;
1836
1837         i_uid_write(inode, btrfs_stack_inode_uid(inode_item));
1838         i_gid_write(inode, btrfs_stack_inode_gid(inode_item));
1839         btrfs_i_size_write(BTRFS_I(inode), btrfs_stack_inode_size(inode_item));
1840         inode->i_mode = btrfs_stack_inode_mode(inode_item);
1841         set_nlink(inode, btrfs_stack_inode_nlink(inode_item));
1842         inode_set_bytes(inode, btrfs_stack_inode_nbytes(inode_item));
1843         BTRFS_I(inode)->generation = btrfs_stack_inode_generation(inode_item);
1844         BTRFS_I(inode)->last_trans = btrfs_stack_inode_transid(inode_item);
1845
1846         inode->i_version = btrfs_stack_inode_sequence(inode_item);
1847         inode->i_rdev = 0;
1848         *rdev = btrfs_stack_inode_rdev(inode_item);
1849         BTRFS_I(inode)->flags = btrfs_stack_inode_flags(inode_item);
1850
1851         inode->i_atime.tv_sec = btrfs_stack_timespec_sec(&inode_item->atime);
1852         inode->i_atime.tv_nsec = btrfs_stack_timespec_nsec(&inode_item->atime);
1853
1854         inode->i_mtime.tv_sec = btrfs_stack_timespec_sec(&inode_item->mtime);
1855         inode->i_mtime.tv_nsec = btrfs_stack_timespec_nsec(&inode_item->mtime);
1856
1857         inode->i_ctime.tv_sec = btrfs_stack_timespec_sec(&inode_item->ctime);
1858         inode->i_ctime.tv_nsec = btrfs_stack_timespec_nsec(&inode_item->ctime);
1859
1860         BTRFS_I(inode)->i_otime.tv_sec =
1861                 btrfs_stack_timespec_sec(&inode_item->otime);
1862         BTRFS_I(inode)->i_otime.tv_nsec =
1863                 btrfs_stack_timespec_nsec(&inode_item->otime);
1864
1865         inode->i_generation = BTRFS_I(inode)->generation;
1866         BTRFS_I(inode)->index_cnt = (u64)-1;
1867
1868         mutex_unlock(&delayed_node->mutex);
1869         btrfs_release_delayed_node(delayed_node);
1870         return 0;
1871 }
1872
1873 int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
1874                                struct btrfs_root *root, struct inode *inode)
1875 {
1876         struct btrfs_delayed_node *delayed_node;
1877         int ret = 0;
1878
1879         delayed_node = btrfs_get_or_create_delayed_node(BTRFS_I(inode));
1880         if (IS_ERR(delayed_node))
1881                 return PTR_ERR(delayed_node);
1882
1883         mutex_lock(&delayed_node->mutex);
1884         if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1885                 fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
1886                 goto release_node;
1887         }
1888
1889         ret = btrfs_delayed_inode_reserve_metadata(trans, root, BTRFS_I(inode),
1890                                                    delayed_node);
1891         if (ret)
1892                 goto release_node;
1893
1894         fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
1895         set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
1896         delayed_node->count++;
1897         atomic_inc(&root->fs_info->delayed_root->items);
1898 release_node:
1899         mutex_unlock(&delayed_node->mutex);
1900         btrfs_release_delayed_node(delayed_node);
1901         return ret;
1902 }
1903
1904 int btrfs_delayed_delete_inode_ref(struct btrfs_inode *inode)
1905 {
1906         struct btrfs_fs_info *fs_info = btrfs_sb(inode->vfs_inode.i_sb);
1907         struct btrfs_delayed_node *delayed_node;
1908
1909         /*
1910          * we don't do delayed inode updates during log recovery because it
1911          * leads to enospc problems.  This means we also can't do
1912          * delayed inode refs
1913          */
1914         if (test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags))
1915                 return -EAGAIN;
1916
1917         delayed_node = btrfs_get_or_create_delayed_node(inode);
1918         if (IS_ERR(delayed_node))
1919                 return PTR_ERR(delayed_node);
1920
1921         /*
1922          * We don't reserve space for inode ref deletion is because:
1923          * - We ONLY do async inode ref deletion for the inode who has only
1924          *   one link(i_nlink == 1), it means there is only one inode ref.
1925          *   And in most case, the inode ref and the inode item are in the
1926          *   same leaf, and we will deal with them at the same time.
1927          *   Since we are sure we will reserve the space for the inode item,
1928          *   it is unnecessary to reserve space for inode ref deletion.
1929          * - If the inode ref and the inode item are not in the same leaf,
1930          *   We also needn't worry about enospc problem, because we reserve
1931          *   much more space for the inode update than it needs.
1932          * - At the worst, we can steal some space from the global reservation.
1933          *   It is very rare.
1934          */
1935         mutex_lock(&delayed_node->mutex);
1936         if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags))
1937                 goto release_node;
1938
1939         set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags);
1940         delayed_node->count++;
1941         atomic_inc(&fs_info->delayed_root->items);
1942 release_node:
1943         mutex_unlock(&delayed_node->mutex);
1944         btrfs_release_delayed_node(delayed_node);
1945         return 0;
1946 }
1947
1948 static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node)
1949 {
1950         struct btrfs_root *root = delayed_node->root;
1951         struct btrfs_fs_info *fs_info = root->fs_info;
1952         struct btrfs_delayed_item *curr_item, *prev_item;
1953
1954         mutex_lock(&delayed_node->mutex);
1955         curr_item = __btrfs_first_delayed_insertion_item(delayed_node);
1956         while (curr_item) {
1957                 btrfs_delayed_item_release_metadata(fs_info, curr_item);
1958                 prev_item = curr_item;
1959                 curr_item = __btrfs_next_delayed_item(prev_item);
1960                 btrfs_release_delayed_item(prev_item);
1961         }
1962
1963         curr_item = __btrfs_first_delayed_deletion_item(delayed_node);
1964         while (curr_item) {
1965                 btrfs_delayed_item_release_metadata(fs_info, curr_item);
1966                 prev_item = curr_item;
1967                 curr_item = __btrfs_next_delayed_item(prev_item);
1968                 btrfs_release_delayed_item(prev_item);
1969         }
1970
1971         if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags))
1972                 btrfs_release_delayed_iref(delayed_node);
1973
1974         if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1975                 btrfs_delayed_inode_release_metadata(fs_info, delayed_node);
1976                 btrfs_release_delayed_inode(delayed_node);
1977         }
1978         mutex_unlock(&delayed_node->mutex);
1979 }
1980
1981 void btrfs_kill_delayed_inode_items(struct btrfs_inode *inode)
1982 {
1983         struct btrfs_delayed_node *delayed_node;
1984
1985         delayed_node = btrfs_get_delayed_node(inode);
1986         if (!delayed_node)
1987                 return;
1988
1989         __btrfs_kill_delayed_node(delayed_node);
1990         btrfs_release_delayed_node(delayed_node);
1991 }
1992
1993 void btrfs_kill_all_delayed_nodes(struct btrfs_root *root)
1994 {
1995         u64 inode_id = 0;
1996         struct btrfs_delayed_node *delayed_nodes[8];
1997         int i, n;
1998
1999         while (1) {
2000                 spin_lock(&root->inode_lock);
2001                 n = radix_tree_gang_lookup(&root->delayed_nodes_tree,
2002                                            (void **)delayed_nodes, inode_id,
2003                                            ARRAY_SIZE(delayed_nodes));
2004                 if (!n) {
2005                         spin_unlock(&root->inode_lock);
2006                         break;
2007                 }
2008
2009                 inode_id = delayed_nodes[n - 1]->inode_id + 1;
2010                 for (i = 0; i < n; i++) {
2011                         /*
2012                          * Don't increase refs in case the node is dead and
2013                          * about to be removed from the tree in the loop below
2014                          */
2015                         if (!refcount_inc_not_zero(&delayed_nodes[i]->refs))
2016                                 delayed_nodes[i] = NULL;
2017                 }
2018                 spin_unlock(&root->inode_lock);
2019
2020                 for (i = 0; i < n; i++) {
2021                         if (!delayed_nodes[i])
2022                                 continue;
2023                         __btrfs_kill_delayed_node(delayed_nodes[i]);
2024                         btrfs_release_delayed_node(delayed_nodes[i]);
2025                 }
2026         }
2027 }
2028
2029 void btrfs_destroy_delayed_inodes(struct btrfs_fs_info *fs_info)
2030 {
2031         struct btrfs_delayed_node *curr_node, *prev_node;
2032
2033         curr_node = btrfs_first_delayed_node(fs_info->delayed_root);
2034         while (curr_node) {
2035                 __btrfs_kill_delayed_node(curr_node);
2036
2037                 prev_node = curr_node;
2038                 curr_node = btrfs_next_delayed_node(curr_node);
2039                 btrfs_release_delayed_node(prev_node);
2040         }
2041 }
2042