diff options
| author | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2009-11-11 08:37:59 -0500 |
|---|---|---|
| committer | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2009-11-19 20:05:47 -0500 |
| commit | 30db4e6c3d51a89e4923e525303f714e6508bbd0 (patch) | |
| tree | c1c83cff8e73b2534a391f2c89926b3badfdaa83 /fs/nilfs2 | |
| parent | a49762fd119d191dcbb2f638a2dbc2ed53f4e2bb (diff) | |
nilfs2: remove buffer locking from btree code
lock_buffer() and unlock_buffer() uses in btree.c are eliminable
because btree functions gain buffer heads through nilfs_btnode_get(),
which never returns an on-the-fly buffer.
Although nilfs_clear_dirty_page() and nilfs_copy_back_pages() in
nilfs_commit_gcdat_inode() juggle btree node buffers of DAT, this is
safe because these operations are protected by a log writer lock or
the metadata file semaphore of DAT.
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Diffstat (limited to 'fs/nilfs2')
| -rw-r--r-- | fs/nilfs2/btree.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c index 420c9ecbca15..c9aab29ea1f6 100644 --- a/fs/nilfs2/btree.c +++ b/fs/nilfs2/btree.c | |||
| @@ -652,13 +652,11 @@ static void nilfs_btree_promote_key(struct nilfs_btree *btree, | |||
| 652 | { | 652 | { |
| 653 | if (level < nilfs_btree_height(btree) - 1) { | 653 | if (level < nilfs_btree_height(btree) - 1) { |
| 654 | do { | 654 | do { |
| 655 | lock_buffer(path[level].bp_bh); | ||
| 656 | nilfs_btree_node_set_key( | 655 | nilfs_btree_node_set_key( |
| 657 | nilfs_btree_get_nonroot_node(path, level), | 656 | nilfs_btree_get_nonroot_node(path, level), |
| 658 | path[level].bp_index, key); | 657 | path[level].bp_index, key); |
| 659 | if (!buffer_dirty(path[level].bp_bh)) | 658 | if (!buffer_dirty(path[level].bp_bh)) |
| 660 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 659 | nilfs_btnode_mark_dirty(path[level].bp_bh); |
| 661 | unlock_buffer(path[level].bp_bh); | ||
| 662 | } while ((path[level].bp_index == 0) && | 660 | } while ((path[level].bp_index == 0) && |
| 663 | (++level < nilfs_btree_height(btree) - 1)); | 661 | (++level < nilfs_btree_height(btree) - 1)); |
| 664 | } | 662 | } |
| @@ -677,13 +675,11 @@ static void nilfs_btree_do_insert(struct nilfs_btree *btree, | |||
| 677 | struct nilfs_btree_node *node; | 675 | struct nilfs_btree_node *node; |
| 678 | 676 | ||
| 679 | if (level < nilfs_btree_height(btree) - 1) { | 677 | if (level < nilfs_btree_height(btree) - 1) { |
| 680 | lock_buffer(path[level].bp_bh); | ||
| 681 | node = nilfs_btree_get_nonroot_node(path, level); | 678 | node = nilfs_btree_get_nonroot_node(path, level); |
| 682 | nilfs_btree_node_insert(btree, node, *keyp, *ptrp, | 679 | nilfs_btree_node_insert(btree, node, *keyp, *ptrp, |
| 683 | path[level].bp_index); | 680 | path[level].bp_index); |
| 684 | if (!buffer_dirty(path[level].bp_bh)) | 681 | if (!buffer_dirty(path[level].bp_bh)) |
| 685 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 682 | nilfs_btnode_mark_dirty(path[level].bp_bh); |
| 686 | unlock_buffer(path[level].bp_bh); | ||
| 687 | 683 | ||
| 688 | if (path[level].bp_index == 0) | 684 | if (path[level].bp_index == 0) |
| 689 | nilfs_btree_promote_key(btree, path, level + 1, | 685 | nilfs_btree_promote_key(btree, path, level + 1, |
| @@ -703,9 +699,6 @@ static void nilfs_btree_carry_left(struct nilfs_btree *btree, | |||
| 703 | struct nilfs_btree_node *node, *left; | 699 | struct nilfs_btree_node *node, *left; |
| 704 | int nchildren, lnchildren, n, move; | 700 | int nchildren, lnchildren, n, move; |
| 705 | 701 | ||
| 706 | lock_buffer(path[level].bp_bh); | ||
| 707 | lock_buffer(path[level].bp_sib_bh); | ||
| 708 | |||
| 709 | node = nilfs_btree_get_nonroot_node(path, level); | 702 | node = nilfs_btree_get_nonroot_node(path, level); |
| 710 | left = nilfs_btree_get_sib_node(path, level); | 703 | left = nilfs_btree_get_sib_node(path, level); |
| 711 | nchildren = nilfs_btree_node_get_nchildren(node); | 704 | nchildren = nilfs_btree_node_get_nchildren(node); |
| @@ -726,9 +719,6 @@ static void nilfs_btree_carry_left(struct nilfs_btree *btree, | |||
| 726 | if (!buffer_dirty(path[level].bp_sib_bh)) | 719 | if (!buffer_dirty(path[level].bp_sib_bh)) |
| 727 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 720 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); |
| 728 | 721 | ||
| 729 | unlock_buffer(path[level].bp_bh); | ||
| 730 | unlock_buffer(path[level].bp_sib_bh); | ||
| 731 | |||
| 732 | nilfs_btree_promote_key(btree, path, level + 1, | 722 | nilfs_btree_promote_key(btree, path, level + 1, |
| 733 | nilfs_btree_node_get_key(node, 0)); | 723 | nilfs_btree_node_get_key(node, 0)); |
| 734 | 724 | ||
| @@ -754,9 +744,6 @@ static void nilfs_btree_carry_right(struct nilfs_btree *btree, | |||
| 754 | struct nilfs_btree_node *node, *right; | 744 | struct nilfs_btree_node *node, *right; |
| 755 | int nchildren, rnchildren, n, move; | 745 | int nchildren, rnchildren, n, move; |
| 756 | 746 | ||
| 757 | lock_buffer(path[level].bp_bh); | ||
| 758 | lock_buffer(path[level].bp_sib_bh); | ||
| 759 | |||
| 760 | node = nilfs_btree_get_nonroot_node(path, level); | 747 | node = nilfs_btree_get_nonroot_node(path, level); |
| 761 | right = nilfs_btree_get_sib_node(path, level); | 748 | right = nilfs_btree_get_sib_node(path, level); |
| 762 | nchildren = nilfs_btree_node_get_nchildren(node); | 749 | nchildren = nilfs_btree_node_get_nchildren(node); |
| @@ -777,9 +764,6 @@ static void nilfs_btree_carry_right(struct nilfs_btree *btree, | |||
| 777 | if (!buffer_dirty(path[level].bp_sib_bh)) | 764 | if (!buffer_dirty(path[level].bp_sib_bh)) |
| 778 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 765 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); |
| 779 | 766 | ||
| 780 | unlock_buffer(path[level].bp_bh); | ||
| 781 | unlock_buffer(path[level].bp_sib_bh); | ||
| 782 | |||
| 783 | path[level + 1].bp_index++; | 767 | path[level + 1].bp_index++; |
| 784 | nilfs_btree_promote_key(btree, path, level + 1, | 768 | nilfs_btree_promote_key(btree, path, level + 1, |
| 785 | nilfs_btree_node_get_key(right, 0)); | 769 | nilfs_btree_node_get_key(right, 0)); |
| @@ -808,9 +792,6 @@ static void nilfs_btree_split(struct nilfs_btree *btree, | |||
| 808 | __u64 newptr; | 792 | __u64 newptr; |
| 809 | int nchildren, n, move; | 793 | int nchildren, n, move; |
| 810 | 794 | ||
| 811 | lock_buffer(path[level].bp_bh); | ||
| 812 | lock_buffer(path[level].bp_sib_bh); | ||
| 813 | |||
| 814 | node = nilfs_btree_get_nonroot_node(path, level); | 795 | node = nilfs_btree_get_nonroot_node(path, level); |
| 815 | right = nilfs_btree_get_sib_node(path, level); | 796 | right = nilfs_btree_get_sib_node(path, level); |
| 816 | nchildren = nilfs_btree_node_get_nchildren(node); | 797 | nchildren = nilfs_btree_node_get_nchildren(node); |
| @@ -829,9 +810,6 @@ static void nilfs_btree_split(struct nilfs_btree *btree, | |||
| 829 | if (!buffer_dirty(path[level].bp_sib_bh)) | 810 | if (!buffer_dirty(path[level].bp_sib_bh)) |
| 830 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 811 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); |
| 831 | 812 | ||
| 832 | unlock_buffer(path[level].bp_bh); | ||
| 833 | unlock_buffer(path[level].bp_sib_bh); | ||
| 834 | |||
| 835 | newkey = nilfs_btree_node_get_key(right, 0); | 813 | newkey = nilfs_btree_node_get_key(right, 0); |
| 836 | newptr = path[level].bp_newreq.bpr_ptr; | 814 | newptr = path[level].bp_newreq.bpr_ptr; |
| 837 | 815 | ||
| @@ -866,8 +844,6 @@ static void nilfs_btree_grow(struct nilfs_btree *btree, | |||
| 866 | struct nilfs_btree_node *root, *child; | 844 | struct nilfs_btree_node *root, *child; |
| 867 | int n; | 845 | int n; |
| 868 | 846 | ||
| 869 | lock_buffer(path[level].bp_sib_bh); | ||
| 870 | |||
| 871 | root = nilfs_btree_get_root(btree); | 847 | root = nilfs_btree_get_root(btree); |
| 872 | child = nilfs_btree_get_sib_node(path, level); | 848 | child = nilfs_btree_get_sib_node(path, level); |
| 873 | 849 | ||
| @@ -879,8 +855,6 @@ static void nilfs_btree_grow(struct nilfs_btree *btree, | |||
| 879 | if (!buffer_dirty(path[level].bp_sib_bh)) | 855 | if (!buffer_dirty(path[level].bp_sib_bh)) |
| 880 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 856 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); |
| 881 | 857 | ||
| 882 | unlock_buffer(path[level].bp_sib_bh); | ||
| 883 | |||
| 884 | path[level].bp_bh = path[level].bp_sib_bh; | 858 | path[level].bp_bh = path[level].bp_sib_bh; |
| 885 | path[level].bp_sib_bh = NULL; | 859 | path[level].bp_sib_bh = NULL; |
| 886 | 860 | ||
| @@ -1037,11 +1011,9 @@ static int nilfs_btree_prepare_insert(struct nilfs_btree *btree, | |||
| 1037 | 1011 | ||
| 1038 | stats->bs_nblocks++; | 1012 | stats->bs_nblocks++; |
| 1039 | 1013 | ||
| 1040 | lock_buffer(bh); | ||
| 1041 | nilfs_btree_node_init(btree, | 1014 | nilfs_btree_node_init(btree, |
| 1042 | (struct nilfs_btree_node *)bh->b_data, | 1015 | (struct nilfs_btree_node *)bh->b_data, |
| 1043 | 0, level, 0, NULL, NULL); | 1016 | 0, level, 0, NULL, NULL); |
| 1044 | unlock_buffer(bh); | ||
| 1045 | path[level].bp_sib_bh = bh; | 1017 | path[level].bp_sib_bh = bh; |
| 1046 | path[level].bp_op = nilfs_btree_split; | 1018 | path[level].bp_op = nilfs_btree_split; |
| 1047 | } | 1019 | } |
| @@ -1066,10 +1038,8 @@ static int nilfs_btree_prepare_insert(struct nilfs_btree *btree, | |||
| 1066 | if (ret < 0) | 1038 | if (ret < 0) |
| 1067 | goto err_out_curr_node; | 1039 | goto err_out_curr_node; |
| 1068 | 1040 | ||
| 1069 | lock_buffer(bh); | ||
| 1070 | nilfs_btree_node_init(btree, (struct nilfs_btree_node *)bh->b_data, | 1041 | nilfs_btree_node_init(btree, (struct nilfs_btree_node *)bh->b_data, |
| 1071 | 0, level, 0, NULL, NULL); | 1042 | 0, level, 0, NULL, NULL); |
| 1072 | unlock_buffer(bh); | ||
| 1073 | path[level].bp_sib_bh = bh; | 1043 | path[level].bp_sib_bh = bh; |
| 1074 | path[level].bp_op = nilfs_btree_grow; | 1044 | path[level].bp_op = nilfs_btree_grow; |
| 1075 | 1045 | ||
| @@ -1168,13 +1138,11 @@ static void nilfs_btree_do_delete(struct nilfs_btree *btree, | |||
| 1168 | struct nilfs_btree_node *node; | 1138 | struct nilfs_btree_node *node; |
| 1169 | 1139 | ||
| 1170 | if (level < nilfs_btree_height(btree) - 1) { | 1140 | if (level < nilfs_btree_height(btree) - 1) { |
| 1171 | lock_buffer(path[level].bp_bh); | ||
| 1172 | node = nilfs_btree_get_nonroot_node(path, level); | 1141 | node = nilfs_btree_get_nonroot_node(path, level); |
| 1173 | nilfs_btree_node_delete(btree, node, keyp, ptrp, | 1142 | nilfs_btree_node_delete(btree, node, keyp, ptrp, |
| 1174 | path[level].bp_index); | 1143 | path[level].bp_index); |
| 1175 | if (!buffer_dirty(path[level].bp_bh)) | 1144 | if (!buffer_dirty(path[level].bp_bh)) |
| 1176 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 1145 | nilfs_btnode_mark_dirty(path[level].bp_bh); |
| 1177 | unlock_buffer(path[level].bp_bh); | ||
| 1178 | if (path[level].bp_index == 0) | 1146 | if (path[level].bp_index == 0) |
| 1179 | nilfs_btree_promote_key(btree, path, level + 1, | 1147 | nilfs_btree_promote_key(btree, path, level + 1, |
| 1180 | nilfs_btree_node_get_key(node, 0)); | 1148 | nilfs_btree_node_get_key(node, 0)); |
| @@ -1194,9 +1162,6 @@ static void nilfs_btree_borrow_left(struct nilfs_btree *btree, | |||
| 1194 | 1162 | ||
| 1195 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); | 1163 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); |
| 1196 | 1164 | ||
| 1197 | lock_buffer(path[level].bp_bh); | ||
| 1198 | lock_buffer(path[level].bp_sib_bh); | ||
| 1199 | |||
| 1200 | node = nilfs_btree_get_nonroot_node(path, level); | 1165 | node = nilfs_btree_get_nonroot_node(path, level); |
| 1201 | left = nilfs_btree_get_sib_node(path, level); | 1166 | left = nilfs_btree_get_sib_node(path, level); |
| 1202 | nchildren = nilfs_btree_node_get_nchildren(node); | 1167 | nchildren = nilfs_btree_node_get_nchildren(node); |
| @@ -1211,9 +1176,6 @@ static void nilfs_btree_borrow_left(struct nilfs_btree *btree, | |||
| 1211 | if (!buffer_dirty(path[level].bp_sib_bh)) | 1176 | if (!buffer_dirty(path[level].bp_sib_bh)) |
| 1212 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 1177 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); |
| 1213 | 1178 | ||
| 1214 | unlock_buffer(path[level].bp_bh); | ||
| 1215 | unlock_buffer(path[level].bp_sib_bh); | ||
| 1216 | |||
| 1217 | nilfs_btree_promote_key(btree, path, level + 1, | 1179 | nilfs_btree_promote_key(btree, path, level + 1, |
| 1218 | nilfs_btree_node_get_key(node, 0)); | 1180 | nilfs_btree_node_get_key(node, 0)); |
| 1219 | 1181 | ||
| @@ -1231,9 +1193,6 @@ static void nilfs_btree_borrow_right(struct nilfs_btree *btree, | |||
| 1231 | 1193 | ||
| 1232 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); | 1194 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); |
| 1233 | 1195 | ||
| 1234 | lock_buffer(path[level].bp_bh); | ||
| 1235 | lock_buffer(path[level].bp_sib_bh); | ||
| 1236 | |||
| 1237 | node = nilfs_btree_get_nonroot_node(path, level); | 1196 | node = nilfs_btree_get_nonroot_node(path, level); |
| 1238 | right = nilfs_btree_get_sib_node(path, level); | 1197 | right = nilfs_btree_get_sib_node(path, level); |
| 1239 | nchildren = nilfs_btree_node_get_nchildren(node); | 1198 | nchildren = nilfs_btree_node_get_nchildren(node); |
| @@ -1248,9 +1207,6 @@ static void nilfs_btree_borrow_right(struct nilfs_btree *btree, | |||
| 1248 | if (!buffer_dirty(path[level].bp_sib_bh)) | 1207 | if (!buffer_dirty(path[level].bp_sib_bh)) |
| 1249 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 1208 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); |
| 1250 | 1209 | ||
| 1251 | unlock_buffer(path[level].bp_bh); | ||
| 1252 | unlock_buffer(path[level].bp_sib_bh); | ||
| 1253 | |||
| 1254 | path[level + 1].bp_index++; | 1210 | path[level + 1].bp_index++; |
| 1255 | nilfs_btree_promote_key(btree, path, level + 1, | 1211 | nilfs_btree_promote_key(btree, path, level + 1, |
| 1256 | nilfs_btree_node_get_key(right, 0)); | 1212 | nilfs_btree_node_get_key(right, 0)); |
| @@ -1269,9 +1225,6 @@ static void nilfs_btree_concat_left(struct nilfs_btree *btree, | |||
| 1269 | 1225 | ||
| 1270 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); | 1226 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); |
| 1271 | 1227 | ||
| 1272 | lock_buffer(path[level].bp_bh); | ||
| 1273 | lock_buffer(path[level].bp_sib_bh); | ||
| 1274 | |||
| 1275 | node = nilfs_btree_get_nonroot_node(path, level); | 1228 | node = nilfs_btree_get_nonroot_node(path, level); |
| 1276 | left = nilfs_btree_get_sib_node(path, level); | 1229 | left = nilfs_btree_get_sib_node(path, level); |
| 1277 | 1230 | ||
| @@ -1282,9 +1235,6 @@ static void nilfs_btree_concat_left(struct nilfs_btree *btree, | |||
| 1282 | if (!buffer_dirty(path[level].bp_sib_bh)) | 1235 | if (!buffer_dirty(path[level].bp_sib_bh)) |
| 1283 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 1236 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); |
| 1284 | 1237 | ||
| 1285 | unlock_buffer(path[level].bp_bh); | ||
| 1286 | unlock_buffer(path[level].bp_sib_bh); | ||
| 1287 | |||
| 1288 | nilfs_btnode_delete(path[level].bp_bh); | 1238 | nilfs_btnode_delete(path[level].bp_bh); |
| 1289 | path[level].bp_bh = path[level].bp_sib_bh; | 1239 | path[level].bp_bh = path[level].bp_sib_bh; |
| 1290 | path[level].bp_sib_bh = NULL; | 1240 | path[level].bp_sib_bh = NULL; |
| @@ -1300,9 +1250,6 @@ static void nilfs_btree_concat_right(struct nilfs_btree *btree, | |||
| 1300 | 1250 | ||
| 1301 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); | 1251 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); |
| 1302 | 1252 | ||
| 1303 | lock_buffer(path[level].bp_bh); | ||
| 1304 | lock_buffer(path[level].bp_sib_bh); | ||
| 1305 | |||
| 1306 | node = nilfs_btree_get_nonroot_node(path, level); | 1253 | node = nilfs_btree_get_nonroot_node(path, level); |
| 1307 | right = nilfs_btree_get_sib_node(path, level); | 1254 | right = nilfs_btree_get_sib_node(path, level); |
| 1308 | 1255 | ||
| @@ -1313,9 +1260,6 @@ static void nilfs_btree_concat_right(struct nilfs_btree *btree, | |||
| 1313 | if (!buffer_dirty(path[level].bp_bh)) | 1260 | if (!buffer_dirty(path[level].bp_bh)) |
| 1314 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 1261 | nilfs_btnode_mark_dirty(path[level].bp_bh); |
| 1315 | 1262 | ||
| 1316 | unlock_buffer(path[level].bp_bh); | ||
| 1317 | unlock_buffer(path[level].bp_sib_bh); | ||
| 1318 | |||
| 1319 | nilfs_btnode_delete(path[level].bp_sib_bh); | 1263 | nilfs_btnode_delete(path[level].bp_sib_bh); |
| 1320 | path[level].bp_sib_bh = NULL; | 1264 | path[level].bp_sib_bh = NULL; |
| 1321 | path[level + 1].bp_index++; | 1265 | path[level + 1].bp_index++; |
| @@ -1330,7 +1274,6 @@ static void nilfs_btree_shrink(struct nilfs_btree *btree, | |||
| 1330 | 1274 | ||
| 1331 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); | 1275 | nilfs_btree_do_delete(btree, path, level, keyp, ptrp); |
| 1332 | 1276 | ||
| 1333 | lock_buffer(path[level].bp_bh); | ||
| 1334 | root = nilfs_btree_get_root(btree); | 1277 | root = nilfs_btree_get_root(btree); |
| 1335 | child = nilfs_btree_get_nonroot_node(path, level); | 1278 | child = nilfs_btree_get_nonroot_node(path, level); |
| 1336 | 1279 | ||
| @@ -1338,7 +1281,6 @@ static void nilfs_btree_shrink(struct nilfs_btree *btree, | |||
| 1338 | nilfs_btree_node_set_level(root, level); | 1281 | nilfs_btree_node_set_level(root, level); |
| 1339 | n = nilfs_btree_node_get_nchildren(child); | 1282 | n = nilfs_btree_node_get_nchildren(child); |
| 1340 | nilfs_btree_node_move_left(btree, root, child, n); | 1283 | nilfs_btree_node_move_left(btree, root, child, n); |
| 1341 | unlock_buffer(path[level].bp_bh); | ||
| 1342 | 1284 | ||
| 1343 | nilfs_btnode_delete(path[level].bp_bh); | 1285 | nilfs_btnode_delete(path[level].bp_bh); |
| 1344 | path[level].bp_bh = NULL; | 1286 | path[level].bp_bh = NULL; |
| @@ -1713,7 +1655,6 @@ nilfs_btree_commit_convert_and_insert(struct nilfs_bmap *bmap, | |||
| 1713 | nilfs_bmap_commit_alloc_ptr(bmap, nreq, dat); | 1655 | nilfs_bmap_commit_alloc_ptr(bmap, nreq, dat); |
| 1714 | 1656 | ||
| 1715 | /* create child node at level 1 */ | 1657 | /* create child node at level 1 */ |
| 1716 | lock_buffer(bh); | ||
| 1717 | node = (struct nilfs_btree_node *)bh->b_data; | 1658 | node = (struct nilfs_btree_node *)bh->b_data; |
| 1718 | nilfs_btree_node_init(btree, node, 0, 1, n, keys, ptrs); | 1659 | nilfs_btree_node_init(btree, node, 0, 1, n, keys, ptrs); |
| 1719 | nilfs_btree_node_insert(btree, node, | 1660 | nilfs_btree_node_insert(btree, node, |
| @@ -1723,7 +1664,6 @@ nilfs_btree_commit_convert_and_insert(struct nilfs_bmap *bmap, | |||
| 1723 | if (!nilfs_bmap_dirty(bmap)) | 1664 | if (!nilfs_bmap_dirty(bmap)) |
| 1724 | nilfs_bmap_set_dirty(bmap); | 1665 | nilfs_bmap_set_dirty(bmap); |
| 1725 | 1666 | ||
| 1726 | unlock_buffer(bh); | ||
| 1727 | brelse(bh); | 1667 | brelse(bh); |
| 1728 | 1668 | ||
| 1729 | /* create root node at level 2 */ | 1669 | /* create root node at level 2 */ |
