hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/fs/nilfs2/gcinode.c
....@@ -73,10 +73,8 @@
7373 struct the_nilfs *nilfs = inode->i_sb->s_fs_info;
7474
7575 err = nilfs_dat_translate(nilfs->ns_dat, vbn, &pbn);
76
- if (unlikely(err)) { /* -EIO, -ENOMEM, -ENOENT */
77
- brelse(bh);
76
+ if (unlikely(err)) /* -EIO, -ENOMEM, -ENOENT */
7877 goto failed;
79
- }
8078 }
8179
8280 lock_buffer(bh);
....@@ -102,6 +100,8 @@
102100 failed:
103101 unlock_page(bh->b_page);
104102 put_page(bh->b_page);
103
+ if (unlikely(err))
104
+ brelse(bh);
105105 return err;
106106 }
107107
....@@ -126,9 +126,10 @@
126126 int nilfs_gccache_submit_read_node(struct inode *inode, sector_t pbn,
127127 __u64 vbn, struct buffer_head **out_bh)
128128 {
129
+ struct inode *btnc_inode = NILFS_I(inode)->i_assoc_inode;
129130 int ret;
130131
131
- ret = nilfs_btnode_submit_block(&NILFS_I(inode)->i_btnode_cache,
132
+ ret = nilfs_btnode_submit_block(btnc_inode->i_mapping,
132133 vbn ? : pbn, pbn, REQ_OP_READ, 0,
133134 out_bh, &pbn);
134135 if (ret == -EEXIST) /* internal code (cache hit) */
....@@ -142,7 +143,7 @@
142143 if (!buffer_uptodate(bh)) {
143144 struct inode *inode = bh->b_page->mapping->host;
144145
145
- nilfs_msg(inode->i_sb, KERN_ERR,
146
+ nilfs_err(inode->i_sb,
146147 "I/O error reading %s block for GC (ino=%lu, vblocknr=%llu)",
147148 buffer_nilfs_node(bh) ? "node" : "data",
148149 inode->i_ino, (unsigned long long)bh->b_blocknr);
....@@ -170,7 +171,7 @@
170171 ii->i_flags = 0;
171172 nilfs_bmap_init_gc(ii->i_bmap);
172173
173
- return 0;
174
+ return nilfs_attach_btree_node_cache(inode);
174175 }
175176
176177 /**
....@@ -185,7 +186,7 @@
185186 ii = list_first_entry(head, struct nilfs_inode_info, i_dirty);
186187 list_del_init(&ii->i_dirty);
187188 truncate_inode_pages(&ii->vfs_inode.i_data, 0);
188
- nilfs_btnode_cache_clear(&ii->i_btnode_cache);
189
+ nilfs_btnode_cache_clear(ii->i_assoc_inode->i_mapping);
189190 iput(&ii->vfs_inode);
190191 }
191192 }