X-Git-Url: https://code.delx.au/refind/blobdiff_plain/9b877e67c541f1c08950930a0ad8e0c6ee2ea2e9..a8a06ba01058e3ef5f546a4a4a352d06638359a8:/filesystems/fsw_ext4.c diff --git a/filesystems/fsw_ext4.c b/filesystems/fsw_ext4.c index abef2cb..7cdca91 100644 --- a/filesystems/fsw_ext4.c +++ b/filesystems/fsw_ext4.c @@ -73,9 +73,9 @@ struct fsw_fstype_table FSW_FSTYPE_TABLE_NAME(ext4) = { }; -static inline int test_root(fsw_u32 a, int b) +static __inline int test_root(fsw_u32 a, int b) { - int num = b; + fsw_u32 num = b; while (a > num) num *= b; @@ -93,7 +93,7 @@ static int fsw_ext4_group_sparse(fsw_u32 group) } /* calculate the first block number of the group */ -static inline fsw_u32 +static __inline fsw_u32 fsw_ext4_group_first_block_no(struct ext4_super_block *sb, fsw_u32 group_no) { return group_no * (fsw_u32)EXT4_BLOCKS_PER_GROUP(sb) + @@ -219,7 +219,7 @@ static fsw_status_t fsw_ext4_volume_mount(struct fsw_ext4_volume *vol) return status; // Get group descriptor table and block number of inode table... - gdesc = (struct ext4_group_desc *)(buffer + gdesc_index * vol->sb->s_desc_size); + gdesc = (struct ext4_group_desc *)((char *)buffer + gdesc_index * vol->sb->s_desc_size); vol->inotab_bno[groupno] = gdesc->bg_inode_table_lo; fsw_block_release(vol, gdesc_bno, buffer); @@ -279,8 +279,8 @@ static fsw_status_t fsw_ext4_dnode_fill(struct fsw_ext4_volume *vol, struct fsw_ // read the inode block - groupno = (dno->g.dnode_id - 1) / vol->sb->s_inodes_per_group; - ino_in_group = (dno->g.dnode_id - 1) % vol->sb->s_inodes_per_group; + groupno = (fsw_u32) (dno->g.dnode_id - 1) / vol->sb->s_inodes_per_group; + ino_in_group = (fsw_u32) (dno->g.dnode_id - 1) % vol->sb->s_inodes_per_group; ino_bno = vol->inotab_bno[groupno] + ino_in_group / (vol->g.phys_blocksize / vol->inode_size); ino_index = ino_in_group % (vol->g.phys_blocksize / vol->inode_size); @@ -335,10 +335,10 @@ static fsw_status_t fsw_ext4_dnode_stat(struct fsw_ext4_volume *vol, struct fsw_ struct fsw_dnode_stat *sb) { sb->used_bytes = dno->raw->i_blocks_lo * EXT4_BLOCK_SIZE(vol->sb); // very, very strange... - sb->store_time_posix(sb, FSW_DNODE_STAT_CTIME, dno->raw->i_ctime); - sb->store_time_posix(sb, FSW_DNODE_STAT_ATIME, dno->raw->i_atime); - sb->store_time_posix(sb, FSW_DNODE_STAT_MTIME, dno->raw->i_mtime); - sb->store_attr_posix(sb, dno->raw->i_mode); + fsw_store_time_posix(sb, FSW_DNODE_STAT_CTIME, dno->raw->i_ctime); + fsw_store_time_posix(sb, FSW_DNODE_STAT_ATIME, dno->raw->i_atime); + fsw_store_time_posix(sb, FSW_DNODE_STAT_MTIME, dno->raw->i_mtime); + fsw_store_attr_posix(sb, dno->raw->i_mode); return FSW_SUCCESS; } @@ -385,7 +385,7 @@ static fsw_status_t fsw_ext4_get_by_extent(struct fsw_ext4_volume *vol, struct f struct fsw_extent *extent) { fsw_status_t status; - fsw_u32 bno, release_bno, buf_offset, file_bcnt; + fsw_u32 bno, buf_offset; int ext_cnt; void *buffer; @@ -400,7 +400,7 @@ static fsw_status_t fsw_ext4_get_by_extent(struct fsw_ext4_volume *vol, struct f buffer = (void *)dno->raw->i_block; buf_offset = 0; while(1) { - ext4_extent_header = (struct ext4_extent_header *)buffer + buf_offset; + ext4_extent_header = (struct ext4_extent_header *)((char *)buffer + buf_offset); buf_offset += sizeof(struct ext4_extent_header); FSW_MSG_DEBUG((FSW_MSGSTR("fsw_ext4_get_by_extent: extent header with %d entries\n"), ext4_extent_header->eh_entries)); @@ -412,7 +412,7 @@ static fsw_status_t fsw_ext4_get_by_extent(struct fsw_ext4_volume *vol, struct f if(ext4_extent_header->eh_depth == 0) { // Leaf node, the header follows actual extents - ext4_extent = (struct ext4_extent *)(buffer + buf_offset); + ext4_extent = (struct ext4_extent *)((char *)buffer + buf_offset); buf_offset += sizeof(struct ext4_extent); FSW_MSG_DEBUG((FSW_MSGSTR("fsw_ext4_get_by_extent: extent node cover %d...\n"), ext4_extent->ee_block)); @@ -428,7 +428,7 @@ static fsw_status_t fsw_ext4_get_by_extent(struct fsw_ext4_volume *vol, struct f { FSW_MSG_DEBUG((FSW_MSGSTR("fsw_ext4_get_by_extent: index extents, depth %d\n"), ext4_extent_header->eh_depth)); - ext4_extent_idx = (struct ext4_extent_idx *)(buffer + buf_offset); + ext4_extent_idx = (struct ext4_extent_idx *)((char *)buffer + buf_offset); buf_offset += sizeof(struct ext4_extent_idx); FSW_MSG_DEBUG((FSW_MSGSTR("fsw_ext4_get_by_extent: index node covers block %d...\n"),