fs: delete unused Makefile
Subsystems (4)
PATCH v4 1/3 fs: delete unused Makefile
From: Stephen Warren <[email protected]>
fs/Makefile is unused. The top-level Makefile sets LIBS-y += fs/xxx and hence causes make to directly descend two directory levels into each individual filesystem, and it never descends into fs/ itself.
So, delete this useless file.
---
v4: No change.
v3: No change.
v2: No change.
--- fs/Makefile | 42 ------------------------------------------ 1 files changed, 0 insertions(+), 42 deletions(-) delete mode 100644 fs/Makefile
fs/Makefile deleted +0 -42
@@ -1,42 +0,0 @@ -# -# (C) Copyright 2000-2006 -# Wolfgang Denk, DENX Software Engineering, wd at denx.de. -# -# 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 -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, -# MA 02111-1307 USA -# -# - -subdirs-$(CONFIG_CMD_CRAMFS) := cramfs -subdirs-$(CONFIG_CMD_EXT4) += ext4 -ifndef CONFIG_CMD_EXT4 -subdirs-$(CONFIG_CMD_EXT2) += ext4 -endif -subdirs-$(CONFIG_CMD_FAT) += fat -subdirs-$(CONFIG_CMD_FDOS) += fdos -subdirs-$(CONFIG_CMD_JFFS2) += jffs2 -subdirs-$(CONFIG_CMD_REISER) += reiserfs -subdirs-$(CONFIG_YAFFS2) += yaffs2 -subdirs-$(CONFIG_CMD_UBIFS) += ubifs -subdirs-$(CONFIG_CMD_ZFS) += zfs - -SUBDIRS := $(subdirs-y) - -$(obj).depend all: - @for dir in $(SUBDIRS) ; do \ - $(MAKE) -C $$dir $@ ; done
Signature · 1 line
1.7.0.4
PATCH v4 2/3 fs: separate CONFIG_FS_{FAT, EXT4} from CONFIG_CMD_{FAT, EXT*}
From: Stephen Warren <[email protected]>
This makes the FAT and ext4 filesystem implementations build if CONFIG_FS_{FAT,EXT4} are defined, rather than basing the build on whether CONFIG_CMD_{FAT,EXT*} are defined. This will allow the filesystems to be built separately from the filesystem-specific commands that use them. This paves the way for the creation of filesystem-generic commands that used the filesystems, without requiring the filesystem- specific commands.
Minor documentation changes are made for this change.
The new config options are automatically selected by the old config options to retain backwards-compatibility.
---
v4: No change.
v3: No change.
v2: New patch.
--- README | 4 +++- doc/README.ext4 | 13 +++++++++++++ fs/ext4/Makefile | 7 ++----- fs/ext4/ext4_common.c | 2 +- fs/ext4/ext4_common.h | 4 ++-- fs/ext4/ext4fs.c | 2 +- fs/fat/Makefile | 4 ++-- include/config_fallbacks.h | 13 +++++++++++++ include/ext4fs.h | 2 +- 9 files changed, 38 insertions(+), 13 deletions(-)
README +3 -1
@@ -801,9 +801,11 @@ The following options need to be configured: CONFIG_CMD_EEPROM * EEPROM read/write support CONFIG_CMD_ELF * bootelf, bootvx CONFIG_CMD_EXPORTENV * export the environment + CONFIG_CMD_EXT2 * ext2 command support + CONFIG_CMD_EXT4 * ext4 command support CONFIG_CMD_SAVEENV saveenv CONFIG_CMD_FDC * Floppy Disk Support - CONFIG_CMD_FAT * FAT partition support + CONFIG_CMD_FAT * FAT command support CONFIG_CMD_FDOS * Dos diskette Support CONFIG_CMD_FLASH flinfo, erase, protect CONFIG_CMD_FPGA FPGA device initialization support
doc/README.ext4 +13 -0
@@ -1,15 +1,28 @@ This patch series adds support for ext4 ls,load and write features in uboot Journaling is supported for write feature. +To enable support for the ext4 (and ext2) filesystem implementation, +#define CONFIG_FS_EXT4 + +If you want write support, +#define CONFIG_EXT4_WRITE + To Enable ext2 ls and load commands, modify the board specific config file with #define CONFIG_CMD_EXT2 +This automatically defines CONFIG_FS_EXT4 for you. To Enable ext4 ls and load commands, modify the board specific config file with #define CONFIG_CMD_EXT4 +This automatically defines CONFIG_FS_EXT4 for you. To enable ext4 write command, modify the board specific config file with #define CONFIG_CMD_EXT4 #define CONFIG_CMD_EXT4_WRITE +These automatically define CONFIG_FS_EXT4 and CONFIG_EXT4_WRITE for you. + +Also relevant are the generic filesystem commands, +#define CONFIG_CMD_FS_GENERIC +This does not automatically enable EXT4 support for you. Steps to test:
fs/ext4/Makefile +2 -5
@@ -30,11 +30,8 @@ include $(TOPDIR)/config.mk LIB = $(obj)libext4fs.o AOBJS = -COBJS-$(CONFIG_CMD_EXT4) := ext4fs.o ext4_common.o dev.o -ifndef CONFIG_CMD_EXT4 -COBJS-$(CONFIG_CMD_EXT2) := ext4fs.o ext4_common.o dev.o -endif -COBJS-$(CONFIG_CMD_EXT4_WRITE) += ext4_journal.o crc16.o +COBJS-$(CONFIG_FS_EXT4) := ext4fs.o ext4_common.o dev.o +COBJS-$(CONFIG_EXT4_WRITE) += ext4_journal.o crc16.o SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(AOBJS) $(COBJS-y))
fs/ext4/ext4_common.c +1 -1
@@ -56,7 +56,7 @@ int ext4fs_indir3_blkno = -1;struct ext2_inode *g_parent_inode;static int symlinknest; -#if defined(CONFIG_CMD_EXT4_WRITE ) +#if defined(CONFIG_EXT4_WRITE )uint32_t ext4fs_div_roundup (uint32_t size,uint32_t n) {uint32_t res = size / n;
fs/ext4/ext4_common.h +2 -2
@@ -37,7 +37,7 @@#include <ext4fs.h> #include <malloc.h> #include <asm/errno.h> -#if defined(CONFIG_CMD_EXT4_WRITE ) +#if defined(CONFIG_EXT4_WRITE )#include "ext4_journal.h" #include "crc16.h" #endif
@@ -71,7 +71,7 @@ int ext4fs_find_file(const char *path, struct ext2fs_node *rootnode,int ext4fs_iterate_dir (struct ext2fs_node *dir,char *name,struct ext2fs_node **fnode,int *ftype); -#if defined(CONFIG_CMD_EXT4_WRITE ) +#if defined(CONFIG_EXT4_WRITE )uint32_t ext4fs_div_roundup (uint32_t size,uint32_t n);int ext4fs_checksum_update (unsigned int i);int ext4fs_get_parent_inode_num (const char *dirname,char *dname,int flags);
fs/ext4/ext4fs.c +1 -1
@@ -196,7 +196,7 @@ int ext4fs_read(char *buf, unsigned len)return ext4fs_read_file (ext4fs_file,0 , len, buf); } -#if defined(CONFIG_CMD_EXT4_WRITE ) +#if defined(CONFIG_EXT4_WRITE )static void ext4fs_update (void ) {short i;
fs/fat/Makefile +2 -2
@@ -24,11 +24,11 @@ include $(TOPDIR)/config.mk LIB = $(obj)libfat.o AOBJS = -COBJS-$(CONFIG_CMD_FAT) := fat.o +COBJS-$(CONFIG_FS_FAT) := fat.o COBJS-$(CONFIG_FAT_WRITE):= fat_write.o ifndef CONFIG_SPL_BUILD -COBJS-$(CONFIG_CMD_FAT) += file.o +COBJS-$(CONFIG_FS_FAT) += file.o endif SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c)
include/config_fallbacks.h +13 -0
@@ -13,4 +13,17 @@#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }#endif +#if defined(CONFIG_CMD_FAT ) && !defined(CONFIG_FS_FAT ) +#define CONFIG_FS_FAT +#endif + +#if (defined(CONFIG_CMD_EXT4 ) || defined(CONFIG_CMD_EXT2 )) && \ + !defined(CONFIG_FS_EXT4 ) +#define CONFIG_FS_EXT4 +#endif + +#if defined(CONFIG_CMD_EXT4_WRITE ) && !defined(CONFIG_EXT4_WRITE ) +#define CONFIG_EXT4_WRITE +#endif +#endif /* __CONFIG_FALLBACKS_H */
include/ext4fs.h +1 -1
@@ -116,7 +116,7 @@ struct ext_filesystem {extern struct ext2_data *ext4fs_root;extern struct ext2fs_node *ext4fs_file; -#if defined(CONFIG_CMD_EXT4_WRITE ) +#if defined(CONFIG_EXT4_WRITE )extern struct ext2_inode *g_parent_inode;extern int gd_index;extern int gindex;
Signature · 1 line
1.7.0.4
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
In reply to Stephen WarrenFrom: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load}, and transparently handle either file-system. This scheme could easily be extended to other filesystem types; I only didn't do it for zfs because I don't have any filesystems of that type to test with.
Replace the implementation of {fat,ext[24]}{ls,load} with this new code too.
---
v4:
* Use FS_TYPE_* everywhere, rather than separate FS_* and FS_TYPE_*.
* Make fs_set_blk_dev() loop over a table of filesystems.
v3:
* Updated the implementation of the new commands to be suitable for use as the body of {fat,ext[24]}{ls,load} too.
* Enhanced the implementation to make more fsload parameters optional (load address, filename); they can now come from environment variables like ext2load supported.
* Moved implementation into fs.c.
* Removed cmd_ext_common.c.
* s/partition/filesystem/ in patch subject.
v2:
* Build cmd_fs.c when CONFIG_CMD_FS_GENERIC not always.
* Use new CONFIG_FS_{FAT,EXT4} rather than CONFIG_CMD_{FAT,EXT2}.
* Implemented fs_close() and call it from the tail of fs_ls() and fs_read(). This ensures that any other usage of e.g. the ext4 library between fs_*() calls, then the two usages won't interfere.
* Re-organized fs.c to reduce the number of ifdef blocks.
* Added argc checking to do_ls().
--- Makefile | 3 +- common/Makefile | 6 +- common/cmd_ext2.c | 13 +-- common/cmd_ext4.c | 12 +-- common/cmd_ext_common.c | 197 ------------------------------ common/cmd_fat.c | 76 +----------- common/cmd_fs.c | 51 ++++++++ fs/Makefile | 47 +++++++ fs/fs.c | 308 +++++++++++++++++++++++++++++++++++++++++++++++ include/ext_common.h | 3 - include/fs.h | 65 ++++++++++ 11 files changed, 483 insertions(+), 298 deletions(-) delete mode 100644 common/cmd_ext_common.c create mode 100644 common/cmd_fs.c create mode 100644 fs/Makefile create mode 100644 fs/fs.c create mode 100644 include/fs.h
Makefile +2 -1
@@ -260,7 +260,8 @@ LIBS-y += drivers/net/npe/libnpe.o endif LIBS-$(CONFIG_OF_EMBED) += dts/libdts.o LIBS-y += arch/$(ARCH)/lib/lib$(ARCH).o -LIBS-y += fs/cramfs/libcramfs.o \ +LIBS-y += fs/libfs.o \ + fs/cramfs/libcramfs.o \ fs/ext4/libext4fs.o \ fs/fat/libfat.o \ fs/fdos/libfdos.o \
common/Makefile +1 -5
@@ -88,11 +88,6 @@ COBJS-$(CONFIG_CMD_ELF) += cmd_elf.o COBJS-$(CONFIG_SYS_HUSH_PARSER) += cmd_exit.o COBJS-$(CONFIG_CMD_EXT4) += cmd_ext4.o COBJS-$(CONFIG_CMD_EXT2) += cmd_ext2.o -ifdef CONFIG_CMD_EXT4 -COBJS-y += cmd_ext_common.o -else -COBJS-$(CONFIG_CMD_EXT2) += cmd_ext_common.o -endif COBJS-$(CONFIG_CMD_FAT) += cmd_fat.o COBJS-$(CONFIG_CMD_FDC)$(CONFIG_CMD_FDOS) += cmd_fdc.o COBJS-$(CONFIG_OF_LIBFDT) += cmd_fdt.o fdt_support.o
@@ -102,6 +97,7 @@ COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o ifdef CONFIG_FPGA COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o endif +COBJS-$(CONFIG_CMD_FS_GENERIC) += cmd_fs.o COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o
common/cmd_ext2.c +3 -10
@@ -37,15 +37,11 @@/* * Ext2fs support */ -#include <common.h> -#include <ext_common.h> +#include <fs.h> int do_ext2ls (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) { -if (do_ext_ls (cmdtp, flag, argc, argv)) -return -1 ; - -return 0 ; +return do_ls (cmdtp, flag, argc, argv,FS_TYPE_EXT ); }/******************************************************************************
@@ -53,10 +49,7 @@ int do_ext2ls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])*/ int do_ext2load (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) { -if (do_ext_load (cmdtp, flag, argc, argv)) -return -1 ; - -return 0 ; +return do_fsload (cmdtp, flag, argc, argv,FS_TYPE_EXT ); } U_BOOT_CMD(
common/cmd_ext4.c +3 -9
@@ -47,10 +47,10 @@#include <image.h> #include <linux/ctype.h> #include <asm/byteorder.h> -#include <ext_common.h> #include <ext4fs.h> #include <linux/stat.h> #include <malloc.h> +#include <fs.h> #if defined(CONFIG_CMD_USB ) && defined(CONFIG_USB_STORAGE )#include <usb.h>
@@ -59,18 +59,12 @@int do_ext4_load (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) { -if (do_ext_load (cmdtp, flag, argc, argv)) -return -1 ; - -return 0 ; +return do_fsload (cmdtp, flag, argc, argv,FS_TYPE_EXT ); }int do_ext4_ls (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) { -if (do_ext_ls (cmdtp, flag, argc, argv)) -return -1 ; - -return 0 ; +return do_ls (cmdtp, flag, argc, argv,FS_TYPE_EXT ); }#if defined(CONFIG_CMD_EXT4_WRITE )
common/cmd_ext_common.c deleted +0 -197
197 lines not on this page · raw message
common/cmd_fat.c +3 -73
91 lines not on this page · raw message
common/cmd_fs.c new file +51 -0
51 lines not on this page · raw message
fs/Makefile new file +47 -0
47 lines not on this page · raw message
fs/fs.c new file +308 -0
308 lines not on this page · raw message
include/ext_common.h +0 -3
@@ -195,7 +195,4 @@ int do_ext4_load(cmd_tbl_t *cmdtp, int flag, int argc,int do_ext4_ls (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]);int do_ext4_write (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]); -int do_ext_load (cmd_tbl_t *cmdtp,int flag,int argc, -char *const argv[]); -int do_ext_ls (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]);#endif
include/fs.h new file +65 -0
65 lines not on this page · raw message
Signature · 1 line
1.7.0.4
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
Dear all,
Quoted 11 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load}, and transparently handle either file-system. This scheme could easily be extended to other filesystem types; I only didn't do it for zfs because I don't have any filesystems of that type to test with.
Replace the implementation of {fat,ext[24]}{ls,load} with this new code too.
Signed-off-by Stephen Warren <[email protected]>
this patch (namely 045fa1e1142552799ad3203e9e0bc22a11e866ea) seems to break avr32 on runtime. It seems there is a new array introduced (the fstypes array in fs/fs.c) which do not provide a relocation method (CONFIG_NEEDS_MANUAL_RELOC). This is currently only a weak assumption, but has any other requiring manual relocation m86k, mips, nds32m sparc) also encountered this problem?
Quoted 1 line
---
<snip>
Quoted 6 lines
fs/fs.c new file +0
-0@@ -0,0 +1,308 @@
<snip>
Quoted 4 lines
fs/fs.c new file +4
-0+ +static const struct { + int fstype; + int (*probe)(void);
fs/fs.c line 156
Quoted 10 lines
fs/fs.c new file +10
-0+} fstypes[] = { + { + .fstype = FS_TYPE_FAT, + .probe = fs_probe_fat, + }, + { + .fstype = FS_TYPE_EXT, + .probe = fs_probe_ext, + }, +};
I currently think this should be manually relocated for those arches which need the manual relocation.
Quoted 13 lines
fs/fs.c new file +13
-0+ +int fs_set_blk_dev (const char *ifname,const char *dev_part_str,int fstype) +{ +int part, i; + + part =get_device_and_partition (ifname, dev_part_str, &fs_dev_desc, + &fs_partition,1 ); +if (part <0 ) +return -1 ; + +for (i =0 ; i <ARRAY_SIZE (fstypes); i++) { +if ((fstype !=FS_TYPE_ANY ) && (fstype != fstypes[i].fstype)) +continue ;
fs/fs.c line 179
Quoted 10 lines
fs/fs.c new file +10
-0+ +if (!fstypes[i].probe ()) { + fs_type = fstypes[i].fstype; +return 0 ; + } + } + +printf ("** Unrecognized filesystem type **\n" ); +return -1 ; +}
Best regards
Andreas Bie?mann
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
Quoted 13 lines · Andreas Bie?mann
Dear all,
Quoted 10 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load}, and transparently handle either file-system. This scheme could easily be extended to other filesystem types; I only didn't do it for zfs because I don't have any filesystems of that type to test with.
Replace the implementation of {fat,ext[24]}{ls,load} with this new code too.
Quoted 8 lines
Quoted 1 line
Signed-off-by Stephen Warren <[email protected]>this patch (namely
045fa1e1142552799ad3203e9e0bc22a11e866ea) seems to break avr32 on runtime. It seems there is a new array introduced (the fstypes array infs/fs.c) which do not provide a relocation method (CONFIG_NEEDS_MANUAL_RELOC). This is currently only a weak assumption, but has any other requiring manual relocation m86k, mips, nds32m sparc) also encountered this problem?
Urk, sorry. Can you prepare and test a patch? Thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121030/d9c0af31/attachment.pgp>
PATCH 1/1 fs/fs.c: fix fs_set_blk_dev() for manual relocation
Commit 045fa1e1142552799ad3203e9e0bc22a11e866ea introduce an array with filesystem accessors. On arches which need manual reloc this is broken cause the function pointers still pointing to the privious location, fix it.
--- fs/fs.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
fs/fs.c +15 -1
@@ -21,6 +21,8 @@#include <fat.h> #include <fs.h> +DECLARE_GLOBAL_DATA_PTR ; +static block_dev_desc_t *fs_dev_desc;static disk_partition_t fs_partition;static int fs_type =FS_TYPE_ANY ;
@@ -141,7 +143,7 @@ static inline void fs_close_ext(void)#define fs_read_ext fs_read_unsupported#endif -static const struct { +static struct {int fstype;int (*probe)(void ); } fstypes[] = {
@@ -158,6 +160,18 @@ static const struct {int fs_set_blk_dev (const char *ifname,const char *dev_part_str,int fstype) {int part, i; +#ifdef CONFIG_NEEDS_MANUAL_RELOC +static int relocated =0 ; + +/* relocate fstypes[].probe */ +if (!relocated) { +int i; +for (i =0 ; i <ARRAY_SIZE (fstypes); i++) +if (fstypes[i].probe !=NULL ) + fstypes[i].probe += gd->reloc_off; + relocated =1 ; + } +#endif part =get_device_and_partition (ifname, dev_part_str, &fs_dev_desc, &fs_partition,1 );
Signature · 1 line
1.8.0
PATCH 1/1 fs/fs.c: fix fs_set_blk_dev() for manual relocation
Quoted 3 lines · Andreas Bie?mann
Commit
045fa1e1142552799ad3203e9e0bc22a11e866eaintroduce an array with filesystem accessors. On arches which need manual reloc this is broken cause the function pointers still pointing to the privious location, fix it.
We found the same code to copy:-)
fs/fs.c static const struct { · line 164
Quoted 6 lines
fs/fs.c +2
-0int fs_set_blk_dev (const char *ifname,const char *dev_part_str,int fstype) +#ifdef CONFIG_NEEDS_MANUAL_RELOC + static int relocated =0 ;
checkpatch bitches about the "= 0" there. I assume BSS initialization isn't also broken when CONFIG_NEEDS_MANUAL_RELOC is enabled?
PATCH 1/1 fs/fs.c: fix fs_set_blk_dev() for manual relocation
Quoted 9 lines · Stephen Warren
Quoted 3 lines · Andreas Bie??mann
Commit
045fa1e1142552799ad3203e9e0bc22a11e866eaintroduce an array with filesystem accessors. On arches which need manual reloc this is broken cause the function pointers still pointing to the privious location, fix it.We found the same code to copy:-)
Quoted 1 line
fs/fs.c +0
-0
Quoted 7 lines
fs/fs.c static const struct { · line 164
Quoted 4 lines
int
fs_set_blk_dev(const char *ifname, const char *dev_part_str, int fstype)fs/fs.c +2
-0+#ifdef CONFIG_NEEDS_MANUAL_RELOC +static int relocated =0 ;checkpatch bitches about the "= 0" there. I assume BSS initialization isn't also broken when
CONFIG_NEEDS_MANUAL_RELOCis enabled?
The only other example of relocation this way also does an inital assignment to 0. Andreas, can you run-time test? Thanks.
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121030/a40656d0/attachment.pgp>
PATCH 1/1 fs/fs.c: fix fs_set_blk_dev() for manual relocation
In reply to Stephen WarrenDear Stephen Warren,
Quoted 6 lines · Stephen Warren
Quoted 3 lines · Andreas Bie?mann
Commit
045fa1e1142552799ad3203e9e0bc22a11e866eaintroduce an array with filesystem accessors. On arches which need manual reloc this is broken cause the function pointers still pointing to the privious location, fix it.We found the same code to copy:-)
we did ;)
Quoted 9 lines
fs/fs.c static const struct { · line 164
Quoted 6 lines
fs/fs.c +2
-0int fs_set_blk_dev (const char *ifname,const char *dev_part_str,int fstype) +#ifdef CONFIG_NEEDS_MANUAL_RELOC + static int relocated =0 ;checkpatch bitches about the "= 0" there. I assume BSS initialization isn't also broken when
CONFIG_NEEDS_MANUAL_RELOCis enabled?
For AVR32 BSS initialization is working correctly, I do not know how the other arches behave, but I think it is Ok to remove the '0' here. Also the check for fstypes[i].probe != NULL in my patch seems to be not necessary. So I would favor using your patch then.
Best regards
Andreas Bie?mann
PATCH 1/1 fs: handle CONFIG_NEEDS_MANUAL_RELOC
In reply to Andreas BießmannFrom: Stephen Warren <[email protected]>
Without this, fstypes[].probe points at the wrong place, so calling the function results in undefined behaviour.
---
Note: I have compile-tested this with the relocation code forcibly enabled, but have no way of actually testing the result.
--- fs/fs.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-)
fs/fs.c +12 -1
@@ -21,6 +21,8 @@#include <fat.h> #include <fs.h> +DECLARE_GLOBAL_DATA_PTR ; +static block_dev_desc_t *fs_dev_desc;static disk_partition_t fs_partition;static int fs_type =FS_TYPE_ANY ;
@@ -141,7 +143,7 @@ static inline void fs_close_ext(void)#define fs_read_ext fs_read_unsupported#endif -static const struct { +static struct {int fstype;int (*probe)(void ); } fstypes[] = {
@@ -158,6 +160,15 @@ static const struct {int fs_set_blk_dev (const char *ifname,const char *dev_part_str,int fstype) {int part, i; +#ifdef CONFIG_NEEDS_MANUAL_RELOC +static int relocated; + +if (!relocated) { +for (i =0 ; i <ARRAY_SIZE (fstypes); i++) + fstypes[i].probe += gd->reloc_off; + relocated =1 ; + } +#endif part =get_device_and_partition (ifname, dev_part_str, &fs_dev_desc, &fs_partition,1 );
Signature · 1 line
1.7.0.4
PATCH 1/1 fs: handle CONFIG_NEEDS_MANUAL_RELOC
Dear Stephen Warren,
Quoted 6 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Without this, fstypes[].probe points at the wrong place, so calling the function results in undefined behaviour.
Signed-off-by Stephen Warren <[email protected]>
Tested on AVR32 (atstk1002)
Quoted 4 lines
---
Note: I have compile-tested this with the relocation code forcibly enabled, but have no way of actually testing the result.
---
Best regards
Andreas Bie?mann
PATCH 1/1 fs: handle CONFIG_NEEDS_MANUAL_RELOC
Quoted 5 lines · Andreas Bie?mann
Dear Stephen Warren,
Quoted 2 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Quoted 8 lines
Quoted 4 lines
Without this, fstypes[].probe points at the wrong place, so calling the function results in undefined behaviour.
Signed-off-by Stephen Warren <[email protected]>Tested on AVR32 (atstk1002)
Tested-by Andreas Bie?mann <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121104/de25a932/attachment.pgp>
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
In reply to Stephen WarrenHi Stephen,
Quoted 10 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load},
and transparently handle either file-system. This scheme could easily be
extended to other filesystem types; I only didn't do it for zfs because
I don't have any filesystems of that type to test with.
Quoted 5 lines
Replace the implementation of {fat,ext[24]}{ls,load} with this new code
too.Signed-off-by Stephen Warren <[email protected]>
Sorry to come after this has been applied. I've been ultra busy lately.
[--snip--]
fs/fs.c
Quoted 6 lines
fs/fs.c new file +0
-0@@ -0,0 +1,308 @@
[--snip--]
fs/fs.c line 250
Quoted 13 lines
fs/fs.c new file +1
-0+int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * constargv[],
fs/fs.c new file +11
-0+ int fstype) +{ +unsigned long addr; +const char *addr_str; +const char *filename; +unsigned long bytes; +unsigned long pos; +int len_read; +char buf[12 ]; + +if (argc <5 )
With the arguments now made optional, this should rather be:
+ if (argc < 2)
fs/fs.c line 253
Quoted 3 lines
fs/fs.c new file +3
-0+return CMD_RET_USAGE ; + +if (fs_set_blk_dev (argv[1 ], argv[2 ], fstype))
With <dev[:part]> being optional, this should rather be:
+ if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL, fstype))
fs/fs.c line 257
Quoted 4 lines
fs/fs.c new file +4
-0+return 1 ; + +if (argc >=4 ) { + addr =simple_strtoul (argv[3 ],NULL ,0 );
0 is just natural here. However, this raises the issue of the users of the legacy fat and ext commands, which used 16 here. So should we use 0 because it is cleaner, or 16 in order not to break compatibility for existing users?
fs/fs.c line 261
Quoted 4 lines
fs/fs.c new file +4
-0+ }else { + addr_str =getenv ("loadaddr" ); +if (addr_str !=NULL ) + addr =simple_strtoul (addr_str,NULL ,16 );
Ditto.
Quoted 4 lines
fs/fs.c new file +4
-0+else + addr =CONFIG_SYS_LOAD_ADDR ; + } +if (argc >=5 ) {
fs/fs.c line 275
Quoted 10 lines
fs/fs.c new file +10
-0+ filename = argv[4 ]; + }else { + filename =getenv ("bootfile" ); +if (!filename) { +puts ("** No boot file defined **\n" ); +return 1 ; + } + } +if (argc >=6 ) + bytes =simple_strtoul (argv[5 ],NULL ,0 );
Ditto.
fs/fs.c line 279
Quoted 4 lines
fs/fs.c new file +4
-0+else + bytes =0 ; +if (argc >=7 ) + pos =simple_strtoul (argv[6 ],NULL ,0 );
Ditto.
Quoted 15 lines
fs/fs.c new file +15
-0+else + pos =0 ; + + len_read =fs_read (filename, addr, pos, bytes); +if (len_read <=0 ) +return 1 ; + +printf ("%d bytes read\n" , len_read); + +sprintf (buf,"0x%x" , len_read); +setenv ("filesize" , buf); + +return 0 ; +} +
fs/fs.c line 304
Quoted 10 lines
fs/fs.c new file +10
-0+int do_ls (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[], +int fstype) +{ +if (argc <2 ) +return CMD_RET_USAGE ; + +if (fs_set_blk_dev (argv[1 ], (argc >=3 ) ? argv[2 ] :NULL , fstype)) +return 1 ; + +if (fs_ls (argc ==4 ? argv[3 ] :"/" ))
IMHO, it would be better to just ignore the possible extra arguments, like in:
+ if (fs_ls(argc >= 4 ? argv[3] : "/"))
fs/fs.c line 293
Quoted 4 lines
fs/fs.c new file +4
-0+return 1 ; + +return 0 ; +}
[--snip--]
Best regards,
Beno?t
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
Quoted 21 lines · Beno?t Th?baudeau
Hi Stephen,
Quoted 17 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load},
and transparently handle either file-system. This scheme could easily be
extended to other filesystem types; I only didn't do it for zfs because
I don't have any filesystems of that type to test with.Replace the implementation of {fat,ext[24]}{ls,load} with this new code
too.fs/fs.c +1
-0+int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * const
Quoted 8 lines
fs/fs.c line 257
Quoted 4 lines
fs/fs.c +4
-0+return 1 ; + +if (argc >=4 ) { + addr =simple_strtoul (argv[3 ],NULL ,0 );0 is just natural here. However, this raises the issue of the users of the legacy fat and ext commands, which used 16 here. So should we use 0 because it is cleaner, or 16 in order not to break compatibility for existing users?
Oh yes, that is a problem.
I think we should use 0 here for the new commands at least; it has always annoyed me that U-Boot assumes that clearly non-hex values (since there is no 0x) are actually hex. I often have to manually convert values because of this (e.g. host-based ls decimal output to U-Boot command input expecting hex without leading 0x.)
However, we do need to fix this for the existing legacy commands. I suggest we either:
a) Add a new parameter to do_fsload() indicating which base to use.
or:
b) Assume base 0 if fstype==FS_TYPE_ANY, otherwise use 16.
(a) is probably cleaner.
For the environment variables, I suppose we need to continue to explicitly request base 16 conversion, since those variables could be used with either the old or the new commands.
Review
Quoted 13 lines
fs/fs.c line 304
Quoted 10 lines
fs/fs.c +10
-0+int do_ls (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[], +int fstype) +{ +if (argc <2 ) +return CMD_RET_USAGE ; + +if (fs_set_blk_dev (argv[1 ], (argc >=3 ) ? argv[2 ] :NULL , fstype)) +return 1 ; + +if (fs_ls (argc ==4 ? argv[3 ] :"/" ))IMHO, it would be better to just ignore the possible extra arguments, like in:
(quoted diff) +1
-0+ if (fs_ls(argc >= 4 ? argv[3] : "/"))
Here I don't agree. If the command expects a certain set of arguments, we should validate that the user provided exactly that set, and no more. If we allow arbitrary cruft, then if we need to add new arguments later, we won't be able to guarantee that handling those extra arguments won't break some existing broken usage of the command.
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 28 lines · Stephen Warren
Quoted 19 lines · Beno?t Th?baudeau
Hi Stephen,
Quoted 15 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load}, and transparently handle either file-system. This scheme could easily be extended to other filesystem types; I only didn't do it for zfs because I don't have any filesystems of that type to test with.
Replace the implementation of {fat,ext[24]}{ls,load} with this new code too.
fs/fs.c +1
-0+int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char *const
Quoted 7 lines
Quoted 2 lines
fs/fs.c +1
-0+ return 1; + + if (argc >= 4) { + addr =
simple_strtoul(argv[3], NULL, 0);0 is just natural here. However, this raises the issue of the users of the legacy fat and ext commands, which used 16 here. So should we use 0 because it is cleaner, or 16 in order not to break compatibility for existing users?
Quoted 1 line
Oh yes, that is a problem.
I feel I should be donning a brown paper bag here as well.
Quoted 5 lines
I think we should use 0 here for the new commands at least; it has always annoyed me that U-Boot assumes that clearly non-hex values (since there is no 0x) are actually hex. I often have to manually convert values because of this (e.g. host-based ls decimal output to U-Boot command input expecting hex without leading 0x.)
I feel your pain (and have gotten in the habit of doing lots of printf
+ shell math) but don't like changing expectations on the users, even if they are seemingly odd (since they've gotten used to them too).
Quoted 8 lines
However, we do need to fix this for the existing legacy commands. I suggest we either:
a) Add a new parameter to
do_fsload()indicating which base to use.or:
Quoted 7 lines
b) Assume base 0 if fstype==FS_TYPE_ANY, otherwise use 16.
(a) is probably cleaner.
For the environment variables, I suppose we need to continue to explicitly request base 16 conversion, since those variables could be used with either the old or the new commands.
I agree with (a) along with adding to the help which parts are read in as decimal at the cli.
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/
iQIcBAEBAgAGBQJQkEbSAAoJENk4IS6UOR1W6RsP/3Smcwi5j2SMtVe0P+YjGHrX brNurEoFv60ezqEhssYjxwopTJJpl8Xo8kqS2pcY7JbR8DXszMhacoWhMDwqxqQD DS0tgbMXmXC+hSOs9nM6WY/auJUHbFkC4BbTCaxN8VZ2ovhX/3n//g6Jpbc7G4uC 5Lt0uYercP1NHVEeEoKAyWwklsndS2/+ywj4LN8GWfa7eA/GY0/RIhx56XCSHYLd ogXpOlRY0vZo0egj3a/UNMw3FLCy3XEOKQCGIU6TF5cYK+ZCS15irAFa+o1iv5oB am8Qsu6R6mQr3IgqmM91YV29KlhDYoAfNc8OHJovDYkSvqqon9M3Trr57b3mo0ko FYePs/w529yATS/FeuQgw62/dJd/dccNB/dvna7CjfOW/0B84R/xAAgCnPJn7Jhw +AOjGcILrNGAUQP7kcdNRDRKHelBN1JKsiJdnQpX1m70iAviFAJRV1tl5jktKu8j s57vLfN1uQ9qxcsZ7wyUKkFSfZm2AvdYAl85X9ATPYXKa6Z1acwECZbPXczwRHFm 7bdYZbB9dFIUrE8UMGqYbZUNVwcm+5i5d7pUHDD0rOzklyrqBgrQ/v4FzUSsQQdN eTM8DyrgCqCIbIz5mg63Mhykc20eRwTipp8Laflvp8+/nFUo21lxfvz1wbSMg/n1 /8mEDflYHo4fGKzq414r
=J3B9
-----END PGP SIGNATURE-----
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
In reply to Stephen WarrenQuoted 19 lines · Stephen Warren
Quoted 15 lines · Beno?t Th?baudeau
fs/fs.c line 304
Quoted 12 lines
+int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
fs/fs.c new file +6
-0+ int fstype) +{ +if (argc <2 ) +return CMD_RET_USAGE ; + + if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL,fstype))
fs/fs.c new file +3
-0+return 1 ; + +if (fs_ls (argc ==4 ? argv[3 ] :"/" ))IMHO, it would be better to just ignore the possible extra arguments, like in:
Review
Quoted 1 line
(quoted diff) +1
-0+ if (fs_ls(argc >= 4 ? argv[3] : "/"))Here I don't agree. If the command expects a certain set of
Quoted 8 lines
arguments,
we should validate that the user provided exactly that set, and no more.
If we allow arbitrary cruft, then if we need to add new arguments later,
we won't be able to guarantee that handling those extra arguments won't
break some existing broken usage of the command.
My comment was misleading. Actually, with the current code, do_ls() can not be called (except directly) if there are more than 4 arguments, because of the way the ls command is declared through U_BOOT_CMD(). Hence, if ">=" is used, arguments can be added later without changing existing lines.
And if we consider a direct call to do_ls() skipping the command system, then this function should return CMD_RET_USAGE if argc > 4.
Best regards,
Beno?t
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
Quoted 29 lines · Beno?t Th?baudeau
Quoted 19 lines · Stephen Warren
Quoted 15 lines · Beno?t Th?baudeau
fs/fs.c line 304
Quoted 12 lines
+int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
fs/fs.c new file +6
-0+ int fstype) +{ +if (argc <2 ) +return CMD_RET_USAGE ; + + if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL,fstype))
fs/fs.c new file +3
-0+return 1 ; + +if (fs_ls (argc ==4 ? argv[3 ] :"/" ))IMHO, it would be better to just ignore the possible extra arguments, like in:
Review
Quoted 1 line
(quoted diff) +1
-0+ if (fs_ls(argc >= 4 ? argv[3] : "/"))Here I don't agree. If the command expects a certain set of
Quoted 8 lines
arguments,
we should validate that the user provided exactly that set, and no more.
If we allow arbitrary cruft, then if we need to add new arguments later,
we won't be able to guarantee that handling those extra arguments won't
break some existing broken usage of the command.
Quoted 4 lines
My comment was misleading. Actually, with the current code,
do_ls()can not be called (except directly) if there are more than 4 arguments, because of the way the ls command is declared throughU_BOOT_CMD(). Hence, if ">=" is used, arguments can be added later without changing existing lines.
Ah OK, that makes sense.
Quoted 2 lines
And if we consider a direct call to
do_ls()skipping the command system, then this function should returnCMD_RET_USAGEif argc > 4.
True.
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
In reply to Stephen WarrenDear Stephen Warren,
Quoted 51 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load}, and transparently handle either file-system. This scheme could easily be extended to other filesystem types; I only didn't do it for zfs because I don't have any filesystems of that type to test with.
Replace the implementation of {fat,ext[24]}{ls,load} with this new code too.
Signed-off-by Stephen Warren <[email protected]>---
v4:
* Use FS_TYPE_* everywhere, rather than separate FS_* and FS_TYPE_*.
* Makefs_set_blk_dev()loop over a table of filesystems.
v3:
* Updated the implementation of the new commands to be suitable for use as the body of {fat,ext[24]}{ls,load} too.
* Enhanced the implementation to make more fsload parameters optional (load address, filename); they can now come from environment variables like ext2load supported.
* Moved implementation intofs.c.
* Removedcmd_ext_common.c.
* s/partition/filesystem/ in patch subject.
v2:
* Buildcmd_fs.cwhenCONFIG_CMD_FS_GENERICnot always.
* Use new CONFIG_FS_{FAT,EXT4} rather than CONFIG_CMD_{FAT,EXT2}.
* Implementedfs_close()and call it from the tail offs_ls()andfs_read(). This ensures that any other usage of e.g. the ext4 library between fs_*() calls, then the two usages won't interfere.
* Re-organizedfs.cto reduce the number of ifdef blocks.
* Added argc checking todo_ls().--- Makefile | 3 +- common/Makefile | 6 +- common/cmd_ext2.c | 13 +-- common/cmd_ext4.c | 12 +-- common/cmd_ext_common.c | 197 ------------------------------ common/cmd_fat.c | 76 +----------- common/cmd_fs.c | 51 ++++++++ fs/Makefile | 47 +++++++ fs/fs.c | 308 +++++++++++++++++++++++++++++++++++++++++++++++ include/ext_common.h | 3 - include/fs.h | 65 ++++++++++ 11 files changed, 483 insertions(+), 298 deletions(-) delete mode 100644 common/cmd_ext_common.c create mode 100644 common/cmd_fs.c create mode 100644 fs/Makefile create mode 100644 fs/fs.c create mode 100644 include/fs.h
<snip>
Quoted 25 lines
common/cmd_fs.c new file +19
-0@@ -0,0 +1,51 @@ +/* +* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. +* +* Inspired by cmd_ext_common.c, cmd_fat.c. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms and conditions of the GNU General Public License, +* version 2, as published by the Free Software Foundation. +* +* This program is distributed in the hope it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <common.h>
common/cmd_fs.c line 29
Quoted 10 lines
common/cmd_fs.c new file +10
-0+#include <command.h> +#include <fs.h> + +int do_fsload_wrapper (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) +{ +return do_fsload (cmdtp, flag, argc, argv,FS_TYPE_ANY ); +} + +U_BOOT_CMD( + fsload, 7, 0, do_fsload_wrapper,
I just realized that cmd_jffs2.c also defines a U_BOOT_CMD fsload ... this may also be a problem for users of the old command!
However if one defines CONFIG_CMD_JFFS2 _and_ CONFIG_CMD_FS_GENERIC the linker will throw following warning:
---8<--- /tmp/build_avr32/common/cmd_jffs2.o:(.u_boot_list.cmd.fsload+0x0):
multiple definition of _u_boot_list_cmd_fsload' /tmp/build_avr32/common/cmd_fs.o:(.u_boot_list.cmd.fsload+0x0): first defined here /tmp/build_avr32/common/cmd_jffs2.o:(.u_boot_list.cmd.ls+0x0): multiple definition of _u_boot_list_cmd_ls' /tmp/build_avr32/common/cmd_fs.o:(.u_boot_list.cmd.ls+0x0): first defined here
--->8---
Was this intended?
Best regards
Andreas Bie?mann
PATCH v4 3/3 fs: add filesystem switch libary, implement ls and fsload commands
Quoted 110 lines · Andreas Bie?mann
Dear Stephen Warren,
Quoted 51 lines · Stephen Warren
From: Stephen Warren <[email protected]>
Implement "ls" and "fsload" commands that act like {fat,ext2}{ls,load}, and transparently handle either file-system. This scheme could easily be extended to other filesystem types; I only didn't do it for zfs because I don't have any filesystems of that type to test with.
Replace the implementation of {fat,ext[24]}{ls,load} with this new code too.
Signed-off-by Stephen Warren <[email protected]>---
v4:
* Use FS_TYPE_* everywhere, rather than separate FS_* and FS_TYPE_*.
* Makefs_set_blk_dev()loop over a table of filesystems.
v3:
* Updated the implementation of the new commands to be suitable for use as the body of {fat,ext[24]}{ls,load} too.
* Enhanced the implementation to make more fsload parameters optional (load address, filename); they can now come from environment variables like ext2load supported.
* Moved implementation intofs.c.
* Removedcmd_ext_common.c.
* s/partition/filesystem/ in patch subject.
v2:
* Buildcmd_fs.cwhenCONFIG_CMD_FS_GENERICnot always.
* Use new CONFIG_FS_{FAT,EXT4} rather than CONFIG_CMD_{FAT,EXT2}.
* Implementedfs_close()and call it from the tail offs_ls()andfs_read(). This ensures that any other usage of e.g. the ext4 library between fs_*() calls, then the two usages won't interfere.
* Re-organizedfs.cto reduce the number of ifdef blocks.
* Added argc checking todo_ls().--- Makefile | 3 +- common/Makefile | 6 +- common/cmd_ext2.c | 13 +-- common/cmd_ext4.c | 12 +-- common/cmd_ext_common.c | 197 ------------------------------ common/cmd_fat.c | 76 +----------- common/cmd_fs.c | 51 ++++++++ fs/Makefile | 47 +++++++ fs/fs.c | 308 +++++++++++++++++++++++++++++++++++++++++++++++ include/ext_common.h | 3 - include/fs.h | 65 ++++++++++ 11 files changed, 483 insertions(+), 298 deletions(-) delete mode 100644 common/cmd_ext_common.c create mode 100644 common/cmd_fs.c create mode 100644 fs/Makefile create mode 100644 fs/fs.c create mode 100644 include/fs.h<snip>
Quoted 25 lines
common/cmd_fs.c new file +19
-0@@ -0,0 +1,51 @@ +/* +* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. +* +* Inspired by cmd_ext_common.c, cmd_fat.c. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms and conditions of the GNU General Public License, +* version 2, as published by the Free Software Foundation. +* +* This program is distributed in the hope it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <common.h> common/cmd_fs.c line 29
Quoted 10 lines
common/cmd_fs.c new file +10
-0+#include <command.h> +#include <fs.h> + +int do_fsload_wrapper (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) +{ +return do_fsload (cmdtp, flag, argc, argv,FS_TYPE_ANY ); +} + +U_BOOT_CMD( + fsload, 7, 0, do_fsload_wrapper,I just realized that
cmd_jffs2.calso defines aU_BOOT_CMDfsload ... this may also be a problem for users of the old command!However if one defines
CONFIG_CMD_JFFS2_and_CONFIG_CMD_FS_GENERICthe linker will throw following warning:---8<--- /tmp/build_avr32/common/cmd_jffs2.o:(.u_boot_list.cmd.fsload+0x0):
multiple definition of_u_boot_list_cmd_fsload' /tmp/build_avr32/common/cmd_fs.o:(.u_boot_list.cmd.fsload+0x0): first defined here /tmp/build_avr32/common/cmd_jffs2.o:(.u_boot_list.cmd.ls+0x0): multiple definition of_u_boot_list_cmd_ls' /tmp/build_avr32/common/cmd_fs.o:(.u_boot_list.cmd.ls+0x0): first defined here
--->8---
Quoted 1 line
Was this intended?
No, this is certainly a problem. I guess we need to rename the new command.
I had originally thought about calling it plain "load" rather than "fsload" (just like it's "ls" not "fsls"). However, that seemed far too generic. However, given this conflict, and the fact that I don't think there's any existing "load" command, perhaps we have no choice but to s/fsload/load/, unless anyone has any better ideas? "fileload"?
PATCH v4 1/3 fs: delete unused Makefile
In reply to Stephen WarrenQuoted 11 lines · Stephen Warren
From: Stephen Warren <[email protected]>
fs/Makefile is unused. The top-level
Makefilesets LIBS-y += fs/xxx and hence causes make to directly descend two directory levels into each individual filesystem, and it never descends intofs/itself.So, delete this useless file.
Signed-off-by Stephen Warren <[email protected]>Reviewed-by Beno??t Th??baudeau <[email protected]>Acked-by Simon Glass <[email protected]>
This, and the series, now applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121029/1f2d4722/attachment.pgp>