Hi Michael,

found two more errors, see below.

Kind regards,

Stefan

On Montag, 29. August 2016 10:46:45 CEST Michael Walle wrote:
> All fields were accessed directly instead of using the proper byte swap
> functions. Thus, ext4 write support was only usable on little-endian
> architectures. Fix this.
> 
> Signed-off-by: Michael Walle <mich...@walle.cc>
> Reviewed-by: Stefan Brüns <stefan.bru...@rwth-aachen.de>
> Tested-by: Stefan Brüns <stefan.bru...@rwth-aachen.de>
> ---
>  fs/ext4/ext4_common.c  | 277
> +++++++++++++++++++++++++++---------------------- fs/ext4/ext4_common.h  | 
>  4 +-
>  fs/ext4/ext4_journal.c |  15 +--
>  fs/ext4/ext4_journal.h |   4 +-
>  fs/ext4/ext4_write.c   | 212 ++++++++++++++++++++-----------------
>  include/ext_common.h   |   2 +-
>  6 files changed, 285 insertions(+), 229 deletions(-)
> 
> diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
> index e8ed30a..567350f 100644
> --- a/fs/ext4/ext4_common.c
> +++ b/fs/ext4/ext4_common.c
> @@ -33,20 +33,40 @@
...
> @@ -879,17 +907,17 @@ long int ext4fs_get_new_blk_no(void)
>                               fs->curr_blkno = fs->curr_blkno +
>                                               (i * fs->blksz * 8);
>                               fs->first_pass_bbmap++;
> -                             bgd[i].free_blocks--;
> -                             fs->sb->free_blocks--;
> -                             status = ext4fs_devread((lbaint_t)
> -                                                     bgd[i].block_id *
> +                             ext4fs_bg_free_blocks_dec(&bgd[i]);
> +                             ext4fs_sb_free_inodes_dec(fs->sb);
Thats obviously wrong, should be ext4fs_sb_free_*blocks*_dec ...

> +                             status = ext4fs_devread(
> +                                                     
> (lbaint_t)le32_to_cpu(bgd[i].block_id) *
>                                                       fs->sect_perblk, 0,
>                                                       fs->blksz,
>                                                       journal_buffer);
>                               if (status == 0)
>                                       goto fail;
>                               if (ext4fs_log_journal(journal_buffer,
> -                                                     bgd[i].block_id))
> +                                                     
> le32_to_cpu(bgd[i].block_id)))
>                                       goto fail;
>                               goto success;
>                       } else {
> @@ -923,13 +951,14 @@ restart:
...
> @@ -942,19 +971,20 @@ restart:
>               /* journal backup */
>               if (prev_bg_bitmap_index != bg_idx) {
>                       memset(journal_buffer, '\0', fs->blksz);
> -                     status = ext4fs_devread((lbaint_t)bgd[bg_idx].block_id
> +                     status = ext4fs_devread(
> +                                             
> (lbaint_t)le32_to_cpu(bgd[bg_idx].block_id)
>                                               * fs->sect_perblk,
>                                               0, fs->blksz, journal_buffer);
>                       if (status == 0)
>                               goto fail;
>                       if (ext4fs_log_journal(journal_buffer,
> -                                             bgd[bg_idx].block_id))
> +                                             
> le32_to_cpu(bgd[bg_idx].block_id)))
>                               goto fail;
> 
>                       prev_bg_bitmap_index = bg_idx;
>               }
> -             bgd[bg_idx].free_blocks--;
> -             fs->sb->free_blocks--;
> +             ext4fs_bg_free_blocks_dec(&bgd[bg_idx]);
> +             ext4fs_sb_free_inodes_dec(fs->sb);
Same ...

>               goto success;
>       }
>  success:
> @@ -975,7 +1005,7 @@ int ext4fs_get_new_inode_no(void)
...



-- 
Stefan Brüns  /  Bergstraße 21  /  52062 Aachen
home: +49 241 53809034     mobile: +49 151 50412019
work: +49 2405 49936-424
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to