diff options
author | Marian Balakowicz <m8@semihalf.com> | 2008-03-12 12:23:02 +0100 |
---|---|---|
committer | Marian Balakowicz <m8@semihalf.com> | 2008-03-12 12:23:02 +0100 |
commit | 7e492d8258182e31c988bbf9917d4a3d41949d56 (patch) | |
tree | e9c9db79d797cf487107c019537c6bb00b854c6c /fs/ext2/dev.c | |
parent | afe45c87e3c5d77bad76b1a57dccd20764d45b5d (diff) | |
parent | 30f1806f60978d707b0cff2d7bf89d141fc24290 (diff) | |
download | u-boot-imx-7e492d8258182e31c988bbf9917d4a3d41949d56.zip u-boot-imx-7e492d8258182e31c988bbf9917d4a3d41949d56.tar.gz u-boot-imx-7e492d8258182e31c988bbf9917d4a3d41949d56.tar.bz2 |
Merge branch 'master' of git://www.denx.de/git/u-boot into new-image
Diffstat (limited to 'fs/ext2/dev.c')
-rw-r--r-- | fs/ext2/dev.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/fs/ext2/dev.c b/fs/ext2/dev.c index 643a1a8..1728b34 100644 --- a/fs/ext2/dev.c +++ b/fs/ext2/dev.c @@ -96,8 +96,23 @@ int ext2fs_devread (int sector, int byte_offset, int byte_len, char *buf) { sector++; } + if (byte_len == 0) + return 1; + /* read sector aligned part */ block_len = byte_len & ~(SECTOR_SIZE - 1); + + if (block_len == 0) { + u8 p[SECTOR_SIZE]; + + block_len = SECTOR_SIZE; + ext2fs_block_dev_desc->block_read(ext2fs_block_dev_desc->dev, + part_info.start + sector, + 1, (unsigned long *)p); + memcpy(buf, p, byte_len); + return 1; + } + if (ext2fs_block_dev_desc->block_read (ext2fs_block_dev_desc->dev, part_info.start + sector, block_len / SECTOR_SIZE, @@ -106,6 +121,7 @@ int ext2fs_devread (int sector, int byte_offset, int byte_len, char *buf) { printf (" ** ext2fs_devread() read error - block\n"); return (0); } + block_len = byte_len & ~(SECTOR_SIZE - 1); buf += block_len; byte_len -= block_len; sector += block_len / SECTOR_SIZE; |