struct ext4_extent_path *path)
{
if (path->block.lb_id)
- path->block.dirty = true;
+ ext4_bcache_set_dirty(path->block.buf);
else
inode_ref->dirty = true;
for (i = 0; i <= depth; i++, path++) {
if (path->block.lb_id) {
- if (path->block.dirty)
+ if (ext4_bcache_test_flag(path->block.buf, BC_DIRTY))
ext4_extent_block_csum_set(inode_ref,
path->header);
ext4_fsblk_t pblk __unused)
{
struct ext4_extent_tail *tail;
+ struct ext4_sblock *sb = &inode_ref->fs->sb;
const char *error_msg;
(void)error_msg;
}
tail = find_ext4_extent_tail(eh);
- struct ext4_sblock *sb = &inode_ref->fs->sb;
if (ext4_sb_feature_ro_com(sb, EXT4_FRO_COM_METADATA_CSUM)) {
if (tail->et_checksum != to_le32(ext4_ext_block_csum(inode_ref, eh))) {
- /* FIXME: Warning: extent checksum damaged? */
+ ext4_dbg(DEBUG_EXTENT,
+ DBG_WARN "Extent block checksum failed."
+ "Blocknr: %" PRIu64"\n",
+ pblk);
+
}
}
goto cleanup;
/* For write access.# */
- ret = ext4_block_get(inode_ref->fs->bdev, &bh, newblock);
+ ret = ext4_block_get_noread(inode_ref->fs->bdev, &bh, newblock);
if (ret != EOK)
goto cleanup;
} else if (bh.lb_id) {
/* If we got a sibling leaf. */
ext4_extent_block_csum_set(inode_ref, ext_block_hdr(&bh));
- bh.dirty = true;
+ ext4_bcache_set_dirty(bh.buf);
spt->path.p_block = ext4_idx_pblock(ix);
spt->path.depth = to_le16(eh->depth);
} else if (bh.lb_id) {
/* If we got a sibling leaf. */
ext4_extent_block_csum_set(inode_ref, ext_block_hdr(&bh));
- bh.dirty = true;
+ ext4_bcache_set_dirty(bh.buf);
spt->path.p_block = ext4_ext_pblock(ex);
spt->path.depth = to_le16(eh->depth);
return err;
/* # */
- err = ext4_block_get(inode_ref->fs->bdev, &bh, newblock);
+ err = ext4_block_get_noread(inode_ref->fs->bdev, &bh, newblock);
if (err != EOK) {
ext4_ext_free_blocks(inode_ref, newblock, 1, 0);
return err;
to_le16(ext4_ext_space_block(inode_ref));
neh->magic = to_le16(EXT4_EXTENT_MAGIC);
+ ext4_extent_block_csum_set(inode_ref, neh);
/* Update top-level index: num,max,pointer */
neh = ext_inode_hdr(inode_ref->inode);
}
neh->depth = to_le16(to_le16(neh->depth) + 1);
- ext4_extent_block_csum_set(inode_ref, neh);
- bh.dirty = true;
+ ext4_bcache_set_dirty(bh.buf);
inode_ref->dirty = true;
ext4_block_set(inode_ref->fs->bdev, &bh);
uint32_t block_size = ext4_sb_get_block_size(&inode_ref->fs->sb);
for (i = 0; i < blocks_count; i++) {
struct ext4_block bh = EXT4_BLOCK_ZERO();
- err = ext4_block_get(inode_ref->fs->bdev, &bh, block + i);
+ err = ext4_block_get_noread(inode_ref->fs->bdev, &bh, block + i);
if (err != EOK)
break;
memset(bh.data, 0, block_size);
- bh.dirty = true;
+ ext4_bcache_set_dirty(bh.buf);
err = ext4_block_set(inode_ref->fs->bdev, &bh);
if (err != EOK)
break;