rc = ext4_fs_get_inode_ref(fs,
journal_ino,
&jbd_fs->inode_ref);
- if (rc != EOK) {
- memset(jbd_fs, 0, sizeof(struct jbd_fs));
+ if (rc != EOK)
return rc;
- }
+
rc = jbd_sb_read(jbd_fs, &jbd_fs->sb);
- if (rc != EOK) {
- memset(jbd_fs, 0, sizeof(struct jbd_fs));
- ext4_fs_put_inode_ref(&jbd_fs->inode_ref);
- return rc;
- }
+ if (rc != EOK)
+ goto Error;
+
if (!jbd_verify_sb(&jbd_fs->sb)) {
- memset(jbd_fs, 0, sizeof(struct jbd_fs));
- ext4_fs_put_inode_ref(&jbd_fs->inode_ref);
rc = EIO;
+ goto Error;
}
if (rc == EOK)
jbd_fs->bdev = fs->bdev;
+ return rc;
+Error:
+ ext4_fs_put_inode_ref(&jbd_fs->inode_ref);
+ memset(jbd_fs, 0, sizeof(struct jbd_fs));
+
return rc;
}
jbd_buf->block_rec->trans == trans)) {
int r;
struct ext4_block jbd_block = EXT4_BLOCK_ZERO();
- ext4_assert(jbd_block_get(journal->jbd_fs,
+ r = jbd_block_get(journal->jbd_fs,
&jbd_block,
- jbd_buf->jbd_lba) == EOK);
+ jbd_buf->jbd_lba);
+ ext4_assert(r == EOK);
memcpy(tmp_data, jbd_block.data,
journal->block_size);
ext4_block_set(fs->bdev, &jbd_block);
jbd_buf_dirty);
if (jbd_buf) {
if (!revoke) {
- ext4_assert(ext4_block_get_noread(fs->bdev,
+ int r;
+ r = ext4_block_get_noread(fs->bdev,
&block,
- block_rec->lba) == EOK);
- ext4_assert(jbd_block_get(journal->jbd_fs,
+ block_rec->lba);
+ ext4_assert(r == EOK);
+ r = jbd_block_get(journal->jbd_fs,
&jbd_block,
- jbd_buf->jbd_lba) == EOK);
+ jbd_buf->jbd_lba);
+ ext4_assert(r == EOK);
memcpy(block.data, jbd_block.data,
journal->block_size);
TAILQ_REMOVE(&journal->cp_queue, trans, trans_node);
jbd_journal_free_trans(journal, trans, false);
- jbd_journal_purge_cp_trans(journal, false, true);
+ jbd_journal_purge_cp_trans(journal, false, false);
jbd_journal_write_sb(journal);
jbd_write_sb(journal->jbd_fs);
}