forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/fs/nilfs2/btree.c
....@@ -58,7 +58,8 @@
5858 static int nilfs_btree_get_new_block(const struct nilfs_bmap *btree,
5959 __u64 ptr, struct buffer_head **bhp)
6060 {
61
- struct address_space *btnc = &NILFS_BMAP_I(btree)->i_btnode_cache;
61
+ struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode;
62
+ struct address_space *btnc = btnc_inode->i_mapping;
6263 struct buffer_head *bh;
6364
6465 bh = nilfs_btnode_create_block(btnc, ptr);
....@@ -351,10 +352,10 @@
351352 (flags & NILFS_BTREE_NODE_ROOT) ||
352353 nchildren < 0 ||
353354 nchildren > NILFS_BTREE_NODE_NCHILDREN_MAX(size))) {
354
- nilfs_msg(inode->i_sb, KERN_CRIT,
355
- "bad btree node (ino=%lu, blocknr=%llu): level = %d, flags = 0x%x, nchildren = %d",
356
- inode->i_ino, (unsigned long long)blocknr, level,
357
- flags, nchildren);
355
+ nilfs_crit(inode->i_sb,
356
+ "bad btree node (ino=%lu, blocknr=%llu): level = %d, flags = 0x%x, nchildren = %d",
357
+ inode->i_ino, (unsigned long long)blocknr, level,
358
+ flags, nchildren);
358359 ret = 1;
359360 }
360361 return ret;
....@@ -381,9 +382,9 @@
381382 level >= NILFS_BTREE_LEVEL_MAX ||
382383 nchildren < 0 ||
383384 nchildren > NILFS_BTREE_ROOT_NCHILDREN_MAX)) {
384
- nilfs_msg(inode->i_sb, KERN_CRIT,
385
- "bad btree root (ino=%lu): level = %d, flags = 0x%x, nchildren = %d",
386
- inode->i_ino, level, flags, nchildren);
385
+ nilfs_crit(inode->i_sb,
386
+ "bad btree root (ino=%lu): level = %d, flags = 0x%x, nchildren = %d",
387
+ inode->i_ino, level, flags, nchildren);
387388 ret = 1;
388389 }
389390 return ret;
....@@ -450,10 +451,10 @@
450451 {
451452 if (unlikely(nilfs_btree_node_get_level(node) != level)) {
452453 dump_stack();
453
- nilfs_msg(btree->b_inode->i_sb, KERN_CRIT,
454
- "btree level mismatch (ino=%lu): %d != %d",
455
- btree->b_inode->i_ino,
456
- nilfs_btree_node_get_level(node), level);
454
+ nilfs_crit(btree->b_inode->i_sb,
455
+ "btree level mismatch (ino=%lu): %d != %d",
456
+ btree->b_inode->i_ino,
457
+ nilfs_btree_node_get_level(node), level);
457458 return 1;
458459 }
459460 return 0;
....@@ -470,7 +471,8 @@
470471 struct buffer_head **bhp,
471472 const struct nilfs_btree_readahead_info *ra)
472473 {
473
- struct address_space *btnc = &NILFS_BMAP_I(btree)->i_btnode_cache;
474
+ struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode;
475
+ struct address_space *btnc = btnc_inode->i_mapping;
474476 struct buffer_head *bh, *ra_bh;
475477 sector_t submit_ptr = 0;
476478 int ret;
....@@ -508,7 +510,7 @@
508510
509511 out_no_wait:
510512 if (!buffer_uptodate(bh)) {
511
- nilfs_msg(btree->b_inode->i_sb, KERN_ERR,
513
+ nilfs_err(btree->b_inode->i_sb,
512514 "I/O error reading b-tree node block (ino=%lu, blocknr=%llu)",
513515 btree->b_inode->i_ino, (unsigned long long)ptr);
514516 brelse(bh);
....@@ -1742,6 +1744,10 @@
17421744 dat = nilfs_bmap_get_dat(btree);
17431745 }
17441746
1747
+ ret = nilfs_attach_btree_node_cache(&NILFS_BMAP_I(btree)->vfs_inode);
1748
+ if (ret < 0)
1749
+ return ret;
1750
+
17451751 ret = nilfs_bmap_prepare_alloc_ptr(btree, dreq, dat);
17461752 if (ret < 0)
17471753 return ret;
....@@ -1914,7 +1920,7 @@
19141920 path[level].bp_ctxt.newkey = path[level].bp_newreq.bpr_ptr;
19151921 path[level].bp_ctxt.bh = path[level].bp_bh;
19161922 ret = nilfs_btnode_prepare_change_key(
1917
- &NILFS_BMAP_I(btree)->i_btnode_cache,
1923
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
19181924 &path[level].bp_ctxt);
19191925 if (ret < 0) {
19201926 nilfs_dat_abort_update(dat,
....@@ -1940,7 +1946,7 @@
19401946
19411947 if (buffer_nilfs_node(path[level].bp_bh)) {
19421948 nilfs_btnode_commit_change_key(
1943
- &NILFS_BMAP_I(btree)->i_btnode_cache,
1949
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
19441950 &path[level].bp_ctxt);
19451951 path[level].bp_bh = path[level].bp_ctxt.bh;
19461952 }
....@@ -1959,7 +1965,7 @@
19591965 &path[level].bp_newreq.bpr_req);
19601966 if (buffer_nilfs_node(path[level].bp_bh))
19611967 nilfs_btnode_abort_change_key(
1962
- &NILFS_BMAP_I(btree)->i_btnode_cache,
1968
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
19631969 &path[level].bp_ctxt);
19641970 }
19651971
....@@ -2074,10 +2080,10 @@
20742080 ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0);
20752081 if (ret < 0) {
20762082 if (unlikely(ret == -ENOENT))
2077
- nilfs_msg(btree->b_inode->i_sb, KERN_CRIT,
2078
- "writing node/leaf block does not appear in b-tree (ino=%lu) at key=%llu, level=%d",
2079
- btree->b_inode->i_ino,
2080
- (unsigned long long)key, level);
2083
+ nilfs_crit(btree->b_inode->i_sb,
2084
+ "writing node/leaf block does not appear in b-tree (ino=%lu) at key=%llu, level=%d",
2085
+ btree->b_inode->i_ino,
2086
+ (unsigned long long)key, level);
20812087 goto out;
20822088 }
20832089
....@@ -2114,11 +2120,11 @@
21142120 if (level < NILFS_BTREE_LEVEL_NODE_MIN ||
21152121 level >= NILFS_BTREE_LEVEL_MAX) {
21162122 dump_stack();
2117
- nilfs_msg(btree->b_inode->i_sb, KERN_WARNING,
2118
- "invalid btree level: %d (key=%llu, ino=%lu, blocknr=%llu)",
2119
- level, (unsigned long long)key,
2120
- btree->b_inode->i_ino,
2121
- (unsigned long long)bh->b_blocknr);
2123
+ nilfs_warn(btree->b_inode->i_sb,
2124
+ "invalid btree level: %d (key=%llu, ino=%lu, blocknr=%llu)",
2125
+ level, (unsigned long long)key,
2126
+ btree->b_inode->i_ino,
2127
+ (unsigned long long)bh->b_blocknr);
21222128 return;
21232129 }
21242130
....@@ -2135,7 +2141,8 @@
21352141 static void nilfs_btree_lookup_dirty_buffers(struct nilfs_bmap *btree,
21362142 struct list_head *listp)
21372143 {
2138
- struct address_space *btcache = &NILFS_BMAP_I(btree)->i_btnode_cache;
2144
+ struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode;
2145
+ struct address_space *btcache = btnc_inode->i_mapping;
21392146 struct list_head lists[NILFS_BTREE_LEVEL_MAX];
21402147 struct pagevec pvec;
21412148 struct buffer_head *bh, *head;
....@@ -2189,12 +2196,12 @@
21892196 path[level].bp_ctxt.newkey = blocknr;
21902197 path[level].bp_ctxt.bh = *bh;
21912198 ret = nilfs_btnode_prepare_change_key(
2192
- &NILFS_BMAP_I(btree)->i_btnode_cache,
2199
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
21932200 &path[level].bp_ctxt);
21942201 if (ret < 0)
21952202 return ret;
21962203 nilfs_btnode_commit_change_key(
2197
- &NILFS_BMAP_I(btree)->i_btnode_cache,
2204
+ NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping,
21982205 &path[level].bp_ctxt);
21992206 *bh = path[level].bp_ctxt.bh;
22002207 }
....@@ -2399,6 +2406,10 @@
23992406
24002407 if (nilfs_btree_root_broken(nilfs_btree_get_root(bmap), bmap->b_inode))
24012408 ret = -EIO;
2409
+ else
2410
+ ret = nilfs_attach_btree_node_cache(
2411
+ &NILFS_BMAP_I(bmap)->vfs_inode);
2412
+
24022413 return ret;
24032414 }
24042415