public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command
@ 2012-11-26 16:13 Lukasz Majewski
  2012-11-26 16:13 ` [U-Boot] [PATCH 1/4] fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division Lukasz Majewski
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Lukasz Majewski @ 2012-11-26 16:13 UTC (permalink / raw)
  To: u-boot

Several fixes for ext4write command including:
- compiler warnings suppress
- lldiv() and do_div() instead of "plain" / and %  operands for 64-32 bits
- Proper initialization of dev_desc

Lukasz Majewski (4):
  fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division
  fs:ext4:write: Store block device descriptor in file system structure
  fs:ext4:fix: Code refactoring to suppress compiler warnings
  arm:trats: Adjust Samsung's TRATS config file

 fs/ext4/dev.c           |    1 +
 fs/ext4/ext4_common.c   |   14 ++++++++++----
 fs/ext4/ext4_journal.c  |    3 +--
 fs/ext4/ext4fs.c        |    8 +++-----
 include/configs/trats.h |    5 +++++
 5 files changed, 20 insertions(+), 11 deletions(-)

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 1/4] fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division
  2012-11-26 16:13 [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
@ 2012-11-26 16:13 ` Lukasz Majewski
  2012-11-26 16:13 ` [U-Boot] [PATCH 2/4] fs:ext4:write: Store block device descriptor in file system structure Lukasz Majewski
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Lukasz Majewski @ 2012-11-26 16:13 UTC (permalink / raw)
  To: u-boot

The ext4write code has been using direct calls to 64-32 division
(/ and %).

Officially supported u-boot toolchains (eldk-5.[12].x) generate calls
to __aeabi_uldivmod(), which is niether defined in the toolchain libs
nor u-boot source tree.

Due to that, when the ext4write command has been executed, "undefined
instruction" execption was generated (since the __aeabi_uldivmod()
is not provided).

To fix this error, lldiv() for division and do_div() for modulo have
been used.

Those two functions are recommended for performing 64-32 bit number
division in u-boot.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 fs/ext4/ext4fs.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c
index 06536ba..80b3b90 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;
@@ -1051,8 +1052,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);
 	}
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 2/4] fs:ext4:write: Store block device descriptor in file system structure
  2012-11-26 16:13 [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
  2012-11-26 16:13 ` [U-Boot] [PATCH 1/4] fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division Lukasz Majewski
@ 2012-11-26 16:13 ` Lukasz Majewski
  2012-11-26 16:13 ` [U-Boot] [PATCH 3/4] fs:ext4:fix: Code refactoring to suppress compiler warnings Lukasz Majewski
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Lukasz Majewski @ 2012-11-26 16:13 UTC (permalink / raw)
  To: u-boot

The device block descriptor (block_dev_desc_t) )shall be stored at
ext4 early code (at ext4fs_set_blk_dev in this case) to be available
for latter use (like put_ext4()).

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 fs/ext4/dev.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

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)
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 3/4] fs:ext4:fix: Code refactoring to suppress compiler warnings
  2012-11-26 16:13 [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
  2012-11-26 16:13 ` [U-Boot] [PATCH 1/4] fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division Lukasz Majewski
  2012-11-26 16:13 ` [U-Boot] [PATCH 2/4] fs:ext4:write: Store block device descriptor in file system structure Lukasz Majewski
@ 2012-11-26 16:13 ` Lukasz Majewski
  2012-12-02 21:13   ` Simon Glass
  2012-11-26 16:13 ` [U-Boot] [PATCH 4/4] arm:trats: Adjust Samsung's TRATS config file Lukasz Majewski
  2012-12-04  8:49 ` [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
  4 siblings, 1 reply; 7+ messages in thread
From: Lukasz Majewski @ 2012-11-26 16:13 UTC (permalink / raw)
  To: u-boot

Several fixes to suppress compiler's (eldk-5.[12].x  gcc 4.6)
warning  [-Wunused-but-set-variable]

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 fs/ext4/ext4_common.c  |   14 ++++++++++----
 fs/ext4/ext4_journal.c |    3 +--
 fs/ext4/ext4fs.c       |    3 ---
 3 files changed, 11 insertions(+), 9 deletions(-)

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 80b3b90..64d8a6d 100644
--- a/fs/ext4/ext4fs.c
+++ b/fs/ext4/ext4fs.c
@@ -931,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;
 
@@ -964,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);
@@ -973,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);
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 4/4] arm:trats: Adjust Samsung's TRATS config file
  2012-11-26 16:13 [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
                   ` (2 preceding siblings ...)
  2012-11-26 16:13 ` [U-Boot] [PATCH 3/4] fs:ext4:fix: Code refactoring to suppress compiler warnings Lukasz Majewski
@ 2012-11-26 16:13 ` Lukasz Majewski
  2012-12-04  8:49 ` [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
  4 siblings, 0 replies; 7+ messages in thread
From: Lukasz Majewski @ 2012-11-26 16:13 UTC (permalink / raw)
  To: u-boot

- Enable EXT4 command with write at Samsung's TRATS boards
- Enable support for EFI partitions

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
---
 include/configs/trats.h |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/include/configs/trats.h b/include/configs/trats.h
index 355029e..214c980 100644
--- a/include/configs/trats.h
+++ b/include/configs/trats.h
@@ -103,6 +103,10 @@
 #define CONFIG_CMD_FAT
 #define CONFIG_FAT_WRITE
 
+/* EXT4 */
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+
 /* USB Composite download gadget - g_dnl */
 #define CONFIG_USBDOWNLOAD_GADGET
 #define CONFIG_DFU_FUNCTION
@@ -207,6 +211,7 @@
 #define CONFIG_ENV_OFFSET		((32 - 4) << 10) /* 32KiB - 4KiB */
 
 #define CONFIG_DOS_PARTITION
+#define CONFIG_EFI_PARTITION
 
 #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_CACHELINE_SIZE       32
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 3/4] fs:ext4:fix: Code refactoring to suppress compiler warnings
  2012-11-26 16:13 ` [U-Boot] [PATCH 3/4] fs:ext4:fix: Code refactoring to suppress compiler warnings Lukasz Majewski
@ 2012-12-02 21:13   ` Simon Glass
  0 siblings, 0 replies; 7+ messages in thread
From: Simon Glass @ 2012-12-02 21:13 UTC (permalink / raw)
  To: u-boot

On Mon, Nov 26, 2012 at 8:13 AM, Lukasz Majewski <l.majewski@samsung.com> wrote:
> Several fixes to suppress compiler's (eldk-5.[12].x  gcc 4.6)
> warning  [-Wunused-but-set-variable]
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>

This removes the warnings for me on gcc 4.6 and 4.7, and from my
reading does not change the function.

Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command
  2012-11-26 16:13 [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
                   ` (3 preceding siblings ...)
  2012-11-26 16:13 ` [U-Boot] [PATCH 4/4] arm:trats: Adjust Samsung's TRATS config file Lukasz Majewski
@ 2012-12-04  8:49 ` Lukasz Majewski
  4 siblings, 0 replies; 7+ messages in thread
From: Lukasz Majewski @ 2012-12-04  8:49 UTC (permalink / raw)
  To: u-boot

Dear All,

> Several fixes for ext4write command including:
> - compiler warnings suppress
> - lldiv() and do_div() instead of "plain" / and %  operands for 64-32
> bits
> - Proper initialization of dev_desc
> 
> Lukasz Majewski (4):
>   fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division
>   fs:ext4:write: Store block device descriptor in file system
> structure fs:ext4:fix: Code refactoring to suppress compiler warnings
>   arm:trats: Adjust Samsung's TRATS config file
> 
>  fs/ext4/dev.c           |    1 +
>  fs/ext4/ext4_common.c   |   14 ++++++++++----
>  fs/ext4/ext4_journal.c  |    3 +--
>  fs/ext4/ext4fs.c        |    8 +++-----
>  include/configs/trats.h |    5 +++++
>  5 files changed, 20 insertions(+), 11 deletions(-)
> 

Any comments (despite of Simon's Acked-by on patch 3/4)?

-- 
Best regards,

Lukasz Majewski

Samsung Poland R&D Center | Linux Platform Group

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-12-04  8:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-26 16:13 [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski
2012-11-26 16:13 ` [U-Boot] [PATCH 1/4] fs:ext4:write: Add lldiv and do_div to perform 64-32 bits division Lukasz Majewski
2012-11-26 16:13 ` [U-Boot] [PATCH 2/4] fs:ext4:write: Store block device descriptor in file system structure Lukasz Majewski
2012-11-26 16:13 ` [U-Boot] [PATCH 3/4] fs:ext4:fix: Code refactoring to suppress compiler warnings Lukasz Majewski
2012-12-02 21:13   ` Simon Glass
2012-11-26 16:13 ` [U-Boot] [PATCH 4/4] arm:trats: Adjust Samsung's TRATS config file Lukasz Majewski
2012-12-04  8:49 ` [U-Boot] [PATCH 0/4] fs:ext4:fix: Fixes for ext4write command Lukasz Majewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox