Fix ext2/ext4 filesystem accesses beyond 2TiB
With CONFIG_SYS_64BIT_LBA, lbaint_t gets defined as a 64-bit type,
which is required to represent block numbers for storage devices that
exceed 2TiB (the block size usually is 512B), e.g. recent hard drives
We now use lbaint_t for partition offset to reflect the lbaint_t change,
and access partitions beyond or crossing the 2.1TiB limit.
This required changes to signature of ext4fs_devread(), and type of all
variables relatives to block sector.
ext2/ext4 fs uses logical block represented by a 32 bit value. Logical
block is a multiple of device block sector. To avoid overflow problem
when calling ext4fs_devread(), we need to cast the sector parameter.
Signed-off-by:
Frédéric Leroy <fredo@starox.org>
Showing
- common/cmd_disk.c 2 additions, 1 deletioncommon/cmd_disk.c
- disk/part_efi.c 3 additions, 3 deletionsdisk/part_efi.c
- disk/part_iso.c 2 additions, 2 deletionsdisk/part_iso.c
- fs/ext4/dev.c 5 additions, 4 deletionsfs/ext4/dev.c
- fs/ext4/ext4_common.c 27 additions, 21 deletionsfs/ext4/ext4_common.c
- fs/ext4/ext4_journal.c 12 additions, 7 deletionsfs/ext4/ext4_journal.c
- fs/ext4/ext4_write.c 29 additions, 21 deletionsfs/ext4/ext4_write.c
- fs/ext4/ext4fs.c 7 additions, 7 deletionsfs/ext4/ext4fs.c
- include/ext4fs.h 1 addition, 1 deletioninclude/ext4fs.h
- include/ext_common.h 1 addition, 1 deletioninclude/ext_common.h
- include/ide.h 2 additions, 0 deletionsinclude/ide.h
- include/part.h 2 additions, 2 deletionsinclude/part.h
Loading
Please register or sign in to comment