ext4_debug: eliminate warning messages when assert is disabled.
[lwext4.git] / lwext4 / ext4_fs.c
index 75929fdfd19792ea5a823aebc1c82d1d90543206..1d807f2821dd002814e71eeef404c990d783dfba 100644 (file)
@@ -44,7 +44,7 @@
 #include "ext4_errno.h"
 #include "ext4_blockdev.h"
 #include "ext4_super.h"
-#include "ext4_crc32c.h"
+#include "ext4_crc32.h"
 #include "ext4_debug.h"
 #include "ext4_block_group.h"
 #include "ext4_balloc.h"
@@ -226,11 +226,11 @@ int ext4_fs_check_features(struct ext4_fs *fs, bool *read_only)
        }
 
        /*Check features_read_only*/
-       v = (ext4_get32(&fs->sb, features_read_only) &
-            (~CONFIG_SUPPORTED_FRO_COM));
+       v = ext4_get32(&fs->sb, features_read_only);
+       v &= ~CONFIG_SUPPORTED_FRO_COM;
        if (v) {
                ext4_dbg(DEBUG_FS, DBG_WARN
-                               "sblock has unsupported features read only:\n");
+                       "sblock has unsupported features read only:\n");
                ext4_fs_debug_features_ro(v);
                *read_only = true;
                return EOK;
@@ -245,9 +245,8 @@ int ext4_fs_check_features(struct ext4_fs *fs, bool *read_only)
  * @param bgid    block group id
  * @return Error code
  */
-static bool ext4_block_in_group(struct ext4_sblock *s,
-                              ext4_fsblk_t baddr,
-                              uint32_t bgid)
+static bool ext4_block_in_group(struct ext4_sblock *s, ext4_fsblk_t baddr,
+                               uint32_t bgid)
 {
        uint32_t actual_bgid;
        actual_bgid = ext4_balloc_get_bgid_of_block(s, baddr);
@@ -303,7 +302,7 @@ static int ext4_fs_init_block_bitmap(struct ext4_block_group_ref *bg_ref)
        uint32_t inode_table_bcnt = inodes_per_group * inode_size / block_size;
 
        struct ext4_block block_bitmap;
-       rc = ext4_block_get_noread(bg_ref->fs->bdev, &block_bitmap, bmp_blk);
+       rc = ext4_trans_block_get_noread(bg_ref->fs->bdev, &block_bitmap, bmp_blk);
        if (rc != EOK)
                return rc;
 
@@ -357,7 +356,7 @@ static int ext4_fs_init_block_bitmap(struct ext4_block_group_ref *bg_ref)
          * of bitmap ), set rest of the block bitmap to 1
          */
         ext4_fs_mark_bitmap_end(group_blocks, block_size * 8, block_bitmap.data);
-       block_bitmap.dirty = true;
+       ext4_trans_set_block_dirty(block_bitmap.buf);
 
        ext4_balloc_set_bitmap_csum(sb, bg_ref->block_group, block_bitmap.data);
        bg_ref->dirty = true;
@@ -380,7 +379,7 @@ static int ext4_fs_init_inode_bitmap(struct ext4_block_group_ref *bg_ref)
        ext4_fsblk_t bitmap_block_addr = ext4_bg_get_inode_bitmap(bg, sb);
 
        struct ext4_block b;
-       rc = ext4_block_get_noread(bg_ref->fs->bdev, &b, bitmap_block_addr);
+       rc = ext4_trans_block_get_noread(bg_ref->fs->bdev, &b, bitmap_block_addr);
        if (rc != EOK)
                return rc;
 
@@ -400,7 +399,7 @@ static int ext4_fs_init_inode_bitmap(struct ext4_block_group_ref *bg_ref)
        if (i < end_bit)
                memset(b.data + (i >> 3), 0xff, (end_bit - i) >> 3);
 
-       b.dirty = true;
+       ext4_trans_set_block_dirty(b.buf);
 
        ext4_ialloc_set_bitmap_csum(sb, bg, b.data);
        bg_ref->dirty = true;
@@ -436,12 +435,12 @@ static int ext4_fs_init_inode_table(struct ext4_block_group_ref *bg_ref)
        /* Initialization of all itable blocks */
        for (fblock = first_block; fblock <= last_block; ++fblock) {
                struct ext4_block b;
-               int rc = ext4_block_get_noread(bg_ref->fs->bdev, &b, fblock);
+               int rc = ext4_trans_block_get_noread(bg_ref->fs->bdev, &b, fblock);
                if (rc != EOK)
                        return rc;
 
                memset(b.data, 0, block_size);
-               b.dirty = true;
+               ext4_trans_set_block_dirty(b.buf);
 
                ext4_block_set(bg_ref->fs->bdev, &b);
                if (rc != EOK)
@@ -456,14 +455,13 @@ static ext4_fsblk_t ext4_fs_get_descriptor_block(struct ext4_sblock *s,
                                             uint32_t dsc_per_block)
 {
        uint32_t first_meta_bg, dsc_id;
-
        int has_super = 0;
-
        dsc_id = bgid / dsc_per_block;
        first_meta_bg = ext4_sb_first_meta_bg(s);
 
-       if (!ext4_sb_feature_incom(s, EXT4_FINCOM_META_BG) ||
-           dsc_id < first_meta_bg)
+       bool meta_bg = ext4_sb_feature_incom(s, EXT4_FINCOM_META_BG);
+
+       if (!meta_bg || dsc_id < first_meta_bg)
                return ext4_get32(s, first_data_block) + dsc_id + 1;
 
        if (ext4_sb_is_super_in_bg(s, bgid))
@@ -498,11 +496,9 @@ static uint16_t ext4_fs_bg_checksum(struct ext4_sblock *sb, uint32_t bgid,
                checksum = ext4_crc32c(EXT4_CRC32_INIT, sb->uuid,
                                sizeof(sb->uuid));
                /* Then calculate crc32 checksum against bgid */
-               checksum = ext4_crc32c(checksum, &le32_bgid,
-                                    sizeof(bgid));
+               checksum = ext4_crc32c(checksum, &le32_bgid, sizeof(bgid));
                /* Finally calculate crc32 checksum against block_group_desc */
-               checksum = ext4_crc32c(checksum, bg,
-                                    ext4_sb_get_desc_size(sb));
+               checksum = ext4_crc32c(checksum, bg, ext4_sb_get_desc_size(sb));
                bg->checksum = orig_checksum;
 
                crc = checksum & 0xFFFF;
@@ -516,14 +512,13 @@ static uint16_t ext4_fs_bg_checksum(struct ext4_sblock *sb, uint32_t bgid,
                uint32_t offset = (uint32_t)(checksum - base);
 
                /* Convert block group index to little endian */
-               uint32_t le_group = to_le32(bgid);
+               uint32_t group = to_le32(bgid);
 
                /* Initialization */
                crc = ext4_bg_crc16(~0, sb->uuid, sizeof(sb->uuid));
 
                /* Include index of block group */
-               crc =
-                   ext4_bg_crc16(crc, (uint8_t *)&le_group, sizeof(le_group));
+               crc = ext4_bg_crc16(crc, (uint8_t *)&group, sizeof(group));
 
                /* Compute crc from the first part (stop before checksum field)
                 */
@@ -534,10 +529,12 @@ static uint16_t ext4_fs_bg_checksum(struct ext4_sblock *sb, uint32_t bgid,
 
                /* Checksum of the rest of block group descriptor */
                if ((ext4_sb_feature_incom(sb, EXT4_FINCOM_64BIT)) &&
-                   (offset < ext4_sb_get_desc_size(sb)))
+                   (offset < ext4_sb_get_desc_size(sb))) {
 
-                       crc = ext4_bg_crc16(crc, ((uint8_t *)bg) + offset,
-                                           ext4_sb_get_desc_size(sb) - offset);
+                       const uint8_t *start = ((uint8_t *)bg) + offset;
+                       size_t len = ext4_sb_get_desc_size(sb) - offset;
+                       crc = ext4_bg_crc16(crc, start, len);
+               }
        }
        return crc;
 }
@@ -550,10 +547,7 @@ static bool ext4_fs_verify_bg_csum(struct ext4_sblock *sb,
        if (!ext4_sb_feature_ro_com(sb, EXT4_FRO_COM_METADATA_CSUM))
                return true;
 
-       return ext4_fs_bg_checksum(sb,
-                                  bgid,
-                                  bg) ==
-               to_le16(bg->checksum);
+       return ext4_fs_bg_checksum(sb, bgid, bg) == to_le16(bg->checksum);
 }
 #else
 #define ext4_fs_verify_bg_csum(...) true
@@ -563,18 +557,16 @@ int ext4_fs_get_block_group_ref(struct ext4_fs *fs, uint32_t bgid,
                                struct ext4_block_group_ref *ref)
 {
        /* Compute number of descriptors, that fits in one data block */
-       uint32_t dsc_per_block =
-           ext4_sb_get_block_size(&fs->sb) / ext4_sb_get_desc_size(&fs->sb);
+       uint32_t block_size = ext4_sb_get_block_size(&fs->sb);
+       uint32_t dsc_cnt = block_size / ext4_sb_get_desc_size(&fs->sb);
 
        /* Block group descriptor table starts at the next block after
         * superblock */
-       uint64_t block_id =
-           ext4_fs_get_descriptor_block(&fs->sb, bgid, dsc_per_block);
+       uint64_t block_id = ext4_fs_get_descriptor_block(&fs->sb, bgid, dsc_cnt);
 
-       uint32_t offset =
-           (bgid % dsc_per_block) * ext4_sb_get_desc_size(&fs->sb);
+       uint32_t offset = (bgid % dsc_cnt) * ext4_sb_get_desc_size(&fs->sb);
 
-       int rc = ext4_block_get(fs->bdev, &ref->block, block_id);
+       int rc = ext4_trans_block_get(fs->bdev, &ref->block, block_id);
        if (rc != EOK)
                return rc;
 
@@ -582,48 +574,42 @@ int ext4_fs_get_block_group_ref(struct ext4_fs *fs, uint32_t bgid,
        ref->fs = fs;
        ref->index = bgid;
        ref->dirty = false;
+       struct ext4_bgroup *bg = ref->block_group;
 
-       if (!ext4_fs_verify_bg_csum(&fs->sb,
-                                   bgid,
-                                   ref->block_group)) {
+       if (!ext4_fs_verify_bg_csum(&fs->sb, bgid, bg)) {
                ext4_dbg(DEBUG_FS,
                         DBG_WARN "Block group descriptor checksum failed."
                         "Block group index: %" PRIu32"\n",
                         bgid);
        }
 
-       if (ext4_bg_has_flag(ref->block_group, EXT4_BLOCK_GROUP_BLOCK_UNINIT)) {
+       if (ext4_bg_has_flag(bg, EXT4_BLOCK_GROUP_BLOCK_UNINIT)) {
                rc = ext4_fs_init_block_bitmap(ref);
                if (rc != EOK) {
                        ext4_block_set(fs->bdev, &ref->block);
                        return rc;
                }
-               ext4_bg_clear_flag(ref->block_group,
-                                  EXT4_BLOCK_GROUP_BLOCK_UNINIT);
-
+               ext4_bg_clear_flag(bg, EXT4_BLOCK_GROUP_BLOCK_UNINIT);
                ref->dirty = true;
        }
 
-       if (ext4_bg_has_flag(ref->block_group, EXT4_BLOCK_GROUP_INODE_UNINIT)) {
+       if (ext4_bg_has_flag(bg, EXT4_BLOCK_GROUP_INODE_UNINIT)) {
                rc = ext4_fs_init_inode_bitmap(ref);
                if (rc != EOK) {
                        ext4_block_set(ref->fs->bdev, &ref->block);
                        return rc;
                }
 
-               ext4_bg_clear_flag(ref->block_group,
-                                  EXT4_BLOCK_GROUP_INODE_UNINIT);
+               ext4_bg_clear_flag(bg, EXT4_BLOCK_GROUP_INODE_UNINIT);
 
-               if (!ext4_bg_has_flag(ref->block_group,
-                                     EXT4_BLOCK_GROUP_ITABLE_ZEROED)) {
+               if (!ext4_bg_has_flag(bg, EXT4_BLOCK_GROUP_ITABLE_ZEROED)) {
                        rc = ext4_fs_init_inode_table(ref);
                        if (rc != EOK) {
                                ext4_block_set(fs->bdev, &ref->block);
                                return rc;
                        }
 
-                       ext4_bg_set_flag(ref->block_group,
-                                        EXT4_BLOCK_GROUP_ITABLE_ZEROED);
+                       ext4_bg_set_flag(bg, EXT4_BLOCK_GROUP_ITABLE_ZEROED);
                }
 
                ref->dirty = true;
@@ -637,13 +623,13 @@ int ext4_fs_put_block_group_ref(struct ext4_block_group_ref *ref)
        /* Check if reference modified */
        if (ref->dirty) {
                /* Compute new checksum of block group */
-               uint16_t checksum = ext4_fs_bg_checksum(
-                   &ref->fs->sb, ref->index, ref->block_group);
-
-               ref->block_group->checksum = to_le16(checksum);
+               uint16_t cs;
+               cs = ext4_fs_bg_checksum(&ref->fs->sb, ref->index,
+                                        ref->block_group);
+               ref->block_group->checksum = to_le16(cs);
 
                /* Mark block dirty for writing changes to physical device */
-               ref->block.dirty = true;
+               ext4_trans_set_block_dirty(ref->block.buf);
        }
 
        /* Put back block, that contains block group descriptor */
@@ -665,24 +651,20 @@ static uint32_t ext4_fs_inode_checksum(struct ext4_inode_ref *inode_ref)
                        to_le32(ext4_inode_get_generation(inode_ref->inode));
 
                /* Preparation: temporarily set bg checksum to 0 */
-               orig_checksum = ext4_inode_get_checksum(sb, inode_ref->inode);
-               ext4_inode_set_checksum(sb, inode_ref->inode, 0);
+               orig_checksum = ext4_inode_get_csum(sb, inode_ref->inode);
+               ext4_inode_set_csum(sb, inode_ref->inode, 0);
 
                /* First calculate crc32 checksum against fs uuid */
                checksum = ext4_crc32c(EXT4_CRC32_INIT, sb->uuid,
-                               sizeof(sb->uuid));
+                                      sizeof(sb->uuid));
                /* Then calculate crc32 checksum against inode number
                 * and inode generation */
-               checksum = ext4_crc32c(checksum, &ino_index,
-                                    sizeof(ino_index));
-               checksum = ext4_crc32c(checksum, &ino_gen,
-                                    sizeof(ino_gen));
-               /* Finally calculate crc32 checksum against 
+               checksum = ext4_crc32c(checksum, &ino_index, sizeof(ino_index));
+               checksum = ext4_crc32c(checksum, &ino_gen, sizeof(ino_gen));
+               /* Finally calculate crc32 checksum against
                 * the entire inode */
-               checksum = ext4_crc32c(checksum, inode_ref->inode,
-                               inode_size);
-               ext4_inode_set_checksum(sb, inode_ref->inode,
-                               orig_checksum);
+               checksum = ext4_crc32c(checksum, inode_ref->inode, inode_size);
+               ext4_inode_set_csum(sb, inode_ref->inode, orig_checksum);
 
                /* If inode size is not large enough to hold the
                 * upper 16bit of the checksum */
@@ -702,8 +684,8 @@ static void ext4_fs_set_inode_checksum(struct ext4_inode_ref *inode_ref)
        if (!ext4_sb_feature_ro_com(sb, EXT4_FRO_COM_METADATA_CSUM))
                return;
 
-       ext4_inode_set_checksum(sb, inode_ref->inode,
-                               ext4_fs_inode_checksum(inode_ref));
+       uint32_t csum = ext4_fs_inode_checksum(inode_ref);
+       ext4_inode_set_csum(sb, inode_ref->inode, csum);
 }
 
 #if CONFIG_META_CSUM_ENABLE
@@ -713,7 +695,7 @@ static bool ext4_fs_verify_inode_csum(struct ext4_inode_ref *inode_ref)
        if (!ext4_sb_feature_ro_com(sb, EXT4_FRO_COM_METADATA_CSUM))
                return true;
 
-       return ext4_inode_get_checksum(sb, inode_ref->inode) ==
+       return ext4_inode_get_csum(sb, inode_ref->inode) ==
                ext4_fs_inode_checksum(inode_ref);
 }
 #else
@@ -763,7 +745,7 @@ __ext4_fs_get_inode_ref(struct ext4_fs *fs, uint32_t index,
        ext4_fsblk_t block_id =
            inode_table_start + (byte_offset_in_group / block_size);
 
-       rc = ext4_block_get(fs->bdev, &ref->block, block_id);
+       rc = ext4_trans_block_get(fs->bdev, &ref->block, block_id);
        if (rc != EOK) {
                return rc;
        }
@@ -799,14 +781,15 @@ int ext4_fs_put_inode_ref(struct ext4_inode_ref *ref)
        if (ref->dirty) {
                /* Mark block dirty for writing changes to physical device */
                ext4_fs_set_inode_checksum(ref);
-               ref->block.dirty = true;
+               ext4_trans_set_block_dirty(ref->block.buf);
        }
 
        /* Put back block, that contains i-node */
        return ext4_block_set(ref->fs->bdev, &ref->block);
 }
 
-void ext4_fs_inode_blocks_init(struct ext4_fs *fs, struct ext4_inode_ref *inode_ref)
+void ext4_fs_inode_blocks_init(struct ext4_fs *fs,
+                              struct ext4_inode_ref *inode_ref)
 {
        int i;
        struct ext4_inode *inode = inode_ref->inode;
@@ -829,11 +812,11 @@ void ext4_fs_inode_blocks_init(struct ext4_fs *fs, struct ext4_inode_ref *inode_
 uint32_t ext4_fs_correspond_inode_mode(int filetype)
 {
        switch (filetype) {
-       case EXT4_DIRENTRY_DIR:
+       case EXT4_DE_DIR:
                return EXT4_INODE_MODE_DIRECTORY;
-       case EXT4_DIRENTRY_REG_FILE:
+       case EXT4_DE_REG_FILE:
                return EXT4_INODE_MODE_FILE;
-       case EXT4_DIRENTRY_SYMLINK:
+       case EXT4_DE_SYMLINK:
                return EXT4_INODE_MODE_SOFTLINK;
        default:
                /* FIXME: right now we only support 3 file type. */
@@ -849,7 +832,7 @@ int ext4_fs_alloc_inode(struct ext4_fs *fs, struct ext4_inode_ref *inode_ref,
        bool is_dir;
        uint16_t inode_size = ext4_get16(&fs->sb, inode_size);
 
-       is_dir = (filetype == EXT4_DIRENTRY_DIR);
+       is_dir = (filetype == EXT4_DE_DIR);
 
        /* Allocate inode by allocation algorithm */
        uint32_t index;
@@ -888,22 +871,22 @@ int ext4_fs_alloc_inode(struct ext4_fs *fs, struct ext4_inode_ref *inode_ref,
        }
        ext4_inode_set_mode(&fs->sb, inode, mode);
 
-       ext4_inode_set_links_count(inode, 0);
+       ext4_inode_set_links_cnt(inode, 0);
        ext4_inode_set_uid(inode, 0);
        ext4_inode_set_gid(inode, 0);
        ext4_inode_set_size(inode, 0);
        ext4_inode_set_access_time(inode, 0);
        ext4_inode_set_change_inode_time(inode, 0);
-       ext4_inode_set_modification_time(inode, 0);
-       ext4_inode_set_deletion_time(inode, 0);
+       ext4_inode_set_modif_time(inode, 0);
+       ext4_inode_set_del_time(inode, 0);
        ext4_inode_set_blocks_count(&fs->sb, inode, 0);
        ext4_inode_set_flags(inode, 0);
        ext4_inode_set_generation(inode, 0);
-       if (inode_size > EXT4_GOOD_OLD_INODE_SIZE)
-               ext4_inode_set_extra_isize(inode,
-                               sizeof(struct ext4_inode) -
-                               offsetof(struct ext4_inode,
-                                       extra_isize));
+       if (inode_size > EXT4_GOOD_OLD_INODE_SIZE) {
+               uint16_t off = offsetof(struct ext4_inode, extra_isize);
+               uint16_t size = sizeof(struct ext4_inode) - off;
+               ext4_inode_set_extra_isize(inode, size);
+       }
 
        /* Reset blocks array. For symbolic link inode, just
         * fill in blocks with 0 */
@@ -911,8 +894,9 @@ int ext4_fs_alloc_inode(struct ext4_fs *fs, struct ext4_inode_ref *inode_ref,
                for (int i = 0; i < EXT4_INODE_BLOCKS; i++)
                        inode->blocks[i] = 0;
 
-       } else
+       } else {
                ext4_fs_inode_blocks_init(fs, inode_ref);
+       }
 
        inode_ref->dirty = true;
 
@@ -953,7 +937,7 @@ int ext4_fs_free_inode(struct ext4_inode_ref *inode_ref)
        /* 2) Double indirect */
        fblock = ext4_inode_get_indirect_block(inode_ref->inode, 1);
        if (fblock != 0) {
-               int rc = ext4_block_get(fs->bdev, &block, fblock);
+               int rc = ext4_trans_block_get(fs->bdev, &block, fblock);
                if (rc != EOK)
                        return rc;
 
@@ -984,7 +968,7 @@ int ext4_fs_free_inode(struct ext4_inode_ref *inode_ref)
        fblock = ext4_inode_get_indirect_block(inode_ref->inode, 2);
        if (fblock == 0)
                goto finish;
-       rc = ext4_block_get(fs->bdev, &block, fblock);
+       rc = ext4_trans_block_get(fs->bdev, &block, fblock);
        if (rc != EOK)
                return rc;
 
@@ -994,7 +978,7 @@ int ext4_fs_free_inode(struct ext4_inode_ref *inode_ref)
 
                if (ind_block == 0)
                        continue;
-               rc = ext4_block_get(fs->bdev, &subblock,
+               rc = ext4_trans_block_get(fs->bdev, &subblock,
                                ind_block);
                if (rc != EOK) {
                        ext4_block_set(fs->bdev, &block);
@@ -1124,7 +1108,7 @@ static int ext4_fs_release_inode_block(struct ext4_inode_ref *inode_ref,
                if (current_block == 0)
                        return EOK;
 
-               int rc = ext4_block_get(fs->bdev, &block, current_block);
+               int rc = ext4_trans_block_get(fs->bdev, &block, current_block);
                if (rc != EOK)
                        return rc;
 
@@ -1134,7 +1118,7 @@ static int ext4_fs_release_inode_block(struct ext4_inode_ref *inode_ref,
                /* Set zero if physical data block address found */
                if (level == 1) {
                        ((uint32_t *)block.data)[offset_in_block] = to_le32(0);
-                       block.dirty = true;
+                       ext4_trans_set_block_dirty(block.buf);
                }
 
                rc = ext4_block_set(fs->bdev, &block);
@@ -1168,6 +1152,7 @@ int ext4_fs_truncate_inode(struct ext4_inode_ref *inode_ref, uint64_t new_size)
 {
        struct ext4_sblock *sb = &inode_ref->fs->sb;
        uint32_t i;
+       int r;
 
        /* Check flags, if i-node can be truncated */
        if (!ext4_inode_can_truncate(sb, inode_ref->inode))
@@ -1182,12 +1167,12 @@ int ext4_fs_truncate_inode(struct ext4_inode_ref *inode_ref, uint64_t new_size)
        if (old_size < new_size)
                return EINVAL;
 
-       if (ext4_inode_is_type(sb, inode_ref->inode, EXT4_INODE_MODE_SOFTLINK)
-                       && old_size < sizeof(inode_ref->inode->blocks)
-                       && !ext4_inode_get_blocks_count(sb, inode_ref->inode)) {
-               char *content = (char *)inode_ref->inode->blocks;
-               memset(content + new_size, 0,
-                       sizeof(inode_ref->inode->blocks) - new_size);
+       bool v;
+       v = ext4_inode_is_type(sb, inode_ref->inode, EXT4_INODE_MODE_SOFTLINK);
+       if (v && old_size < sizeof(inode_ref->inode->blocks) &&
+           !ext4_inode_get_blocks_count(sb, inode_ref->inode)) {
+               char *content = (char *)inode_ref->inode->blocks + new_size;
+               memset(content , 0, sizeof(inode_ref->inode->blocks) - new_size);
                ext4_inode_set_size(inode_ref->inode, new_size);
                inode_ref->dirty = true;
 
@@ -1196,21 +1181,19 @@ int ext4_fs_truncate_inode(struct ext4_inode_ref *inode_ref, uint64_t new_size)
 
        /* Compute how many blocks will be released */
        uint32_t block_size = ext4_sb_get_block_size(sb);
-       uint32_t new_blocks_count = (new_size + block_size - 1) /
-                                   block_size;
-       uint32_t old_blocks_count = (old_size + block_size - 1) /
-                                   block_size;
-       uint32_t diff_blocks_count = old_blocks_count - new_blocks_count;
+       uint32_t new_blocks_cnt = (new_size + block_size - 1) / block_size;
+       uint32_t old_blocks_cnt = (old_size + block_size - 1) / block_size;
+       uint32_t diff_blocks_cnt = old_blocks_cnt - new_blocks_cnt;
 #if CONFIG_EXTENT_ENABLE
        if ((ext4_sb_feature_incom(sb, EXT4_FINCOM_EXTENTS)) &&
            (ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_EXTENTS))) {
 
                /* Extents require special operation */
-               if (diff_blocks_count) {
-                       int rc = ext4_extent_remove_space(inode_ref,
-                                       new_blocks_count, EXT_MAX_BLOCKS);
-                       if (rc != EOK)
-                               return rc;
+               if (diff_blocks_cnt) {
+                       r = ext4_extent_remove_space(inode_ref, new_blocks_cnt,
+                                                    EXT_MAX_BLOCKS);
+                       if (r != EOK)
+                               return r;
 
                }
        } else
@@ -1220,11 +1203,11 @@ int ext4_fs_truncate_inode(struct ext4_inode_ref *inode_ref, uint64_t new_size)
 
                /* Starting from 1 because of logical blocks are numbered from 0
                 */
-               for (i = 0; i < diff_blocks_count; ++i) {
-                       int rc = ext4_fs_release_inode_block(
-                           inode_ref, new_blocks_count + i);
-                       if (rc != EOK)
-                               return rc;
+               for (i = 0; i < diff_blocks_cnt; ++i) {
+                       r = ext4_fs_release_inode_block(inode_ref,
+                                                       new_blocks_cnt + i);
+                       if (r != EOK)
+                               return r;
                }
        }
 
@@ -1241,9 +1224,8 @@ int ext4_fs_truncate_inode(struct ext4_inode_ref *inode_ref, uint64_t new_size)
  */
 ext4_fsblk_t ext4_fs_inode_to_goal_block(struct ext4_inode_ref *inode_ref)
 {
-       uint32_t group_inodes =
-               ext4_get32(&inode_ref->fs->sb, inodes_per_group);
-       return (inode_ref->index - 1) / group_inodes;
+       uint32_t grp_inodes = ext4_get32(&inode_ref->fs->sb, inodes_per_group);
+       return (inode_ref->index - 1) / grp_inodes;
 }
 
 /**@brief Compute 'goal' for allocation algorithm (For blockmap).
@@ -1252,28 +1234,29 @@ ext4_fsblk_t ext4_fs_inode_to_goal_block(struct ext4_inode_ref *inode_ref)
  * @return error code
  */
 int ext4_fs_indirect_find_goal(struct ext4_inode_ref *inode_ref,
-                               ext4_fsblk_t *goal)
+                              ext4_fsblk_t *goal)
 {
+       int r;
        struct ext4_sblock *sb = &inode_ref->fs->sb;
        *goal = 0;
 
        uint64_t inode_size = ext4_inode_get_size(sb, inode_ref->inode);
        uint32_t block_size = ext4_sb_get_block_size(sb);
-       uint32_t inode_block_count = inode_size / block_size;
+       uint32_t iblock_cnt = inode_size / block_size;
 
        if (inode_size % block_size != 0)
-               inode_block_count++;
+               iblock_cnt++;
 
        /* If inode has some blocks, get last block address + 1 */
-       if (inode_block_count > 0) {
-               int rc = ext4_fs_get_inode_data_block_index(
-                   inode_ref, inode_block_count - 1, goal, false);
-               if (rc != EOK)
-                       return rc;
+       if (iblock_cnt > 0) {
+               r = ext4_fs_get_inode_dblk_idx(inode_ref, iblock_cnt - 1,
+                                              goal, false);
+               if (r != EOK)
+                       return r;
 
                if (*goal != 0) {
                        (*goal)++;
-                       return rc;
+                       return r;
                }
 
                /* If goal == 0, sparse file -> continue */
@@ -1281,48 +1264,46 @@ int ext4_fs_indirect_find_goal(struct ext4_inode_ref *inode_ref,
 
        /* Identify block group of inode */
 
-       uint32_t inodes_per_group = ext4_get32(sb, inodes_per_group);
-       uint32_t block_group = (inode_ref->index - 1) / inodes_per_group;
+       uint32_t inodes_per_bg = ext4_get32(sb, inodes_per_group);
+       uint32_t block_group = (inode_ref->index - 1) / inodes_per_bg;
        block_size = ext4_sb_get_block_size(sb);
 
        /* Load block group reference */
        struct ext4_block_group_ref bg_ref;
-       int rc =
-           ext4_fs_get_block_group_ref(inode_ref->fs, block_group, &bg_ref);
-       if (rc != EOK)
-               return rc;
+       r = ext4_fs_get_block_group_ref(inode_ref->fs, block_group, &bg_ref);
+       if (r != EOK)
+               return r;
+
+       struct ext4_bgroup *bg = bg_ref.block_group;
 
        /* Compute indexes */
-       uint32_t block_group_count = ext4_block_group_cnt(sb);
-       ext4_fsblk_t inode_table_first_block =
-           ext4_bg_get_inode_table_first_block(bg_ref.block_group, sb);
-       uint16_t inode_table_item_size = ext4_get16(sb, inode_size);
-       uint32_t inode_table_bytes;
+       uint32_t bg_count = ext4_block_group_cnt(sb);
+       ext4_fsblk_t itab_first_block = ext4_bg_get_inode_table_first_block(bg, sb);
+       uint16_t itab_item_size = ext4_get16(sb, inode_size);
+       uint32_t itab_bytes;
 
        /* Check for last block group */
-       if (block_group < block_group_count - 1) {
-               inode_table_bytes = inodes_per_group * inode_table_item_size;
+       if (block_group < bg_count - 1) {
+               itab_bytes = inodes_per_bg * itab_item_size;
        } else {
                /* Last block group could be smaller */
-               uint32_t inodes_count_total = ext4_get32(sb, inodes_count);
+               uint32_t inodes_cnt = ext4_get32(sb, inodes_count);
 
-               inode_table_bytes =
-                   (inodes_count_total -
-                    ((block_group_count - 1) * inodes_per_group)) *
-                   inode_table_item_size;
+               itab_bytes = (inodes_cnt - ((bg_count - 1) * inodes_per_bg));
+               itab_bytes *= itab_item_size;
        }
 
-       ext4_fsblk_t inode_table_blocks = inode_table_bytes / block_size;
+       ext4_fsblk_t inode_table_blocks = itab_bytes / block_size;
 
-       if (inode_table_bytes % block_size)
+       if (itab_bytes % block_size)
                inode_table_blocks++;
 
-       *goal = inode_table_first_block + inode_table_blocks;
+       *goal = itab_first_block + inode_table_blocks;
 
        return ext4_fs_put_block_group_ref(&bg_ref);
 }
 
-static int ext4_fs_get_inode_data_block_idx(struct ext4_inode_ref *inode_ref,
+static int ext4_fs_get_inode_dblk_idx_internal(struct ext4_inode_ref *inode_ref,
                                       uint64_t iblock, ext4_fsblk_t *fblock,
                                       bool extent_create,
                                       bool support_unwritten __unused)
@@ -1345,7 +1326,7 @@ static int ext4_fs_get_inode_data_block_idx(struct ext4_inode_ref *inode_ref,
 
                ext4_fsblk_t current_fsblk;
                int rc = ext4_extent_get_blocks(inode_ref, iblock, 1,
-                               &current_fsblk, extent_create, NULL);
+                               &current_fsblk, extent_create, NULL);
                if (rc != EOK)
                        return rc;
 
@@ -1368,24 +1349,22 @@ static int ext4_fs_get_inode_data_block_idx(struct ext4_inode_ref *inode_ref,
        }
 
        /* Determine indirection level of the target block */
-       unsigned int level = 0;
+       unsigned int l = 0;
        unsigned int i;
        for (i = 1; i < 4; i++) {
                if (iblock < fs->inode_block_limits[i]) {
-                       level = i;
+                       l = i;
                        break;
                }
        }
 
-       if (level == 0)
+       if (l == 0)
                return EIO;
 
        /* Compute offsets for the topmost level */
-       uint64_t block_offset_in_level =
-           iblock - fs->inode_block_limits[level - 1];
-       current_block = ext4_inode_get_indirect_block(inode, level - 1);
-       uint32_t offset_in_block =
-           block_offset_in_level / fs->inode_blocks_per_level[level - 1];
+       uint64_t blk_off_in_lvl =  iblock - fs->inode_block_limits[l - 1];
+       current_block = ext4_inode_get_indirect_block(inode, l - 1);
+       uint32_t off_in_blk = blk_off_in_lvl / fs->inode_blocks_per_level[l - 1];
 
        /* Sparse file */
        if (current_block == 0) {
@@ -1399,15 +1378,15 @@ static int ext4_fs_get_inode_data_block_idx(struct ext4_inode_ref *inode_ref,
         * Navigate through other levels, until we find the block number
         * or find null reference meaning we are dealing with sparse file
         */
-       while (level > 0) {
+       while (l > 0) {
                /* Load indirect block */
-               int rc = ext4_block_get(fs->bdev, &block, current_block);
+               int rc = ext4_trans_block_get(fs->bdev, &block, current_block);
                if (rc != EOK)
                        return rc;
 
                /* Read block address from indirect block */
                current_block =
-                   to_le32(((uint32_t *)block.data)[offset_in_block]);
+                   to_le32(((uint32_t *)block.data)[off_in_blk]);
 
                /* Put back indirect block untouched */
                rc = ext4_block_set(fs->bdev, &block);
@@ -1421,17 +1400,16 @@ static int ext4_fs_get_inode_data_block_idx(struct ext4_inode_ref *inode_ref,
                }
 
                /* Jump to the next level */
-               level--;
+               l--;
 
                /* Termination condition - we have address of data block loaded
                 */
-               if (level == 0)
+               if (l == 0)
                        break;
 
                /* Visit the next level */
-               block_offset_in_level %= fs->inode_blocks_per_level[level];
-               offset_in_block = block_offset_in_level /
-                                 fs->inode_blocks_per_level[level - 1];
+               blk_off_in_lvl %= fs->inode_blocks_per_level[l];
+               off_in_blk = blk_off_in_lvl / fs->inode_blocks_per_level[l - 1];
        }
 
        *fblock = current_block;
@@ -1440,19 +1418,19 @@ static int ext4_fs_get_inode_data_block_idx(struct ext4_inode_ref *inode_ref,
 }
 
 
-int ext4_fs_get_inode_data_block_index(struct ext4_inode_ref *inode_ref,
-                                      uint64_t iblock, ext4_fsblk_t *fblock,
-                                      bool support_unwritten)
+int ext4_fs_get_inode_dblk_idx(struct ext4_inode_ref *inode_ref,
+                              uint64_t iblock, ext4_fsblk_t *fblock,
+                              bool support_unwritten)
 {
-       return ext4_fs_get_inode_data_block_idx(inode_ref, iblock, fblock,
-                       false, support_unwritten);
+       return ext4_fs_get_inode_dblk_idx_internal(inode_ref, iblock, fblock,
+                                                  false, support_unwritten);
 }
 
-int ext4_fs_init_inode_data_block_index(struct ext4_inode_ref *inode_ref,
-                                      uint64_t iblock, ext4_fsblk_t *fblock)
+int ext4_fs_init_inode_dblk_idx(struct ext4_inode_ref *inode_ref,
+                               uint64_t iblock, ext4_fsblk_t *fblock)
 {
-       return ext4_fs_get_inode_data_block_idx(inode_ref, iblock, fblock,
-                       true, true);
+       return ext4_fs_get_inode_dblk_idx_internal(inode_ref, iblock, fblock,
+                                                  true, true);
 }
 
 static int ext4_fs_set_inode_data_block_index(struct ext4_inode_ref *inode_ref,
@@ -1479,29 +1457,27 @@ static int ext4_fs_set_inode_data_block_index(struct ext4_inode_ref *inode_ref,
        }
 
        /* Determine the indirection level needed to get the desired block */
-       unsigned int level = 0;
+       unsigned int l = 0;
        unsigned int i;
        for (i = 1; i < 4; i++) {
                if (iblock < fs->inode_block_limits[i]) {
-                       level = i;
+                       l = i;
                        break;
                }
        }
 
-       if (level == 0)
+       if (l == 0)
                return EIO;
 
        uint32_t block_size = ext4_sb_get_block_size(&fs->sb);
 
        /* Compute offsets for the topmost level */
-       uint64_t block_offset_in_level =
-           iblock - fs->inode_block_limits[level - 1];
+       uint64_t blk_off_in_lvl =  iblock - fs->inode_block_limits[l - 1];
        ext4_fsblk_t current_block =
-           ext4_inode_get_indirect_block(inode_ref->inode, level - 1);
-       uint32_t offset_in_block =
-           block_offset_in_level / fs->inode_blocks_per_level[level - 1];
+                       ext4_inode_get_indirect_block(inode_ref->inode, l - 1);
+       uint32_t off_in_blk = blk_off_in_lvl / fs->inode_blocks_per_level[l - 1];
 
-       ext4_fsblk_t new_block_addr;
+       ext4_fsblk_t new_blk;
 
        struct ext4_block block;
        struct ext4_block new_block;
@@ -1514,49 +1490,44 @@ static int ext4_fs_set_inode_data_block_index(struct ext4_inode_ref *inode_ref,
                if (rc != EOK)
                        return rc;
 
-               rc = ext4_balloc_alloc_block(inode_ref,
-                                            goal,
-                                            &new_block_addr);
+               rc = ext4_balloc_alloc_block(inode_ref, goal, &new_blk);
                if (rc != EOK)
                        return rc;
 
                /* Update i-node */
-               ext4_inode_set_indirect_block(inode_ref->inode, level - 1,
-                                             (uint32_t)new_block_addr);
+               ext4_inode_set_indirect_block(inode_ref->inode, l - 1, new_blk);
                inode_ref->dirty = true;
 
                /* Load newly allocated block */
-               rc = ext4_block_get_noread(fs->bdev, &new_block, new_block_addr);
+               rc = ext4_trans_block_get_noread(fs->bdev, &new_block, new_blk);
                if (rc != EOK) {
-                       ext4_balloc_free_block(inode_ref, new_block_addr);
+                       ext4_balloc_free_block(inode_ref, new_blk);
                        return rc;
                }
 
                /* Initialize new block */
                memset(new_block.data, 0, block_size);
-               new_block.dirty = true;
+               ext4_trans_set_block_dirty(new_block.buf);
 
                /* Put back the allocated block */
                rc = ext4_block_set(fs->bdev, &new_block);
                if (rc != EOK)
                        return rc;
 
-               current_block = new_block_addr;
+               current_block = new_blk;
        }
 
        /*
         * Navigate through other levels, until we find the block number
         * or find null reference meaning we are dealing with sparse file
         */
-       while (level > 0) {
-               int rc = ext4_block_get(fs->bdev, &block, current_block);
+       while (l > 0) {
+               int rc = ext4_trans_block_get(fs->bdev, &block, current_block);
                if (rc != EOK)
                        return rc;
 
-               current_block =
-                   to_le32(((uint32_t *)block.data)[offset_in_block]);
-
-               if ((level > 1) && (current_block == 0)) {
+               current_block = to_le32(((uint32_t *)block.data)[off_in_blk]);
+               if ((l > 1) && (current_block == 0)) {
                        ext4_fsblk_t goal;
                        rc = ext4_fs_indirect_find_goal(inode_ref, &goal);
                        if (rc != EOK) {
@@ -1566,15 +1537,15 @@ static int ext4_fs_set_inode_data_block_index(struct ext4_inode_ref *inode_ref,
 
                        /* Allocate new block */
                        rc =
-                           ext4_balloc_alloc_block(inode_ref, goal, &new_block_addr);
+                           ext4_balloc_alloc_block(inode_ref, goal, &new_blk);
                        if (rc != EOK) {
                                ext4_block_set(fs->bdev, &block);
                                return rc;
                        }
 
                        /* Load newly allocated block */
-                       rc = ext4_block_get_noread(fs->bdev, &new_block,
-                                           new_block_addr);
+                       rc = ext4_trans_block_get_noread(fs->bdev, &new_block,
+                                           new_blk);
 
                        if (rc != EOK) {
                                ext4_block_set(fs->bdev, &block);
@@ -1583,7 +1554,7 @@ static int ext4_fs_set_inode_data_block_index(struct ext4_inode_ref *inode_ref,
 
                        /* Initialize allocated block */
                        memset(new_block.data, 0, block_size);
-                       new_block.dirty = true;
+                       ext4_trans_set_block_dirty(new_block.buf);
 
                        rc = ext4_block_set(fs->bdev, &new_block);
                        if (rc != EOK) {
@@ -1592,44 +1563,43 @@ static int ext4_fs_set_inode_data_block_index(struct ext4_inode_ref *inode_ref,
                        }
 
                        /* Write block address to the parent */
-                       ((uint32_t *)block.data)[offset_in_block] =
-                           to_le32((uint32_t)new_block_addr);
-                       block.dirty = true;
-                       current_block = new_block_addr;
+                       uint32_t * p = (uint32_t * )block.data;
+                       p[off_in_blk] = to_le32((uint32_t)new_blk);
+                       ext4_trans_set_block_dirty(block.buf);
+                       current_block = new_blk;
                }
 
                /* Will be finished, write the fblock address */
-               if (level == 1) {
-                       ((uint32_t *)block.data)[offset_in_block] =
-                           to_le32((uint32_t)fblock);
-                       block.dirty = true;
+               if (l == 1) {
+                       uint32_t * p = (uint32_t * )block.data;
+                       p[off_in_blk] = to_le32((uint32_t)fblock);
+                       ext4_trans_set_block_dirty(block.buf);
                }
 
                rc = ext4_block_set(fs->bdev, &block);
                if (rc != EOK)
                        return rc;
 
-               level--;
+               l--;
 
                /*
                 * If we are on the last level, break here as
                 * there is no next level to visit
                 */
-               if (level == 0)
+               if (l == 0)
                        break;
 
                /* Visit the next level */
-               block_offset_in_level %= fs->inode_blocks_per_level[level];
-               offset_in_block = block_offset_in_level /
-                                 fs->inode_blocks_per_level[level - 1];
+               blk_off_in_lvl %= fs->inode_blocks_per_level[l];
+               off_in_blk = blk_off_in_lvl / fs->inode_blocks_per_level[l - 1];
        }
 
        return EOK;
 }
 
 
-int ext4_fs_append_inode_block(struct ext4_inode_ref *inode_ref,
-                              ext4_fsblk_t *fblock, uint32_t *iblock)
+int ext4_fs_append_inode_dblk(struct ext4_inode_ref *inode_ref,
+                             ext4_fsblk_t *fblock, uint32_t *iblock)
 {
 #if CONFIG_EXTENT_ENABLE
        /* Handle extents separately */
@@ -1640,18 +1610,15 @@ int ext4_fs_append_inode_block(struct ext4_inode_ref *inode_ref,
                struct ext4_sblock *sb = &inode_ref->fs->sb;
                uint64_t inode_size = ext4_inode_get_size(sb, inode_ref->inode);
                uint32_t block_size = ext4_sb_get_block_size(sb);
-               *iblock = (inode_size + block_size - 1) /
-                                   block_size;
+               *iblock = (inode_size + block_size - 1) / block_size;
 
                rc = ext4_extent_get_blocks(inode_ref, *iblock, 1,
-                               &current_fsblk, true, NULL);
-
+                                               &current_fsblk, true, NULL);
 
                *fblock = current_fsblk;
                ext4_assert(*fblock);
 
-               ext4_inode_set_size(inode_ref->inode,
-                                   inode_size + block_size);
+               ext4_inode_set_size(inode_ref->inode, inode_size + block_size);
                inode_ref->dirty = true;
 
 
@@ -1702,21 +1669,20 @@ int ext4_fs_append_inode_block(struct ext4_inode_ref *inode_ref,
 void ext4_fs_inode_links_count_inc(struct ext4_inode_ref *inode_ref)
 {
        uint16_t link;
-
-       link = ext4_inode_get_links_count(inode_ref->inode);
+       bool is_dx;
+       link = ext4_inode_get_links_cnt(inode_ref->inode);
        link++;
-       ext4_inode_set_links_count(inode_ref->inode, link);
+       ext4_inode_set_links_cnt(inode_ref->inode, link);
 
-       bool is_dx =
-           ext4_sb_feature_com(&inode_ref->fs->sb, EXT4_FCOM_DIR_INDEX) &&
-           ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_INDEX);
+       is_dx = ext4_sb_feature_com(&inode_ref->fs->sb, EXT4_FCOM_DIR_INDEX) &&
+               ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_INDEX);
 
        if (is_dx && link > 1) {
                if (link >= EXT4_LINK_MAX || link == 2) {
-                       ext4_inode_set_links_count(inode_ref->inode, 1);
+                       ext4_inode_set_links_cnt(inode_ref->inode, 1);
 
-                       uint32_t v =
-                           ext4_get32(&inode_ref->fs->sb, features_read_only);
+                       uint32_t v;
+                       v = ext4_get32(&inode_ref->fs->sb, features_read_only);
                        v |= EXT4_FRO_COM_DIR_NLINK;
                        ext4_set32(&inode_ref->fs->sb, features_read_only, v);
                }
@@ -1725,16 +1691,16 @@ void ext4_fs_inode_links_count_inc(struct ext4_inode_ref *inode_ref)
 
 void ext4_fs_inode_links_count_dec(struct ext4_inode_ref *inode_ref)
 {
-       uint16_t links = ext4_inode_get_links_count(inode_ref->inode);
+       uint16_t links = ext4_inode_get_links_cnt(inode_ref->inode);
        if (!ext4_inode_is_type(&inode_ref->fs->sb, inode_ref->inode,
                                EXT4_INODE_MODE_DIRECTORY)) {
                if (links > 0)
-                       ext4_inode_set_links_count(inode_ref->inode, links - 1);
+                       ext4_inode_set_links_cnt(inode_ref->inode, links - 1);
                return;
        }
 
        if (links > 2)
-               ext4_inode_set_links_count(inode_ref->inode, links - 1);
+               ext4_inode_set_links_cnt(inode_ref->inode, links - 1);
 }
 
 /**