Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

btrfs: uninline some static inline helpers from backref.h

There are many helpers doing simple things but not simple enough to
justify the static inline. None of them seems to be on a hot path so
move them to .c.

Signed-off-by: David Sterba <dsterba@suse.com>

+102 -92
+90
fs/btrfs/backref.c
··· 2856 2856 return ret; 2857 2857 } 2858 2858 2859 + static void btrfs_backref_iter_release(struct btrfs_backref_iter *iter) 2860 + { 2861 + iter->bytenr = 0; 2862 + iter->item_ptr = 0; 2863 + iter->cur_ptr = 0; 2864 + iter->end_ptr = 0; 2865 + btrfs_release_path(iter->path); 2866 + memset(&iter->cur_key, 0, sizeof(iter->cur_key)); 2867 + } 2868 + 2859 2869 int btrfs_backref_iter_start(struct btrfs_backref_iter *iter, u64 bytenr) 2860 2870 { 2861 2871 struct btrfs_fs_info *fs_info = iter->fs_info; ··· 2956 2946 release: 2957 2947 btrfs_backref_iter_release(iter); 2958 2948 return ret; 2949 + } 2950 + 2951 + static bool btrfs_backref_iter_is_inline_ref(struct btrfs_backref_iter *iter) 2952 + { 2953 + if (iter->cur_key.type == BTRFS_EXTENT_ITEM_KEY || 2954 + iter->cur_key.type == BTRFS_METADATA_ITEM_KEY) 2955 + return true; 2956 + return false; 2959 2957 } 2960 2958 2961 2959 /* ··· 3066 3048 return node; 3067 3049 } 3068 3050 3051 + void btrfs_backref_free_node(struct btrfs_backref_cache *cache, 3052 + struct btrfs_backref_node *node) 3053 + { 3054 + if (node) { 3055 + ASSERT(list_empty(&node->list)); 3056 + ASSERT(list_empty(&node->lower)); 3057 + ASSERT(node->eb == NULL); 3058 + cache->nr_nodes--; 3059 + btrfs_put_root(node->root); 3060 + kfree(node); 3061 + } 3062 + } 3063 + 3069 3064 struct btrfs_backref_edge *btrfs_backref_alloc_edge( 3070 3065 struct btrfs_backref_cache *cache) 3071 3066 { ··· 3088 3057 if (edge) 3089 3058 cache->nr_edges++; 3090 3059 return edge; 3060 + } 3061 + 3062 + void btrfs_backref_free_edge(struct btrfs_backref_cache *cache, 3063 + struct btrfs_backref_edge *edge) 3064 + { 3065 + if (edge) { 3066 + cache->nr_edges--; 3067 + kfree(edge); 3068 + } 3069 + } 3070 + 3071 + void btrfs_backref_unlock_node_buffer(struct btrfs_backref_node *node) 3072 + { 3073 + if (node->locked) { 3074 + btrfs_tree_unlock(node->eb); 3075 + node->locked = 0; 3076 + } 3077 + } 3078 + 3079 + void btrfs_backref_drop_node_buffer(struct btrfs_backref_node *node) 3080 + { 3081 + if (node->eb) { 3082 + btrfs_backref_unlock_node_buffer(node); 3083 + free_extent_buffer(node->eb); 3084 + node->eb = NULL; 3085 + } 3086 + } 3087 + 3088 + /* 3089 + * Drop the backref node from cache without cleaning up its children 3090 + * edges. 3091 + * 3092 + * This can only be called on node without parent edges. 3093 + * The children edges are still kept as is. 3094 + */ 3095 + void btrfs_backref_drop_node(struct btrfs_backref_cache *tree, 3096 + struct btrfs_backref_node *node) 3097 + { 3098 + ASSERT(list_empty(&node->upper)); 3099 + 3100 + btrfs_backref_drop_node_buffer(node); 3101 + list_del_init(&node->list); 3102 + list_del_init(&node->lower); 3103 + if (!RB_EMPTY_NODE(&node->rb_node)) 3104 + rb_erase(&node->rb_node, &tree->rb_root); 3105 + btrfs_backref_free_node(tree, node); 3091 3106 } 3092 3107 3093 3108 /* ··· 3207 3130 ASSERT(!cache->nr_edges); 3208 3131 } 3209 3132 3133 + void btrfs_backref_link_edge(struct btrfs_backref_edge *edge, 3134 + struct btrfs_backref_node *lower, 3135 + struct btrfs_backref_node *upper, 3136 + int link_which) 3137 + { 3138 + ASSERT(upper && lower && upper->level == lower->level + 1); 3139 + edge->node[LOWER] = lower; 3140 + edge->node[UPPER] = upper; 3141 + if (link_which & LINK_LOWER) 3142 + list_add_tail(&edge->list[LOWER], &lower->upper); 3143 + if (link_which & LINK_UPPER) 3144 + list_add_tail(&edge->list[UPPER], &upper->lower); 3145 + } 3210 3146 /* 3211 3147 * Handle direct tree backref 3212 3148 *
+12 -92
fs/btrfs/backref.h
··· 302 302 303 303 int btrfs_backref_iter_next(struct btrfs_backref_iter *iter); 304 304 305 - static inline bool btrfs_backref_iter_is_inline_ref( 306 - struct btrfs_backref_iter *iter) 307 - { 308 - if (iter->cur_key.type == BTRFS_EXTENT_ITEM_KEY || 309 - iter->cur_key.type == BTRFS_METADATA_ITEM_KEY) 310 - return true; 311 - return false; 312 - } 313 - 314 - static inline void btrfs_backref_iter_release(struct btrfs_backref_iter *iter) 315 - { 316 - iter->bytenr = 0; 317 - iter->item_ptr = 0; 318 - iter->cur_ptr = 0; 319 - iter->end_ptr = 0; 320 - btrfs_release_path(iter->path); 321 - memset(&iter->cur_key, 0, sizeof(iter->cur_key)); 322 - } 323 - 324 305 /* 325 306 * Backref cache related structures 326 307 * ··· 429 448 430 449 #define LINK_LOWER (1 << 0) 431 450 #define LINK_UPPER (1 << 1) 432 - static inline void btrfs_backref_link_edge(struct btrfs_backref_edge *edge, 433 - struct btrfs_backref_node *lower, 434 - struct btrfs_backref_node *upper, 435 - int link_which) 436 - { 437 - ASSERT(upper && lower && upper->level == lower->level + 1); 438 - edge->node[LOWER] = lower; 439 - edge->node[UPPER] = upper; 440 - if (link_which & LINK_LOWER) 441 - list_add_tail(&edge->list[LOWER], &lower->upper); 442 - if (link_which & LINK_UPPER) 443 - list_add_tail(&edge->list[UPPER], &upper->lower); 444 - } 445 451 446 - static inline void btrfs_backref_free_node(struct btrfs_backref_cache *cache, 447 - struct btrfs_backref_node *node) 448 - { 449 - if (node) { 450 - ASSERT(list_empty(&node->list)); 451 - ASSERT(list_empty(&node->lower)); 452 - ASSERT(node->eb == NULL); 453 - cache->nr_nodes--; 454 - btrfs_put_root(node->root); 455 - kfree(node); 456 - } 457 - } 458 - 459 - static inline void btrfs_backref_free_edge(struct btrfs_backref_cache *cache, 460 - struct btrfs_backref_edge *edge) 461 - { 462 - if (edge) { 463 - cache->nr_edges--; 464 - kfree(edge); 465 - } 466 - } 467 - 468 - static inline void btrfs_backref_unlock_node_buffer( 469 - struct btrfs_backref_node *node) 470 - { 471 - if (node->locked) { 472 - btrfs_tree_unlock(node->eb); 473 - node->locked = 0; 474 - } 475 - } 476 - 477 - static inline void btrfs_backref_drop_node_buffer( 478 - struct btrfs_backref_node *node) 479 - { 480 - if (node->eb) { 481 - btrfs_backref_unlock_node_buffer(node); 482 - free_extent_buffer(node->eb); 483 - node->eb = NULL; 484 - } 485 - } 486 - 487 - /* 488 - * Drop the backref node from cache without cleaning up its children 489 - * edges. 490 - * 491 - * This can only be called on node without parent edges. 492 - * The children edges are still kept as is. 493 - */ 494 - static inline void btrfs_backref_drop_node(struct btrfs_backref_cache *tree, 495 - struct btrfs_backref_node *node) 496 - { 497 - ASSERT(list_empty(&node->upper)); 498 - 499 - btrfs_backref_drop_node_buffer(node); 500 - list_del_init(&node->list); 501 - list_del_init(&node->lower); 502 - if (!RB_EMPTY_NODE(&node->rb_node)) 503 - rb_erase(&node->rb_node, &tree->rb_root); 504 - btrfs_backref_free_node(tree, node); 505 - } 452 + void btrfs_backref_link_edge(struct btrfs_backref_edge *edge, 453 + struct btrfs_backref_node *lower, 454 + struct btrfs_backref_node *upper, 455 + int link_which); 456 + void btrfs_backref_free_node(struct btrfs_backref_cache *cache, 457 + struct btrfs_backref_node *node); 458 + void btrfs_backref_free_edge(struct btrfs_backref_cache *cache, 459 + struct btrfs_backref_edge *edge); 460 + void btrfs_backref_unlock_node_buffer(struct btrfs_backref_node *node); 461 + void btrfs_backref_drop_node_buffer(struct btrfs_backref_node *node); 506 462 507 463 void btrfs_backref_cleanup_node(struct btrfs_backref_cache *cache, 508 464 struct btrfs_backref_node *node); 465 + void btrfs_backref_drop_node(struct btrfs_backref_cache *tree, 466 + struct btrfs_backref_node *node); 509 467 510 468 void btrfs_backref_release_cache(struct btrfs_backref_cache *cache); 511 469