diff options
author | Jan Schmidt <list.btrfs@jan-o-sch.net> | 2012-05-31 08:59:09 -0400 |
---|---|---|
committer | Jan Schmidt <list.btrfs@jan-o-sch.net> | 2012-05-31 13:56:18 -0400 |
commit | e9b7fd4d8b7c915cff353ca085b83bd19737396b (patch) | |
tree | 44cb78d1d1a5d677b0c01fd082554150a2f0ce20 /fs/btrfs/ctree.c | |
parent | 926dd8a640da1bbf7478eebea1c23a842fc9c890 (diff) |
Btrfs: add tree_mod_dont_log helper
Replace duplicate code by small inline helper function.
Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Diffstat (limited to 'fs/btrfs/ctree.c')
-rw-r--r-- | fs/btrfs/ctree.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 26e8dc1681b0..c7c48489b963 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
@@ -455,14 +455,25 @@ unlock: | |||
455 | return ret; | 455 | return ret; |
456 | } | 456 | } |
457 | 457 | ||
458 | static inline int tree_mod_dont_log(struct btrfs_fs_info *fs_info, | ||
459 | struct extent_buffer *eb) { | ||
460 | smp_mb(); | ||
461 | if (list_empty(&(fs_info)->tree_mod_seq_list)) | ||
462 | return 1; | ||
463 | if (!eb) | ||
464 | return 0; | ||
465 | if (btrfs_header_level(eb) == 0) | ||
466 | return 1; | ||
467 | return 0; | ||
468 | } | ||
469 | |||
458 | static inline int tree_mod_alloc(struct btrfs_fs_info *fs_info, gfp_t flags, | 470 | static inline int tree_mod_alloc(struct btrfs_fs_info *fs_info, gfp_t flags, |
459 | struct tree_mod_elem **tm_ret) | 471 | struct tree_mod_elem **tm_ret) |
460 | { | 472 | { |
461 | struct tree_mod_elem *tm; | 473 | struct tree_mod_elem *tm; |
462 | int seq; | 474 | int seq; |
463 | 475 | ||
464 | smp_mb(); | 476 | if (tree_mod_dont_log(fs_info, NULL)) |
465 | if (list_empty(&fs_info->tree_mod_seq_list)) | ||
466 | return 0; | 477 | return 0; |
467 | 478 | ||
468 | tm = *tm_ret = kzalloc(sizeof(*tm), flags); | 479 | tm = *tm_ret = kzalloc(sizeof(*tm), flags); |
@@ -643,8 +654,7 @@ tree_mod_log_eb_copy(struct btrfs_fs_info *fs_info, struct extent_buffer *dst, | |||
643 | int ret; | 654 | int ret; |
644 | int i; | 655 | int i; |
645 | 656 | ||
646 | smp_mb(); | 657 | if (tree_mod_dont_log(fs_info, NULL)) |
647 | if (list_empty(&fs_info->tree_mod_seq_list)) | ||
648 | return; | 658 | return; |
649 | 659 | ||
650 | if (btrfs_header_level(dst) == 0 && btrfs_header_level(src) == 0) | 660 | if (btrfs_header_level(dst) == 0 && btrfs_header_level(src) == 0) |
@@ -691,11 +701,7 @@ static void tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, | |||
691 | int ret; | 701 | int ret; |
692 | u32 nritems; | 702 | u32 nritems; |
693 | 703 | ||
694 | smp_mb(); | 704 | if (tree_mod_dont_log(fs_info, eb)) |
695 | if (list_empty(&fs_info->tree_mod_seq_list)) | ||
696 | return; | ||
697 | |||
698 | if (btrfs_header_level(eb) == 0) | ||
699 | return; | 705 | return; |
700 | 706 | ||
701 | nritems = btrfs_header_nritems(eb); | 707 | nritems = btrfs_header_nritems(eb); |