diff options
Diffstat (limited to 'fs/nilfs2')
-rw-r--r-- | fs/nilfs2/btree.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c index 21ed8ccea4b9..115b157d508b 100644 --- a/fs/nilfs2/btree.c +++ b/fs/nilfs2/btree.c | |||
@@ -97,25 +97,13 @@ static void nilfs_btree_init_path(struct nilfs_btree_path *path) | |||
97 | } | 97 | } |
98 | } | 98 | } |
99 | 99 | ||
100 | static void nilfs_btree_clear_path(struct nilfs_btree_path *path) | 100 | static void nilfs_btree_release_path(struct nilfs_btree_path *path) |
101 | { | 101 | { |
102 | int level; | 102 | int level; |
103 | 103 | ||
104 | for (level = NILFS_BTREE_LEVEL_DATA; | 104 | for (level = NILFS_BTREE_LEVEL_DATA; level < NILFS_BTREE_LEVEL_MAX; |
105 | level < NILFS_BTREE_LEVEL_MAX; | 105 | level++) |
106 | level++) { | 106 | brelse(path[level].bp_bh); |
107 | if (path[level].bp_bh != NULL) { | ||
108 | brelse(path[level].bp_bh); | ||
109 | path[level].bp_bh = NULL; | ||
110 | } | ||
111 | /* sib_bh is released or deleted by prepare or commit | ||
112 | * operations. */ | ||
113 | path[level].bp_sib_bh = NULL; | ||
114 | path[level].bp_index = 0; | ||
115 | path[level].bp_oldreq.bpr_ptr = NILFS_BMAP_INVALID_PTR; | ||
116 | path[level].bp_newreq.bpr_ptr = NILFS_BMAP_INVALID_PTR; | ||
117 | path[level].bp_op = NULL; | ||
118 | } | ||
119 | } | 107 | } |
120 | 108 | ||
121 | /* | 109 | /* |
@@ -557,7 +545,7 @@ static int nilfs_btree_lookup(const struct nilfs_bmap *bmap, | |||
557 | if (ptrp != NULL) | 545 | if (ptrp != NULL) |
558 | *ptrp = ptr; | 546 | *ptrp = ptr; |
559 | 547 | ||
560 | nilfs_btree_clear_path(path); | 548 | nilfs_btree_release_path(path); |
561 | nilfs_btree_free_path(path); | 549 | nilfs_btree_free_path(path); |
562 | 550 | ||
563 | return ret; | 551 | return ret; |
@@ -639,7 +627,7 @@ static int nilfs_btree_lookup_contig(const struct nilfs_bmap *bmap, | |||
639 | *ptrp = ptr; | 627 | *ptrp = ptr; |
640 | ret = cnt; | 628 | ret = cnt; |
641 | out: | 629 | out: |
642 | nilfs_btree_clear_path(path); | 630 | nilfs_btree_release_path(path); |
643 | nilfs_btree_free_path(path); | 631 | nilfs_btree_free_path(path); |
644 | return ret; | 632 | return ret; |
645 | } | 633 | } |
@@ -1146,7 +1134,7 @@ static int nilfs_btree_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) | |||
1146 | nilfs_bmap_add_blocks(bmap, stats.bs_nblocks); | 1134 | nilfs_bmap_add_blocks(bmap, stats.bs_nblocks); |
1147 | 1135 | ||
1148 | out: | 1136 | out: |
1149 | nilfs_btree_clear_path(path); | 1137 | nilfs_btree_release_path(path); |
1150 | nilfs_btree_free_path(path); | 1138 | nilfs_btree_free_path(path); |
1151 | return ret; | 1139 | return ret; |
1152 | } | 1140 | } |
@@ -1501,7 +1489,7 @@ static int nilfs_btree_delete(struct nilfs_bmap *bmap, __u64 key) | |||
1501 | nilfs_bmap_sub_blocks(bmap, stats.bs_nblocks); | 1489 | nilfs_bmap_sub_blocks(bmap, stats.bs_nblocks); |
1502 | 1490 | ||
1503 | out: | 1491 | out: |
1504 | nilfs_btree_clear_path(path); | 1492 | nilfs_btree_release_path(path); |
1505 | nilfs_btree_free_path(path); | 1493 | nilfs_btree_free_path(path); |
1506 | return ret; | 1494 | return ret; |
1507 | } | 1495 | } |
@@ -1520,7 +1508,7 @@ static int nilfs_btree_last_key(const struct nilfs_bmap *bmap, __u64 *keyp) | |||
1520 | 1508 | ||
1521 | ret = nilfs_btree_do_lookup_last(btree, path, keyp, NULL); | 1509 | ret = nilfs_btree_do_lookup_last(btree, path, keyp, NULL); |
1522 | 1510 | ||
1523 | nilfs_btree_clear_path(path); | 1511 | nilfs_btree_release_path(path); |
1524 | nilfs_btree_free_path(path); | 1512 | nilfs_btree_free_path(path); |
1525 | 1513 | ||
1526 | return ret; | 1514 | return ret; |
@@ -1975,7 +1963,7 @@ static int nilfs_btree_propagate(const struct nilfs_bmap *bmap, | |||
1975 | nilfs_btree_propagate_p(btree, path, level, bh); | 1963 | nilfs_btree_propagate_p(btree, path, level, bh); |
1976 | 1964 | ||
1977 | out: | 1965 | out: |
1978 | nilfs_btree_clear_path(path); | 1966 | nilfs_btree_release_path(path); |
1979 | nilfs_btree_free_path(path); | 1967 | nilfs_btree_free_path(path); |
1980 | 1968 | ||
1981 | return ret; | 1969 | return ret; |
@@ -2156,7 +2144,7 @@ static int nilfs_btree_assign(struct nilfs_bmap *bmap, | |||
2156 | nilfs_btree_assign_p(btree, path, level, bh, blocknr, binfo); | 2144 | nilfs_btree_assign_p(btree, path, level, bh, blocknr, binfo); |
2157 | 2145 | ||
2158 | out: | 2146 | out: |
2159 | nilfs_btree_clear_path(path); | 2147 | nilfs_btree_release_path(path); |
2160 | nilfs_btree_free_path(path); | 2148 | nilfs_btree_free_path(path); |
2161 | 2149 | ||
2162 | return ret; | 2150 | return ret; |
@@ -2222,7 +2210,7 @@ static int nilfs_btree_mark(struct nilfs_bmap *bmap, __u64 key, int level) | |||
2222 | nilfs_bmap_set_dirty(&btree->bt_bmap); | 2210 | nilfs_bmap_set_dirty(&btree->bt_bmap); |
2223 | 2211 | ||
2224 | out: | 2212 | out: |
2225 | nilfs_btree_clear_path(path); | 2213 | nilfs_btree_release_path(path); |
2226 | nilfs_btree_free_path(path); | 2214 | nilfs_btree_free_path(path); |
2227 | return ret; | 2215 | return ret; |
2228 | } | 2216 | } |