diff options
author | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2011-05-04 23:56:51 -0400 |
---|---|---|
committer | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2011-05-10 09:21:57 -0400 |
commit | 5fc7b14177b1a1c2f2511aed62a4ca870d0332e7 (patch) | |
tree | f64f2b0f424e7506dd6bb07c133348a9796b2212 /fs | |
parent | aa405b1f4238401616e7d98620170b424b2dbefc (diff) |
nilfs2: use mark_buffer_dirty to mark btnode or meta data dirty
This replaces nilfs_mdt_mark_buffer_dirty and nilfs_btnode_mark_dirty
macros with mark_buffer_dirty and gets rid of nilfs_mark_buffer_dirty,
an own mark buffer dirty function.
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nilfs2/alloc.c | 12 | ||||
-rw-r--r-- | fs/nilfs2/btnode.c | 4 | ||||
-rw-r--r-- | fs/nilfs2/btnode.h | 3 | ||||
-rw-r--r-- | fs/nilfs2/btree.c | 38 | ||||
-rw-r--r-- | fs/nilfs2/cpfile.c | 24 | ||||
-rw-r--r-- | fs/nilfs2/dat.c | 4 | ||||
-rw-r--r-- | fs/nilfs2/gcinode.c | 12 | ||||
-rw-r--r-- | fs/nilfs2/ifile.c | 4 | ||||
-rw-r--r-- | fs/nilfs2/inode.c | 2 | ||||
-rw-r--r-- | fs/nilfs2/mdt.c | 4 | ||||
-rw-r--r-- | fs/nilfs2/mdt.h | 2 | ||||
-rw-r--r-- | fs/nilfs2/page.c | 13 | ||||
-rw-r--r-- | fs/nilfs2/page.h | 1 | ||||
-rw-r--r-- | fs/nilfs2/segment.c | 4 | ||||
-rw-r--r-- | fs/nilfs2/sufile.c | 22 |
15 files changed, 63 insertions, 86 deletions
diff --git a/fs/nilfs2/alloc.c b/fs/nilfs2/alloc.c index f7684483785e..eed4d7b26249 100644 --- a/fs/nilfs2/alloc.c +++ b/fs/nilfs2/alloc.c | |||
@@ -489,8 +489,8 @@ int nilfs_palloc_prepare_alloc_entry(struct inode *inode, | |||
489 | void nilfs_palloc_commit_alloc_entry(struct inode *inode, | 489 | void nilfs_palloc_commit_alloc_entry(struct inode *inode, |
490 | struct nilfs_palloc_req *req) | 490 | struct nilfs_palloc_req *req) |
491 | { | 491 | { |
492 | nilfs_mdt_mark_buffer_dirty(req->pr_bitmap_bh); | 492 | mark_buffer_dirty(req->pr_bitmap_bh); |
493 | nilfs_mdt_mark_buffer_dirty(req->pr_desc_bh); | 493 | mark_buffer_dirty(req->pr_desc_bh); |
494 | nilfs_mdt_mark_dirty(inode); | 494 | nilfs_mdt_mark_dirty(inode); |
495 | 495 | ||
496 | brelse(req->pr_bitmap_bh); | 496 | brelse(req->pr_bitmap_bh); |
@@ -527,8 +527,8 @@ void nilfs_palloc_commit_free_entry(struct inode *inode, | |||
527 | kunmap(req->pr_bitmap_bh->b_page); | 527 | kunmap(req->pr_bitmap_bh->b_page); |
528 | kunmap(req->pr_desc_bh->b_page); | 528 | kunmap(req->pr_desc_bh->b_page); |
529 | 529 | ||
530 | nilfs_mdt_mark_buffer_dirty(req->pr_desc_bh); | 530 | mark_buffer_dirty(req->pr_desc_bh); |
531 | nilfs_mdt_mark_buffer_dirty(req->pr_bitmap_bh); | 531 | mark_buffer_dirty(req->pr_bitmap_bh); |
532 | nilfs_mdt_mark_dirty(inode); | 532 | nilfs_mdt_mark_dirty(inode); |
533 | 533 | ||
534 | brelse(req->pr_bitmap_bh); | 534 | brelse(req->pr_bitmap_bh); |
@@ -683,8 +683,8 @@ int nilfs_palloc_freev(struct inode *inode, __u64 *entry_nrs, size_t nitems) | |||
683 | kunmap(bitmap_bh->b_page); | 683 | kunmap(bitmap_bh->b_page); |
684 | kunmap(desc_bh->b_page); | 684 | kunmap(desc_bh->b_page); |
685 | 685 | ||
686 | nilfs_mdt_mark_buffer_dirty(desc_bh); | 686 | mark_buffer_dirty(desc_bh); |
687 | nilfs_mdt_mark_buffer_dirty(bitmap_bh); | 687 | mark_buffer_dirty(bitmap_bh); |
688 | nilfs_mdt_mark_dirty(inode); | 688 | nilfs_mdt_mark_dirty(inode); |
689 | 689 | ||
690 | brelse(bitmap_bh); | 690 | brelse(bitmap_bh); |
diff --git a/fs/nilfs2/btnode.c b/fs/nilfs2/btnode.c index c353e4fa600c..a35ae35e6932 100644 --- a/fs/nilfs2/btnode.c +++ b/fs/nilfs2/btnode.c | |||
@@ -254,7 +254,7 @@ void nilfs_btnode_commit_change_key(struct address_space *btnc, | |||
254 | "invalid oldkey %lld (newkey=%lld)", | 254 | "invalid oldkey %lld (newkey=%lld)", |
255 | (unsigned long long)oldkey, | 255 | (unsigned long long)oldkey, |
256 | (unsigned long long)newkey); | 256 | (unsigned long long)newkey); |
257 | nilfs_btnode_mark_dirty(obh); | 257 | mark_buffer_dirty(obh); |
258 | 258 | ||
259 | spin_lock_irq(&btnc->tree_lock); | 259 | spin_lock_irq(&btnc->tree_lock); |
260 | radix_tree_delete(&btnc->page_tree, oldkey); | 260 | radix_tree_delete(&btnc->page_tree, oldkey); |
@@ -266,7 +266,7 @@ void nilfs_btnode_commit_change_key(struct address_space *btnc, | |||
266 | unlock_page(opage); | 266 | unlock_page(opage); |
267 | } else { | 267 | } else { |
268 | nilfs_copy_buffer(nbh, obh); | 268 | nilfs_copy_buffer(nbh, obh); |
269 | nilfs_btnode_mark_dirty(nbh); | 269 | mark_buffer_dirty(nbh); |
270 | 270 | ||
271 | nbh->b_blocknr = newkey; | 271 | nbh->b_blocknr = newkey; |
272 | ctxt->bh = nbh; | 272 | ctxt->bh = nbh; |
diff --git a/fs/nilfs2/btnode.h b/fs/nilfs2/btnode.h index 7de449c2e2a3..3a4dd2d8d3fc 100644 --- a/fs/nilfs2/btnode.h +++ b/fs/nilfs2/btnode.h | |||
@@ -50,7 +50,4 @@ void nilfs_btnode_commit_change_key(struct address_space *, | |||
50 | void nilfs_btnode_abort_change_key(struct address_space *, | 50 | void nilfs_btnode_abort_change_key(struct address_space *, |
51 | struct nilfs_btnode_chkey_ctxt *); | 51 | struct nilfs_btnode_chkey_ctxt *); |
52 | 52 | ||
53 | #define nilfs_btnode_mark_dirty(bh) nilfs_mark_buffer_dirty(bh) | ||
54 | |||
55 | |||
56 | #endif /* _NILFS_BTNODE_H */ | 53 | #endif /* _NILFS_BTNODE_H */ |
diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c index d451ae0e0bf3..7eafe468a29c 100644 --- a/fs/nilfs2/btree.c +++ b/fs/nilfs2/btree.c | |||
@@ -714,7 +714,7 @@ static void nilfs_btree_promote_key(struct nilfs_bmap *btree, | |||
714 | nilfs_btree_get_nonroot_node(path, level), | 714 | nilfs_btree_get_nonroot_node(path, level), |
715 | path[level].bp_index, key); | 715 | path[level].bp_index, key); |
716 | if (!buffer_dirty(path[level].bp_bh)) | 716 | if (!buffer_dirty(path[level].bp_bh)) |
717 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 717 | mark_buffer_dirty(path[level].bp_bh); |
718 | } while ((path[level].bp_index == 0) && | 718 | } while ((path[level].bp_index == 0) && |
719 | (++level < nilfs_btree_height(btree) - 1)); | 719 | (++level < nilfs_btree_height(btree) - 1)); |
720 | } | 720 | } |
@@ -739,7 +739,7 @@ static void nilfs_btree_do_insert(struct nilfs_bmap *btree, | |||
739 | nilfs_btree_node_insert(node, path[level].bp_index, | 739 | nilfs_btree_node_insert(node, path[level].bp_index, |
740 | *keyp, *ptrp, ncblk); | 740 | *keyp, *ptrp, ncblk); |
741 | if (!buffer_dirty(path[level].bp_bh)) | 741 | if (!buffer_dirty(path[level].bp_bh)) |
742 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 742 | mark_buffer_dirty(path[level].bp_bh); |
743 | 743 | ||
744 | if (path[level].bp_index == 0) | 744 | if (path[level].bp_index == 0) |
745 | nilfs_btree_promote_key(btree, path, level + 1, | 745 | nilfs_btree_promote_key(btree, path, level + 1, |
@@ -777,9 +777,9 @@ static void nilfs_btree_carry_left(struct nilfs_bmap *btree, | |||
777 | nilfs_btree_node_move_left(left, node, n, ncblk, ncblk); | 777 | nilfs_btree_node_move_left(left, node, n, ncblk, ncblk); |
778 | 778 | ||
779 | if (!buffer_dirty(path[level].bp_bh)) | 779 | if (!buffer_dirty(path[level].bp_bh)) |
780 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 780 | mark_buffer_dirty(path[level].bp_bh); |
781 | if (!buffer_dirty(path[level].bp_sib_bh)) | 781 | if (!buffer_dirty(path[level].bp_sib_bh)) |
782 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 782 | mark_buffer_dirty(path[level].bp_sib_bh); |
783 | 783 | ||
784 | nilfs_btree_promote_key(btree, path, level + 1, | 784 | nilfs_btree_promote_key(btree, path, level + 1, |
785 | nilfs_btree_node_get_key(node, 0)); | 785 | nilfs_btree_node_get_key(node, 0)); |
@@ -823,9 +823,9 @@ static void nilfs_btree_carry_right(struct nilfs_bmap *btree, | |||
823 | nilfs_btree_node_move_right(node, right, n, ncblk, ncblk); | 823 | nilfs_btree_node_move_right(node, right, n, ncblk, ncblk); |
824 | 824 | ||
825 | if (!buffer_dirty(path[level].bp_bh)) | 825 | if (!buffer_dirty(path[level].bp_bh)) |
826 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 826 | mark_buffer_dirty(path[level].bp_bh); |
827 | if (!buffer_dirty(path[level].bp_sib_bh)) | 827 | if (!buffer_dirty(path[level].bp_sib_bh)) |
828 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 828 | mark_buffer_dirty(path[level].bp_sib_bh); |
829 | 829 | ||
830 | path[level + 1].bp_index++; | 830 | path[level + 1].bp_index++; |
831 | nilfs_btree_promote_key(btree, path, level + 1, | 831 | nilfs_btree_promote_key(btree, path, level + 1, |
@@ -870,9 +870,9 @@ static void nilfs_btree_split(struct nilfs_bmap *btree, | |||
870 | nilfs_btree_node_move_right(node, right, n, ncblk, ncblk); | 870 | nilfs_btree_node_move_right(node, right, n, ncblk, ncblk); |
871 | 871 | ||
872 | if (!buffer_dirty(path[level].bp_bh)) | 872 | if (!buffer_dirty(path[level].bp_bh)) |
873 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 873 | mark_buffer_dirty(path[level].bp_bh); |
874 | if (!buffer_dirty(path[level].bp_sib_bh)) | 874 | if (!buffer_dirty(path[level].bp_sib_bh)) |
875 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 875 | mark_buffer_dirty(path[level].bp_sib_bh); |
876 | 876 | ||
877 | newkey = nilfs_btree_node_get_key(right, 0); | 877 | newkey = nilfs_btree_node_get_key(right, 0); |
878 | newptr = path[level].bp_newreq.bpr_ptr; | 878 | newptr = path[level].bp_newreq.bpr_ptr; |
@@ -919,7 +919,7 @@ static void nilfs_btree_grow(struct nilfs_bmap *btree, | |||
919 | nilfs_btree_node_set_level(root, level + 1); | 919 | nilfs_btree_node_set_level(root, level + 1); |
920 | 920 | ||
921 | if (!buffer_dirty(path[level].bp_sib_bh)) | 921 | if (!buffer_dirty(path[level].bp_sib_bh)) |
922 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 922 | mark_buffer_dirty(path[level].bp_sib_bh); |
923 | 923 | ||
924 | path[level].bp_bh = path[level].bp_sib_bh; | 924 | path[level].bp_bh = path[level].bp_sib_bh; |
925 | path[level].bp_sib_bh = NULL; | 925 | path[level].bp_sib_bh = NULL; |
@@ -1194,7 +1194,7 @@ static void nilfs_btree_do_delete(struct nilfs_bmap *btree, | |||
1194 | nilfs_btree_node_delete(node, path[level].bp_index, | 1194 | nilfs_btree_node_delete(node, path[level].bp_index, |
1195 | keyp, ptrp, ncblk); | 1195 | keyp, ptrp, ncblk); |
1196 | if (!buffer_dirty(path[level].bp_bh)) | 1196 | if (!buffer_dirty(path[level].bp_bh)) |
1197 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 1197 | mark_buffer_dirty(path[level].bp_bh); |
1198 | if (path[level].bp_index == 0) | 1198 | if (path[level].bp_index == 0) |
1199 | nilfs_btree_promote_key(btree, path, level + 1, | 1199 | nilfs_btree_promote_key(btree, path, level + 1, |
1200 | nilfs_btree_node_get_key(node, 0)); | 1200 | nilfs_btree_node_get_key(node, 0)); |
@@ -1226,9 +1226,9 @@ static void nilfs_btree_borrow_left(struct nilfs_bmap *btree, | |||
1226 | nilfs_btree_node_move_right(left, node, n, ncblk, ncblk); | 1226 | nilfs_btree_node_move_right(left, node, n, ncblk, ncblk); |
1227 | 1227 | ||
1228 | if (!buffer_dirty(path[level].bp_bh)) | 1228 | if (!buffer_dirty(path[level].bp_bh)) |
1229 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 1229 | mark_buffer_dirty(path[level].bp_bh); |
1230 | if (!buffer_dirty(path[level].bp_sib_bh)) | 1230 | if (!buffer_dirty(path[level].bp_sib_bh)) |
1231 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 1231 | mark_buffer_dirty(path[level].bp_sib_bh); |
1232 | 1232 | ||
1233 | nilfs_btree_promote_key(btree, path, level + 1, | 1233 | nilfs_btree_promote_key(btree, path, level + 1, |
1234 | nilfs_btree_node_get_key(node, 0)); | 1234 | nilfs_btree_node_get_key(node, 0)); |
@@ -1258,9 +1258,9 @@ static void nilfs_btree_borrow_right(struct nilfs_bmap *btree, | |||
1258 | nilfs_btree_node_move_left(node, right, n, ncblk, ncblk); | 1258 | nilfs_btree_node_move_left(node, right, n, ncblk, ncblk); |
1259 | 1259 | ||
1260 | if (!buffer_dirty(path[level].bp_bh)) | 1260 | if (!buffer_dirty(path[level].bp_bh)) |
1261 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 1261 | mark_buffer_dirty(path[level].bp_bh); |
1262 | if (!buffer_dirty(path[level].bp_sib_bh)) | 1262 | if (!buffer_dirty(path[level].bp_sib_bh)) |
1263 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 1263 | mark_buffer_dirty(path[level].bp_sib_bh); |
1264 | 1264 | ||
1265 | path[level + 1].bp_index++; | 1265 | path[level + 1].bp_index++; |
1266 | nilfs_btree_promote_key(btree, path, level + 1, | 1266 | nilfs_btree_promote_key(btree, path, level + 1, |
@@ -1289,7 +1289,7 @@ static void nilfs_btree_concat_left(struct nilfs_bmap *btree, | |||
1289 | nilfs_btree_node_move_left(left, node, n, ncblk, ncblk); | 1289 | nilfs_btree_node_move_left(left, node, n, ncblk, ncblk); |
1290 | 1290 | ||
1291 | if (!buffer_dirty(path[level].bp_sib_bh)) | 1291 | if (!buffer_dirty(path[level].bp_sib_bh)) |
1292 | nilfs_btnode_mark_dirty(path[level].bp_sib_bh); | 1292 | mark_buffer_dirty(path[level].bp_sib_bh); |
1293 | 1293 | ||
1294 | nilfs_btnode_delete(path[level].bp_bh); | 1294 | nilfs_btnode_delete(path[level].bp_bh); |
1295 | path[level].bp_bh = path[level].bp_sib_bh; | 1295 | path[level].bp_bh = path[level].bp_sib_bh; |
@@ -1315,7 +1315,7 @@ static void nilfs_btree_concat_right(struct nilfs_bmap *btree, | |||
1315 | nilfs_btree_node_move_left(node, right, n, ncblk, ncblk); | 1315 | nilfs_btree_node_move_left(node, right, n, ncblk, ncblk); |
1316 | 1316 | ||
1317 | if (!buffer_dirty(path[level].bp_bh)) | 1317 | if (!buffer_dirty(path[level].bp_bh)) |
1318 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 1318 | mark_buffer_dirty(path[level].bp_bh); |
1319 | 1319 | ||
1320 | nilfs_btnode_delete(path[level].bp_sib_bh); | 1320 | nilfs_btnode_delete(path[level].bp_sib_bh); |
1321 | path[level].bp_sib_bh = NULL; | 1321 | path[level].bp_sib_bh = NULL; |
@@ -1709,7 +1709,7 @@ nilfs_btree_commit_convert_and_insert(struct nilfs_bmap *btree, | |||
1709 | nilfs_btree_node_init(node, 0, 1, n, ncblk, keys, ptrs); | 1709 | nilfs_btree_node_init(node, 0, 1, n, ncblk, keys, ptrs); |
1710 | nilfs_btree_node_insert(node, n, key, dreq->bpr_ptr, ncblk); | 1710 | nilfs_btree_node_insert(node, n, key, dreq->bpr_ptr, ncblk); |
1711 | if (!buffer_dirty(bh)) | 1711 | if (!buffer_dirty(bh)) |
1712 | nilfs_btnode_mark_dirty(bh); | 1712 | mark_buffer_dirty(bh); |
1713 | if (!nilfs_bmap_dirty(btree)) | 1713 | if (!nilfs_bmap_dirty(btree)) |
1714 | nilfs_bmap_set_dirty(btree); | 1714 | nilfs_bmap_set_dirty(btree); |
1715 | 1715 | ||
@@ -1787,7 +1787,7 @@ static int nilfs_btree_propagate_p(struct nilfs_bmap *btree, | |||
1787 | { | 1787 | { |
1788 | while ((++level < nilfs_btree_height(btree) - 1) && | 1788 | while ((++level < nilfs_btree_height(btree) - 1) && |
1789 | !buffer_dirty(path[level].bp_bh)) | 1789 | !buffer_dirty(path[level].bp_bh)) |
1790 | nilfs_btnode_mark_dirty(path[level].bp_bh); | 1790 | mark_buffer_dirty(path[level].bp_bh); |
1791 | 1791 | ||
1792 | return 0; | 1792 | return 0; |
1793 | } | 1793 | } |
@@ -2229,7 +2229,7 @@ static int nilfs_btree_mark(struct nilfs_bmap *btree, __u64 key, int level) | |||
2229 | } | 2229 | } |
2230 | 2230 | ||
2231 | if (!buffer_dirty(bh)) | 2231 | if (!buffer_dirty(bh)) |
2232 | nilfs_btnode_mark_dirty(bh); | 2232 | mark_buffer_dirty(bh); |
2233 | brelse(bh); | 2233 | brelse(bh); |
2234 | if (!nilfs_bmap_dirty(btree)) | 2234 | if (!nilfs_bmap_dirty(btree)) |
2235 | nilfs_bmap_set_dirty(btree); | 2235 | nilfs_bmap_set_dirty(btree); |
diff --git a/fs/nilfs2/cpfile.c b/fs/nilfs2/cpfile.c index 5ff15a8a1024..c9b342c8b503 100644 --- a/fs/nilfs2/cpfile.c +++ b/fs/nilfs2/cpfile.c | |||
@@ -216,14 +216,14 @@ int nilfs_cpfile_get_checkpoint(struct inode *cpfile, | |||
216 | if (!nilfs_cpfile_is_in_first(cpfile, cno)) | 216 | if (!nilfs_cpfile_is_in_first(cpfile, cno)) |
217 | nilfs_cpfile_block_add_valid_checkpoints(cpfile, cp_bh, | 217 | nilfs_cpfile_block_add_valid_checkpoints(cpfile, cp_bh, |
218 | kaddr, 1); | 218 | kaddr, 1); |
219 | nilfs_mdt_mark_buffer_dirty(cp_bh); | 219 | mark_buffer_dirty(cp_bh); |
220 | 220 | ||
221 | kaddr = kmap_atomic(header_bh->b_page, KM_USER0); | 221 | kaddr = kmap_atomic(header_bh->b_page, KM_USER0); |
222 | header = nilfs_cpfile_block_get_header(cpfile, header_bh, | 222 | header = nilfs_cpfile_block_get_header(cpfile, header_bh, |
223 | kaddr); | 223 | kaddr); |
224 | le64_add_cpu(&header->ch_ncheckpoints, 1); | 224 | le64_add_cpu(&header->ch_ncheckpoints, 1); |
225 | kunmap_atomic(kaddr, KM_USER0); | 225 | kunmap_atomic(kaddr, KM_USER0); |
226 | nilfs_mdt_mark_buffer_dirty(header_bh); | 226 | mark_buffer_dirty(header_bh); |
227 | nilfs_mdt_mark_dirty(cpfile); | 227 | nilfs_mdt_mark_dirty(cpfile); |
228 | } | 228 | } |
229 | 229 | ||
@@ -326,7 +326,7 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile, | |||
326 | } | 326 | } |
327 | if (nicps > 0) { | 327 | if (nicps > 0) { |
328 | tnicps += nicps; | 328 | tnicps += nicps; |
329 | nilfs_mdt_mark_buffer_dirty(cp_bh); | 329 | mark_buffer_dirty(cp_bh); |
330 | nilfs_mdt_mark_dirty(cpfile); | 330 | nilfs_mdt_mark_dirty(cpfile); |
331 | if (!nilfs_cpfile_is_in_first(cpfile, cno)) { | 331 | if (!nilfs_cpfile_is_in_first(cpfile, cno)) { |
332 | count = | 332 | count = |
@@ -358,7 +358,7 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile, | |||
358 | header = nilfs_cpfile_block_get_header(cpfile, header_bh, | 358 | header = nilfs_cpfile_block_get_header(cpfile, header_bh, |
359 | kaddr); | 359 | kaddr); |
360 | le64_add_cpu(&header->ch_ncheckpoints, -(u64)tnicps); | 360 | le64_add_cpu(&header->ch_ncheckpoints, -(u64)tnicps); |
361 | nilfs_mdt_mark_buffer_dirty(header_bh); | 361 | mark_buffer_dirty(header_bh); |
362 | nilfs_mdt_mark_dirty(cpfile); | 362 | nilfs_mdt_mark_dirty(cpfile); |
363 | kunmap_atomic(kaddr, KM_USER0); | 363 | kunmap_atomic(kaddr, KM_USER0); |
364 | } | 364 | } |
@@ -671,10 +671,10 @@ static int nilfs_cpfile_set_snapshot(struct inode *cpfile, __u64 cno) | |||
671 | le64_add_cpu(&header->ch_nsnapshots, 1); | 671 | le64_add_cpu(&header->ch_nsnapshots, 1); |
672 | kunmap_atomic(kaddr, KM_USER0); | 672 | kunmap_atomic(kaddr, KM_USER0); |
673 | 673 | ||
674 | nilfs_mdt_mark_buffer_dirty(prev_bh); | 674 | mark_buffer_dirty(prev_bh); |
675 | nilfs_mdt_mark_buffer_dirty(curr_bh); | 675 | mark_buffer_dirty(curr_bh); |
676 | nilfs_mdt_mark_buffer_dirty(cp_bh); | 676 | mark_buffer_dirty(cp_bh); |
677 | nilfs_mdt_mark_buffer_dirty(header_bh); | 677 | mark_buffer_dirty(header_bh); |
678 | nilfs_mdt_mark_dirty(cpfile); | 678 | nilfs_mdt_mark_dirty(cpfile); |
679 | 679 | ||
680 | brelse(prev_bh); | 680 | brelse(prev_bh); |
@@ -774,10 +774,10 @@ static int nilfs_cpfile_clear_snapshot(struct inode *cpfile, __u64 cno) | |||
774 | le64_add_cpu(&header->ch_nsnapshots, -1); | 774 | le64_add_cpu(&header->ch_nsnapshots, -1); |
775 | kunmap_atomic(kaddr, KM_USER0); | 775 | kunmap_atomic(kaddr, KM_USER0); |
776 | 776 | ||
777 | nilfs_mdt_mark_buffer_dirty(next_bh); | 777 | mark_buffer_dirty(next_bh); |
778 | nilfs_mdt_mark_buffer_dirty(prev_bh); | 778 | mark_buffer_dirty(prev_bh); |
779 | nilfs_mdt_mark_buffer_dirty(cp_bh); | 779 | mark_buffer_dirty(cp_bh); |
780 | nilfs_mdt_mark_buffer_dirty(header_bh); | 780 | mark_buffer_dirty(header_bh); |
781 | nilfs_mdt_mark_dirty(cpfile); | 781 | nilfs_mdt_mark_dirty(cpfile); |
782 | 782 | ||
783 | brelse(prev_bh); | 783 | brelse(prev_bh); |
diff --git a/fs/nilfs2/dat.c b/fs/nilfs2/dat.c index 59e5fe742f7b..fcc2f869af16 100644 --- a/fs/nilfs2/dat.c +++ b/fs/nilfs2/dat.c | |||
@@ -54,7 +54,7 @@ static int nilfs_dat_prepare_entry(struct inode *dat, | |||
54 | static void nilfs_dat_commit_entry(struct inode *dat, | 54 | static void nilfs_dat_commit_entry(struct inode *dat, |
55 | struct nilfs_palloc_req *req) | 55 | struct nilfs_palloc_req *req) |
56 | { | 56 | { |
57 | nilfs_mdt_mark_buffer_dirty(req->pr_entry_bh); | 57 | mark_buffer_dirty(req->pr_entry_bh); |
58 | nilfs_mdt_mark_dirty(dat); | 58 | nilfs_mdt_mark_dirty(dat); |
59 | brelse(req->pr_entry_bh); | 59 | brelse(req->pr_entry_bh); |
60 | } | 60 | } |
@@ -361,7 +361,7 @@ int nilfs_dat_move(struct inode *dat, __u64 vblocknr, sector_t blocknr) | |||
361 | entry->de_blocknr = cpu_to_le64(blocknr); | 361 | entry->de_blocknr = cpu_to_le64(blocknr); |
362 | kunmap_atomic(kaddr, KM_USER0); | 362 | kunmap_atomic(kaddr, KM_USER0); |
363 | 363 | ||
364 | nilfs_mdt_mark_buffer_dirty(entry_bh); | 364 | mark_buffer_dirty(entry_bh); |
365 | nilfs_mdt_mark_dirty(dat); | 365 | nilfs_mdt_mark_dirty(dat); |
366 | 366 | ||
367 | brelse(entry_bh); | 367 | brelse(entry_bh); |
diff --git a/fs/nilfs2/gcinode.c b/fs/nilfs2/gcinode.c index 6e79ac0f49a1..08a07a218d26 100644 --- a/fs/nilfs2/gcinode.c +++ b/fs/nilfs2/gcinode.c | |||
@@ -157,15 +157,11 @@ int nilfs_gccache_wait_and_mark_dirty(struct buffer_head *bh) | |||
157 | if (buffer_dirty(bh)) | 157 | if (buffer_dirty(bh)) |
158 | return -EEXIST; | 158 | return -EEXIST; |
159 | 159 | ||
160 | if (buffer_nilfs_node(bh)) { | 160 | if (buffer_nilfs_node(bh) && nilfs_btree_broken_node_block(bh)) { |
161 | if (nilfs_btree_broken_node_block(bh)) { | 161 | clear_buffer_uptodate(bh); |
162 | clear_buffer_uptodate(bh); | 162 | return -EIO; |
163 | return -EIO; | ||
164 | } | ||
165 | nilfs_btnode_mark_dirty(bh); | ||
166 | } else { | ||
167 | nilfs_mark_buffer_dirty(bh); | ||
168 | } | 163 | } |
164 | mark_buffer_dirty(bh); | ||
169 | return 0; | 165 | return 0; |
170 | } | 166 | } |
171 | 167 | ||
diff --git a/fs/nilfs2/ifile.c b/fs/nilfs2/ifile.c index bfc73d3a30ed..684d76300a80 100644 --- a/fs/nilfs2/ifile.c +++ b/fs/nilfs2/ifile.c | |||
@@ -80,7 +80,7 @@ int nilfs_ifile_create_inode(struct inode *ifile, ino_t *out_ino, | |||
80 | return ret; | 80 | return ret; |
81 | } | 81 | } |
82 | nilfs_palloc_commit_alloc_entry(ifile, &req); | 82 | nilfs_palloc_commit_alloc_entry(ifile, &req); |
83 | nilfs_mdt_mark_buffer_dirty(req.pr_entry_bh); | 83 | mark_buffer_dirty(req.pr_entry_bh); |
84 | nilfs_mdt_mark_dirty(ifile); | 84 | nilfs_mdt_mark_dirty(ifile); |
85 | *out_ino = (ino_t)req.pr_entry_nr; | 85 | *out_ino = (ino_t)req.pr_entry_nr; |
86 | *out_bh = req.pr_entry_bh; | 86 | *out_bh = req.pr_entry_bh; |
@@ -128,7 +128,7 @@ int nilfs_ifile_delete_inode(struct inode *ifile, ino_t ino) | |||
128 | raw_inode->i_flags = 0; | 128 | raw_inode->i_flags = 0; |
129 | kunmap_atomic(kaddr, KM_USER0); | 129 | kunmap_atomic(kaddr, KM_USER0); |
130 | 130 | ||
131 | nilfs_mdt_mark_buffer_dirty(req.pr_entry_bh); | 131 | mark_buffer_dirty(req.pr_entry_bh); |
132 | brelse(req.pr_entry_bh); | 132 | brelse(req.pr_entry_bh); |
133 | 133 | ||
134 | nilfs_palloc_commit_free_entry(ifile, &req); | 134 | nilfs_palloc_commit_free_entry(ifile, &req); |
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c index 34ded2c24807..587f18432832 100644 --- a/fs/nilfs2/inode.c +++ b/fs/nilfs2/inode.c | |||
@@ -901,7 +901,7 @@ int nilfs_mark_inode_dirty(struct inode *inode) | |||
901 | return err; | 901 | return err; |
902 | } | 902 | } |
903 | nilfs_update_inode(inode, ibh); | 903 | nilfs_update_inode(inode, ibh); |
904 | nilfs_mdt_mark_buffer_dirty(ibh); | 904 | mark_buffer_dirty(ibh); |
905 | nilfs_mdt_mark_dirty(NILFS_I(inode)->i_root->ifile); | 905 | nilfs_mdt_mark_dirty(NILFS_I(inode)->i_root->ifile); |
906 | brelse(ibh); | 906 | brelse(ibh); |
907 | return 0; | 907 | return 0; |
diff --git a/fs/nilfs2/mdt.c b/fs/nilfs2/mdt.c index 6790ca689c17..800e8d78a83b 100644 --- a/fs/nilfs2/mdt.c +++ b/fs/nilfs2/mdt.c | |||
@@ -66,7 +66,7 @@ nilfs_mdt_insert_new_block(struct inode *inode, unsigned long block, | |||
66 | kunmap_atomic(kaddr, KM_USER0); | 66 | kunmap_atomic(kaddr, KM_USER0); |
67 | 67 | ||
68 | set_buffer_uptodate(bh); | 68 | set_buffer_uptodate(bh); |
69 | nilfs_mark_buffer_dirty(bh); | 69 | mark_buffer_dirty(bh); |
70 | nilfs_mdt_mark_dirty(inode); | 70 | nilfs_mdt_mark_dirty(inode); |
71 | return 0; | 71 | return 0; |
72 | } | 72 | } |
@@ -355,7 +355,7 @@ int nilfs_mdt_mark_block_dirty(struct inode *inode, unsigned long block) | |||
355 | err = nilfs_mdt_read_block(inode, block, 0, &bh); | 355 | err = nilfs_mdt_read_block(inode, block, 0, &bh); |
356 | if (unlikely(err)) | 356 | if (unlikely(err)) |
357 | return err; | 357 | return err; |
358 | nilfs_mark_buffer_dirty(bh); | 358 | mark_buffer_dirty(bh); |
359 | nilfs_mdt_mark_dirty(inode); | 359 | nilfs_mdt_mark_dirty(inode); |
360 | brelse(bh); | 360 | brelse(bh); |
361 | return 0; | 361 | return 0; |
diff --git a/fs/nilfs2/mdt.h b/fs/nilfs2/mdt.h index baea03663a3d..ab20a4baa50f 100644 --- a/fs/nilfs2/mdt.h +++ b/fs/nilfs2/mdt.h | |||
@@ -88,8 +88,6 @@ int nilfs_mdt_freeze_buffer(struct inode *inode, struct buffer_head *bh); | |||
88 | struct buffer_head *nilfs_mdt_get_frozen_buffer(struct inode *inode, | 88 | struct buffer_head *nilfs_mdt_get_frozen_buffer(struct inode *inode, |
89 | struct buffer_head *bh); | 89 | struct buffer_head *bh); |
90 | 90 | ||
91 | #define nilfs_mdt_mark_buffer_dirty(bh) nilfs_mark_buffer_dirty(bh) | ||
92 | |||
93 | static inline void nilfs_mdt_mark_dirty(struct inode *inode) | 91 | static inline void nilfs_mdt_mark_dirty(struct inode *inode) |
94 | { | 92 | { |
95 | if (!test_bit(NILFS_I_DIRTY, &NILFS_I(inode)->i_state)) | 93 | if (!test_bit(NILFS_I_DIRTY, &NILFS_I(inode)->i_state)) |
diff --git a/fs/nilfs2/page.c b/fs/nilfs2/page.c index 3f18f5c076e8..65221a04c6f0 100644 --- a/fs/nilfs2/page.c +++ b/fs/nilfs2/page.c | |||
@@ -58,19 +58,6 @@ __nilfs_get_page_block(struct page *page, unsigned long block, pgoff_t index, | |||
58 | return bh; | 58 | return bh; |
59 | } | 59 | } |
60 | 60 | ||
61 | /* | ||
62 | * Since the page cache of B-tree node pages or data page cache of pseudo | ||
63 | * inodes does not have a valid mapping->host pointer, calling | ||
64 | * mark_buffer_dirty() for their buffers causes a NULL pointer dereference; | ||
65 | * it calls __mark_inode_dirty(NULL) through __set_page_dirty(). | ||
66 | * To avoid this problem, the old style mark_buffer_dirty() is used instead. | ||
67 | */ | ||
68 | void nilfs_mark_buffer_dirty(struct buffer_head *bh) | ||
69 | { | ||
70 | if (!buffer_dirty(bh) && !test_set_buffer_dirty(bh)) | ||
71 | __set_page_dirty_nobuffers(bh->b_page); | ||
72 | } | ||
73 | |||
74 | struct buffer_head *nilfs_grab_buffer(struct inode *inode, | 61 | struct buffer_head *nilfs_grab_buffer(struct inode *inode, |
75 | struct address_space *mapping, | 62 | struct address_space *mapping, |
76 | unsigned long blkoff, | 63 | unsigned long blkoff, |
diff --git a/fs/nilfs2/page.h b/fs/nilfs2/page.h index e301e5661c36..fb7de71605a0 100644 --- a/fs/nilfs2/page.h +++ b/fs/nilfs2/page.h | |||
@@ -44,7 +44,6 @@ BUFFER_FNS(NILFS_Checked, nilfs_checked) /* buffer is verified */ | |||
44 | BUFFER_FNS(NILFS_Redirected, nilfs_redirected) /* redirected to a copy */ | 44 | BUFFER_FNS(NILFS_Redirected, nilfs_redirected) /* redirected to a copy */ |
45 | 45 | ||
46 | 46 | ||
47 | void nilfs_mark_buffer_dirty(struct buffer_head *bh); | ||
48 | int __nilfs_clear_page_dirty(struct page *); | 47 | int __nilfs_clear_page_dirty(struct page *); |
49 | 48 | ||
50 | struct buffer_head *nilfs_grab_buffer(struct inode *, struct address_space *, | 49 | struct buffer_head *nilfs_grab_buffer(struct inode *, struct address_space *, |
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index eeb1bc2c76ca..141646e88fb5 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c | |||
@@ -806,7 +806,7 @@ static int nilfs_segctor_create_checkpoint(struct nilfs_sc_info *sci) | |||
806 | /* The following code is duplicated with cpfile. But, it is | 806 | /* The following code is duplicated with cpfile. But, it is |
807 | needed to collect the checkpoint even if it was not newly | 807 | needed to collect the checkpoint even if it was not newly |
808 | created */ | 808 | created */ |
809 | nilfs_mdt_mark_buffer_dirty(bh_cp); | 809 | mark_buffer_dirty(bh_cp); |
810 | nilfs_mdt_mark_dirty(nilfs->ns_cpfile); | 810 | nilfs_mdt_mark_dirty(nilfs->ns_cpfile); |
811 | nilfs_cpfile_put_checkpoint( | 811 | nilfs_cpfile_put_checkpoint( |
812 | nilfs->ns_cpfile, nilfs->ns_cno, bh_cp); | 812 | nilfs->ns_cpfile, nilfs->ns_cno, bh_cp); |
@@ -1865,7 +1865,7 @@ static int nilfs_segctor_collect_dirty_files(struct nilfs_sc_info *sci, | |||
1865 | "failed to get inode block.\n"); | 1865 | "failed to get inode block.\n"); |
1866 | return err; | 1866 | return err; |
1867 | } | 1867 | } |
1868 | nilfs_mdt_mark_buffer_dirty(ibh); | 1868 | mark_buffer_dirty(ibh); |
1869 | nilfs_mdt_mark_dirty(ifile); | 1869 | nilfs_mdt_mark_dirty(ifile); |
1870 | spin_lock(&nilfs->ns_inode_lock); | 1870 | spin_lock(&nilfs->ns_inode_lock); |
1871 | if (likely(!ii->i_bh)) | 1871 | if (likely(!ii->i_bh)) |
diff --git a/fs/nilfs2/sufile.c b/fs/nilfs2/sufile.c index ce679cfc6dda..0a0aba617d8a 100644 --- a/fs/nilfs2/sufile.c +++ b/fs/nilfs2/sufile.c | |||
@@ -117,7 +117,7 @@ static void nilfs_sufile_mod_counter(struct buffer_head *header_bh, | |||
117 | le64_add_cpu(&header->sh_ndirtysegs, ndirtyadd); | 117 | le64_add_cpu(&header->sh_ndirtysegs, ndirtyadd); |
118 | kunmap_atomic(kaddr, KM_USER0); | 118 | kunmap_atomic(kaddr, KM_USER0); |
119 | 119 | ||
120 | nilfs_mdt_mark_buffer_dirty(header_bh); | 120 | mark_buffer_dirty(header_bh); |
121 | } | 121 | } |
122 | 122 | ||
123 | /** | 123 | /** |
@@ -377,8 +377,8 @@ int nilfs_sufile_alloc(struct inode *sufile, __u64 *segnump) | |||
377 | kunmap_atomic(kaddr, KM_USER0); | 377 | kunmap_atomic(kaddr, KM_USER0); |
378 | 378 | ||
379 | sui->ncleansegs--; | 379 | sui->ncleansegs--; |
380 | nilfs_mdt_mark_buffer_dirty(header_bh); | 380 | mark_buffer_dirty(header_bh); |
381 | nilfs_mdt_mark_buffer_dirty(su_bh); | 381 | mark_buffer_dirty(su_bh); |
382 | nilfs_mdt_mark_dirty(sufile); | 382 | nilfs_mdt_mark_dirty(sufile); |
383 | brelse(su_bh); | 383 | brelse(su_bh); |
384 | *segnump = segnum; | 384 | *segnump = segnum; |
@@ -421,7 +421,7 @@ void nilfs_sufile_do_cancel_free(struct inode *sufile, __u64 segnum, | |||
421 | nilfs_sufile_mod_counter(header_bh, -1, 1); | 421 | nilfs_sufile_mod_counter(header_bh, -1, 1); |
422 | NILFS_SUI(sufile)->ncleansegs--; | 422 | NILFS_SUI(sufile)->ncleansegs--; |
423 | 423 | ||
424 | nilfs_mdt_mark_buffer_dirty(su_bh); | 424 | mark_buffer_dirty(su_bh); |
425 | nilfs_mdt_mark_dirty(sufile); | 425 | nilfs_mdt_mark_dirty(sufile); |
426 | } | 426 | } |
427 | 427 | ||
@@ -452,7 +452,7 @@ void nilfs_sufile_do_scrap(struct inode *sufile, __u64 segnum, | |||
452 | nilfs_sufile_mod_counter(header_bh, clean ? (u64)-1 : 0, dirty ? 0 : 1); | 452 | nilfs_sufile_mod_counter(header_bh, clean ? (u64)-1 : 0, dirty ? 0 : 1); |
453 | NILFS_SUI(sufile)->ncleansegs -= clean; | 453 | NILFS_SUI(sufile)->ncleansegs -= clean; |
454 | 454 | ||
455 | nilfs_mdt_mark_buffer_dirty(su_bh); | 455 | mark_buffer_dirty(su_bh); |
456 | nilfs_mdt_mark_dirty(sufile); | 456 | nilfs_mdt_mark_dirty(sufile); |
457 | } | 457 | } |
458 | 458 | ||
@@ -478,7 +478,7 @@ void nilfs_sufile_do_free(struct inode *sufile, __u64 segnum, | |||
478 | sudirty = nilfs_segment_usage_dirty(su); | 478 | sudirty = nilfs_segment_usage_dirty(su); |
479 | nilfs_segment_usage_set_clean(su); | 479 | nilfs_segment_usage_set_clean(su); |
480 | kunmap_atomic(kaddr, KM_USER0); | 480 | kunmap_atomic(kaddr, KM_USER0); |
481 | nilfs_mdt_mark_buffer_dirty(su_bh); | 481 | mark_buffer_dirty(su_bh); |
482 | 482 | ||
483 | nilfs_sufile_mod_counter(header_bh, 1, sudirty ? (u64)-1 : 0); | 483 | nilfs_sufile_mod_counter(header_bh, 1, sudirty ? (u64)-1 : 0); |
484 | NILFS_SUI(sufile)->ncleansegs++; | 484 | NILFS_SUI(sufile)->ncleansegs++; |
@@ -498,7 +498,7 @@ int nilfs_sufile_mark_dirty(struct inode *sufile, __u64 segnum) | |||
498 | 498 | ||
499 | ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &bh); | 499 | ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &bh); |
500 | if (!ret) { | 500 | if (!ret) { |
501 | nilfs_mdt_mark_buffer_dirty(bh); | 501 | mark_buffer_dirty(bh); |
502 | nilfs_mdt_mark_dirty(sufile); | 502 | nilfs_mdt_mark_dirty(sufile); |
503 | brelse(bh); | 503 | brelse(bh); |
504 | } | 504 | } |
@@ -533,7 +533,7 @@ int nilfs_sufile_set_segment_usage(struct inode *sufile, __u64 segnum, | |||
533 | su->su_nblocks = cpu_to_le32(nblocks); | 533 | su->su_nblocks = cpu_to_le32(nblocks); |
534 | kunmap_atomic(kaddr, KM_USER0); | 534 | kunmap_atomic(kaddr, KM_USER0); |
535 | 535 | ||
536 | nilfs_mdt_mark_buffer_dirty(bh); | 536 | mark_buffer_dirty(bh); |
537 | nilfs_mdt_mark_dirty(sufile); | 537 | nilfs_mdt_mark_dirty(sufile); |
538 | brelse(bh); | 538 | brelse(bh); |
539 | 539 | ||
@@ -612,7 +612,7 @@ void nilfs_sufile_do_set_error(struct inode *sufile, __u64 segnum, | |||
612 | nilfs_sufile_mod_counter(header_bh, -1, 0); | 612 | nilfs_sufile_mod_counter(header_bh, -1, 0); |
613 | NILFS_SUI(sufile)->ncleansegs--; | 613 | NILFS_SUI(sufile)->ncleansegs--; |
614 | } | 614 | } |
615 | nilfs_mdt_mark_buffer_dirty(su_bh); | 615 | mark_buffer_dirty(su_bh); |
616 | nilfs_mdt_mark_dirty(sufile); | 616 | nilfs_mdt_mark_dirty(sufile); |
617 | } | 617 | } |
618 | 618 | ||
@@ -698,7 +698,7 @@ static int nilfs_sufile_truncate_range(struct inode *sufile, | |||
698 | } | 698 | } |
699 | kunmap_atomic(kaddr, KM_USER0); | 699 | kunmap_atomic(kaddr, KM_USER0); |
700 | if (nc > 0) { | 700 | if (nc > 0) { |
701 | nilfs_mdt_mark_buffer_dirty(su_bh); | 701 | mark_buffer_dirty(su_bh); |
702 | ncleaned += nc; | 702 | ncleaned += nc; |
703 | } | 703 | } |
704 | brelse(su_bh); | 704 | brelse(su_bh); |
@@ -777,7 +777,7 @@ int nilfs_sufile_resize(struct inode *sufile, __u64 newnsegs) | |||
777 | header->sh_ncleansegs = cpu_to_le64(sui->ncleansegs); | 777 | header->sh_ncleansegs = cpu_to_le64(sui->ncleansegs); |
778 | kunmap_atomic(kaddr, KM_USER0); | 778 | kunmap_atomic(kaddr, KM_USER0); |
779 | 779 | ||
780 | nilfs_mdt_mark_buffer_dirty(header_bh); | 780 | mark_buffer_dirty(header_bh); |
781 | nilfs_mdt_mark_dirty(sufile); | 781 | nilfs_mdt_mark_dirty(sufile); |
782 | nilfs_set_nsegments(nilfs, newnsegs); | 782 | nilfs_set_nsegments(nilfs, newnsegs); |
783 | 783 | ||