mpc83xx: cosmetic: MERGERBOX.h checkpatch compliance
[oweals/u-boot.git] / fs / ext2 / dev.c
index 4365b3b882a12cfc0c16ddf7341b7b378f8888a6..874e21161e69cca9e6f39e7e57b29b0a21f33dd6 100644 (file)
@@ -52,8 +52,8 @@ int ext2fs_set_blk_dev(block_dev_desc_t *rbdd, int part)
 
 int ext2fs_devread(int sector, int byte_offset, int byte_len, char *buf)
 {
-       char sec_buf[SECTOR_SIZE];
-       unsigned block_len;
+       ALLOC_CACHE_ALIGN_BUFFER(char, sec_buf, SECTOR_SIZE);
+       unsigned sectors;
 
        /*
         *  Check partition boundaries
@@ -98,35 +98,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;
-       }
+       sectors = byte_len / SECTOR_SIZE;
+
+       if (sectors > 0) {
+               if (ext2fs_block_dev_desc->block_read(
+                       ext2fs_block_dev_desc->dev,
+                       part_info.start + sector,
+                       sectors,
+                       (unsigned long *) buf) != sectors) {
+                       printf(" ** %s read error - block\n", __func__);
+                       return 0;
+               }
 
-       if (ext2fs_block_dev_desc->block_read(ext2fs_block_dev_desc->dev,
-                                             part_info.start + sector,
-                                             block_len / SECTOR_SIZE,
-                                             (unsigned long *) buf) !=
-           block_len / SECTOR_SIZE) {
-               printf(" ** %s read error - block\n", __func__);
-               return 0;
+               buf += sectors * SECTOR_SIZE;
+               byte_len -= sectors * SECTOR_SIZE;
+               sector += sectors;
        }
-       block_len = byte_len & ~(SECTOR_SIZE - 1);
-       buf += block_len;
-       byte_len -= block_len;
-       sector += block_len / SECTOR_SIZE;
 
        if (byte_len != 0) {
                /* read rest of data which are not in whole sector */