diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/cbfs/Makefile | 4 | ||||
-rw-r--r-- | fs/cbfs/cbfs.c | 3 | ||||
-rw-r--r-- | fs/ext4/dev.c | 1 | ||||
-rw-r--r-- | fs/ext4/ext4_common.c | 14 | ||||
-rw-r--r-- | fs/ext4/ext4_journal.c | 3 | ||||
-rw-r--r-- | fs/ext4/ext4fs.c | 13 | ||||
-rw-r--r-- | fs/fs.c | 11 | ||||
-rw-r--r-- | fs/zfs/zfs.c | 4 |
8 files changed, 32 insertions, 21 deletions
diff --git a/fs/cbfs/Makefile b/fs/cbfs/Makefile index 2be8a68..e0e6de6 100644 --- a/fs/cbfs/Makefile +++ b/fs/cbfs/Makefile @@ -1,6 +1,4 @@ -# -# See file CREDITS for list of people who contributed to this -# project. +# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c index cae6d56..1b25a15 100644 --- a/fs/cbfs/cbfs.c +++ b/fs/cbfs/cbfs.c @@ -1,9 +1,6 @@ /* * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. * - * See file CREDITS for list of people who contributed to this - * project. - * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of diff --git a/fs/ext4/dev.c b/fs/ext4/dev.c index 1596a92..464a67d 100644 --- a/fs/ext4/dev.c +++ b/fs/ext4/dev.c @@ -52,6 +52,7 @@ void ext4fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info) part_info = info; part_offset = info->start; get_fs()->total_sect = (info->size * info->blksz) / SECTOR_SIZE; + get_fs()->dev_desc = rbdd; } int ext4fs_devread(int sector, int byte_offset, int byte_len, char *buf) diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index 323875f..f12b805 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -378,7 +378,6 @@ void ext4fs_update_parent_dentry(char *filename, int *p_ino, int file_type) struct ext_filesystem *fs = get_fs(); /* directory entry */ struct ext2_dirent *dir; - char *ptr = NULL; char *temp_dir = NULL; zero_buffer = zalloc(fs->blksz); @@ -415,7 +414,6 @@ restart: if (ext4fs_log_journal(root_first_block_buffer, first_block_no_of_root)) goto fail; dir = (struct ext2_dirent *)root_first_block_buffer; - ptr = (char *)dir; totalbytes = 0; while (dir->direntlen > 0) { /* @@ -483,14 +481,12 @@ restart: break; dir = (struct ext2_dirent *)((char *)dir + templength); - ptr = (char *)dir; } /* make a pointer ready for creating next directory entry */ templength = dir->direntlen; totalbytes = totalbytes + templength; dir = (struct ext2_dirent *)((char *)dir + templength); - ptr = (char *)dir; /* get the next available inode number */ inodeno = ext4fs_get_new_inode_no(); @@ -1200,6 +1196,11 @@ static void alloc_double_indirect_block(struct ext2_inode *file_inode, status = ext4fs_devread(di_blockno_parent * fs->sect_perblk, 0, fs->blksz, (char *)di_parent_buffer); + + if (!status) { + printf("%s: Device read error!\n", __func__); + goto fail; + } memset(di_parent_buffer, '\0', fs->blksz); /* @@ -1227,6 +1228,11 @@ static void alloc_double_indirect_block(struct ext2_inode *file_inode, fs->sect_perblk, 0, fs->blksz, (char *)di_child_buff); + + if (!status) { + printf("%s: Device read error!\n", __func__); + goto fail; + } memset(di_child_buff, '\0', fs->blksz); /* filling of actual datablocks for each child */ for (j = 0; j < (fs->blksz / sizeof(int)); j++) { diff --git a/fs/ext4/ext4_journal.c b/fs/ext4/ext4_journal.c index 8a252d6..9f01708 100644 --- a/fs/ext4/ext4_journal.c +++ b/fs/ext4/ext4_journal.c @@ -410,7 +410,7 @@ int ext4fs_check_journal_state(int recovery_flag) int transaction_state = TRANSACTION_COMPLETE; int prev_desc_logical_no = 0; int curr_desc_logical_no = 0; - int ofs, flags, block; + int ofs, flags; struct ext2_inode inode_journal; struct journal_superblock_t *jsb = NULL; struct journal_header_t *jdb = NULL; @@ -453,7 +453,6 @@ int ext4fs_check_journal_state(int recovery_flag) i = be32_to_cpu(jsb->s_first); while (1) { - block = be32_to_cpu(jsb->s_first); blknr = read_allocated_block(&inode_journal, i); memset(temp_buff1, '\0', fs->blksz); ext4fs_devread(blknr * fs->sect_perblk, diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c index 06536ba..f02c215 100644 --- a/fs/ext4/ext4fs.c +++ b/fs/ext4/ext4fs.c @@ -40,6 +40,7 @@ #include <linux/stat.h> #include <linux/time.h> #include <asm/byteorder.h> +#include <div64.h> #include "ext4_common.h" int ext4fs_symlinknest; @@ -930,7 +931,6 @@ static int ext4fs_write_file(struct ext2_inode *file_inode, int previous_block_number = -1; int delayed_start = 0; int delayed_extent = 0; - int delayed_skipfirst = 0; int delayed_next = 0; char *delayed_buf = NULL; @@ -963,7 +963,6 @@ static int ext4fs_write_file(struct ext2_inode *file_inode, previous_block_number = blknr; delayed_start = blknr; delayed_extent = blockend; - delayed_skipfirst = skipfirst; delayed_buf = buf; delayed_next = blknr + (blockend >> SECTOR_BITS); @@ -972,7 +971,6 @@ static int ext4fs_write_file(struct ext2_inode *file_inode, previous_block_number = blknr; delayed_start = blknr; delayed_extent = blockend; - delayed_skipfirst = skipfirst; delayed_buf = buf; delayed_next = blknr + (blockend >> SECTOR_BITS); @@ -1013,8 +1011,6 @@ int ext4fs_write(const char *fname, unsigned char *buffer, unsigned int blks_reqd_for_file; unsigned int blocks_remaining; int existing_file_inodeno; - char filename[256]; - char *temp_ptr = NULL; long int itable_blkno; long int parent_itable_blkno; @@ -1023,6 +1019,9 @@ int ext4fs_write(const char *fname, unsigned char *buffer, unsigned int inodes_per_block; unsigned int ibmap_idx; struct ext_filesystem *fs = get_fs(); + ALLOC_CACHE_ALIGN_BUFFER(char, filename, 256); + memset(filename, 0x00, sizeof(filename)); + g_parent_inode = zalloc(sizeof(struct ext2_inode)); if (!g_parent_inode) goto fail; @@ -1051,8 +1050,8 @@ int ext4fs_write(const char *fname, unsigned char *buffer, } /* calucalate how many blocks required */ bytes_reqd_for_file = sizebytes; - blks_reqd_for_file = bytes_reqd_for_file / fs->blksz; - if (bytes_reqd_for_file % fs->blksz != 0) { + blks_reqd_for_file = lldiv(bytes_reqd_for_file, fs->blksz); + if (do_div(bytes_reqd_for_file, fs->blksz) != 0) { blks_reqd_for_file++; debug("total bytes for a file %u\n", blks_reqd_for_file); } @@ -257,6 +257,7 @@ int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], unsigned long pos; int len_read; char buf[12]; + unsigned long time; if (argc < 2) return CMD_RET_USAGE; @@ -293,11 +294,19 @@ int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], else pos = 0; + time = get_timer(0); len_read = fs_read(filename, addr, pos, bytes); + time = get_timer(time); if (len_read <= 0) return 1; - printf("%d bytes read\n", len_read); + printf("%d bytes read in %lu ms", len_read, time); + if (time > 0) { + puts(" ("); + print_size(len_read / time * 1000, "/s"); + puts(")"); + } + puts("\n"); sprintf(buf, "0x%x", len_read); setenv("filesize", buf); diff --git a/fs/zfs/zfs.c b/fs/zfs/zfs.c index 2db45b1..1b73244 100644 --- a/fs/zfs/zfs.c +++ b/fs/zfs/zfs.c @@ -30,6 +30,7 @@ #include <linux/ctype.h> #include <asm/byteorder.h> #include "zfs_common.h" +#include "div64.h" block_dev_desc_t *zfs_dev_desc; @@ -2115,7 +2116,8 @@ zfs_read(zfs_file_t file, char *buf, uint64_t len) /* * Find requested blkid and the offset within that block. */ - uint64_t blkid = (file->offset + red) / blksz; + uint64_t blkid = file->offset + red; + blkid = do_div(blkid, blksz); free(data->file_buf); data->file_buf = 0; |