fs: delete unused Makefile
RFC PATCH 1/2 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.
--- 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
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
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.
---
There are a couple FIXMEs in here:
1) In fs/fs.c, code is ifdef on CONFIG_CMD_FAT or CONFIG_CMD_EXT2. This means that the new commands and code can only be enabled if the "legacy" {fat,ext2}{ls,load} are enabled. What we really want is CONFIG_FS_FAT and CONFIG_FS_EXT2 to enable the filesystem code, and then CONFIG_CMD_FAT, CONFIG_CMD_EXT2, CONFIG_CMD_FS to only affect the command implementations. However, that would require making every include/config/*.h that sets the current defines also set more. I suppose that's a fairly mechanical change though, so easy enough to implement. Does that seem like a reasonable approach to people?
2) In common/Makefile, I need to make this conditional upon CONFIG_CMD_FS or similar.
Also, I wonder if the fs/* and common/* should be two separate patches or not?
Makefile | 3 +- common/Makefile | 2 + common/cmd_fs.c | 86 ++++++++++++++++++++++ fs/Makefile | 47 ++++++++++++ fs/fs.c | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/fs.h | 49 +++++++++++++ 6 files changed, 402 insertions(+), 1 deletions(-) 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
@@ -242,7 +242,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 +2 -0
@@ -103,6 +103,8 @@ COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o ifdef CONFIG_FPGA COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o endif +# FIXME: Need to make this conditional +COBJS-y += 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_fs.c new file +86 -0
86 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 +216 -0
216 lines not on this page · raw message
include/fs.h new file +49 -0
49 lines not on this page · raw message
Signature · 1 line
1.7.0.4
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
Hi Stephen,
Quoted 12 lines · Stephen Warren
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.Signed-off-by Stephen Warren <[email protected]>---
There are a couple FIXMEs in here:
Quoted 16 lines
1) In
fs/fs.c, code is ifdef onCONFIG_CMD_FATorCONFIG_CMD_EXT2. This
means that the new commands and code can only be enabled if the "legacy"
{fat,ext2}{ls,load} are enabled. What we really want isCONFIG_FS_FATandCONFIG_FS_EXT2to enable the filesystem code, and thenCONFIG_CMD_FAT,CONFIG_CMD_EXT2,CONFIG_CMD_FSto only affect the command implementations.
However, that would require making everyinclude/config/*.hthat sets the
current defines also set more. I suppose that's a fairly mechanical change
though, so easy enough to implement. Does that seem like a reasonable approach to people?
What about making CONFIG_CMD_<FS> auto-define CONFIG_FS_<FS>, just like with a Kconfig select?
Quoted 7 lines
2) In common/Makefile, I need to make this conditional upon
CONFIG_CMD_FS
or similar.Also, I wonder if the
fs/*and common/* should be two separate patches or
not?
For me, it's fine as a single patch.
Quoted 75 lines
Makefile | 3 +- common/Makefile | 2 + common/cmd_fs.c | 86 ++++++++++++++++++++++ fs/Makefile | 47 ++++++++++++ fs/fs.c | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/fs.h | 49 +++++++++++++ 6 files changed, 402 insertions(+), 1 deletions(-) create mode 100644 common/cmd_fs.c create mode 100644 fs/Makefile create mode 100644 fs/fs.c create mode 100644 include/fs.hMakefile +2
-1@@ -242,7 +242,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 +2
-0@@ -103,6 +103,8 @@ COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o ifdef CONFIG_FPGA COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o endif +# FIXME: Need to make this conditional +COBJS-y += cmd_fs.o COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o COBJS-$(CONFIG_CMD_IDE) += cmd_ide.ocommon/cmd_fs.c new file +6
-0@@ -0,0 +1,86 @@ +/* +* 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/>.
+ */common/cmd_fs.c new file +6
-0+ +#include <common.h> +#include <command.h> +#include <fs.h> + +int do_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char * constargv[])
common/cmd_fs.c line 32
Quoted 9 lines
common/cmd_fs.c new file +9
-0+{ +unsigned long addr; +unsigned long bytes; +unsigned long pos; +int len_read; +char buf[12 ]; + +if (argc <5 ) +return -1 ;
What about "return CMD_RET_USAGE;"?
Quoted 35 lines
common/cmd_fs.c new file +29
-0+ +if (fs_set_blk_dev (argv[1 ], argv[2 ])) +return 1 ; + + addr =simple_strtoul (argv[3 ],NULL ,0 ); +if (argc >=6 ) + bytes =simple_strtoul (argv[5 ],NULL ,0 ); +else + bytes =0 ; +if (argc >=7 ) + pos =simple_strtoul (argv[6 ],NULL ,0 ); +else + pos =0 ; + + len_read =fs_read (argv[4 ], addr, pos, bytes); +if (len_read <=0 ) +return 1 ; + +sprintf (buf,"0x%x" , (unsigned int )len_read); +setenv ("filesize" , buf); + +return 0 ; +} + +U_BOOT_CMD ( + fsload,7 ,0 , do_fsload, +"load binary file from a filesystem" , +"<interface> [<dev[:part]>] <addr> <filename> [bytes [pos]]\n" + " - Load binary file 'filename' from partition 'part' ondevice\n"
common/cmd_fs.c new file +1
-0+ " type 'interface' instance 'dev' to address 'addr' inmemory.\n"
common/cmd_fs.c new file +2
-0+" 'bytes' gives the size to load in bytes.\n" + " If 'bytes' is 0 or omitted, the file is read until theend.\n"
common/cmd_fs.c line 70
Quoted 6 lines
common/cmd_fs.c new file +6
-0+" 'pos' gives the file byte position to start reading from.\n" +" If 'pos' is 0 or omitted, the file is read from the start." +); + +int do_ls (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) +{
What about adding
+ if (argc < 2)
+ return CMD_RET_USAGE;
+
?
Quoted 101 lines
common/cmd_fs.c new file +14
-0+if (fs_set_blk_dev (argv[1 ], argv[2 ])) +return 1 ; + +if (fs_ls (argc ==4 ? argv[3 ] :"/" )) +return 1 ; + +return 0 ; +} + +U_BOOT_CMD ( + ls,4 ,1 , do_ls, +"list files in a directory (default /)" , +"<interface> [<dev[:part]>] [directory]\n" + " - List files in directory 'directory' of partition 'part'on\n"
common/cmd_fs.c new file +2
-0+" device type 'interface' instance 'dev'." +);fs/Makefile new file +47
-0@@ -0,0 +1,47 @@ +# +# (C) Copyright 2000-2006 +# Wolfgang Denk, DENX Software Engineering, wd at denx.de. +# Copyright (c) 2012, NVIDIA CORPORATION. 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 +# 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 +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)libfs.o + +COBJS-y += fs.o + +COBJS := $(COBJS-y) +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) + +all: $(LIB) + +$(LIB): $(obj).depend $(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +#########################################################################fs/fs.c new file +4
-0@@ -0,0 +1,216 @@ +/* +* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. +* +* 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/>.
+ */fs/fs.c new file +5
-0+ +#include <config.h> +#include <common.h> +#include <part.h> +#include <ext4fs.h>
fs/fs.c line 30
Quoted 10 lines
fs/fs.c new file +10
-0+#include <fat.h> +#include <fs.h> + +#define FS_TYPE_INVALID 0 +#define FS_TYPE_FAT 1 +#define FS_TYPE_EXT 2 + +static block_dev_desc_t *fs_dev_desc; +static disk_partition_t fs_partition; +static int fs_type;
It should be initialized to FS_TYPE_INVALID to be clean.
Quoted 57 lines
fs/fs.c new file +2
-0+ +/* FIXME: CONFIG_CMD_FAT, CONFIG_CMD_EXT2 should be CONFIG_FS_FAT,
CONFIG_FS_EXT2*/fs/fs.c new file +54
-0+#ifdef CONFIG_CMD_FAT +static int fs_probe_fat (void ) +{ +return fat_set_blk_dev (fs_dev_desc, &fs_partition); +} + +static void fs_close_fat (void ) +{ +} +#else +static inline int fs_probe_fat (void ) +{ +return -1 ; +} + +static inline void fs_close_fat (void ) +{ +} +#endif + +#ifdef CONFIG_CMD_EXT2 +static int fs_probe_ext (void ) +{ +ext4fs_set_blk_dev (fs_dev_desc, &fs_partition); + +if (!ext4fs_mount (fs_partition.size)) { +ext4fs_close (); +return -1 ; + } + +return 0 ; +} + +static void fs_close_ext (void ) +{ +ext4fs_close (); +} +#else +static inline int fs_probe_ext (void ) +{ +return -1 ; +} + +static inline void fs_close_ext (void ) +{ +} +#endif + +int fs_set_blk_dev (const char *ifname,const char *dev_part_str) +{ +int part; + +switch (fs_type) { +case FS_TYPE_FAT :
fs/fs.c line 96
Quoted 10 lines
fs/fs.c new file +10
-0+fs_close_fat (); +break ; +case FS_TYPE_EXT : +fs_close_ext (); +break ; +default : +break ; + } + + fs_type =FS_TYPE_INVALID ;
What about adding an fs_close() function that would just be the piece of code above? It would have to be called at the end of command functions invoking fs_set_blk_dev(). In that way, ext4 would not be left open after such a command. That would be better if something else is done using ext4 between 2 such commands.
Quoted 188 lines
fs/fs.c new file +51
-0+ + part =get_device_and_partition (ifname, dev_part_str, &fs_dev_desc, + &fs_partition,1 ); +if (part <0 ) +return -1 ; + +if (!fs_probe_fat ()) { + fs_type =FS_TYPE_FAT ; +return 0 ; + } + +if (!fs_probe_ext ()) { + fs_type =FS_TYPE_EXT ; +return 0 ; + } + +printf ("** Unrecognized filesystem type **\n" ); +return -1 ; +} + +static inline int fs_ls_unsupported (const char *dirname) +{ +printf ("** Unrecognized filesystem type **\n" ); +return -1 ; +} + +#ifdef CONFIG_CMD_FAT +#define fs_ls_fat file_fat_ls +#else +#define fs_ls_fat fs_ls_unsupported +#endif + +#ifdef CONFIG_CMD_EXT2 +#define fs_ls_ext ext4fs_ls +#else +#define fs_ls_ext fs_ls_unsupported +#endif + +int fs_ls (const char *dirname) +{ +switch (fs_type) { +case FS_TYPE_FAT : +return fs_ls_fat (dirname); +case FS_TYPE_EXT : +return fs_ls_ext (dirname); +default : +return fs_ls_unsupported (dirname); + } +} + +static inline int fs_read_unsupported(const char *filename, ulongaddr, int offset, int len)
fs/fs.c new file +7
-0+{ +printf ("** Unrecognized filesystem type **\n" ); +return -1 ; +} + +#ifdef CONFIG_CMD_FAT +static int fs_read_fat(const char *filename, ulong addr, int offset,int len)
fs/fs.c new file +18
-0+{ +int len_read; + + len_read =file_fat_read_at (filename, offset, + (unsigned char *)addr, len); +if (len_read ==-1 ) { +printf ("** Unable to read file %s **\n" , filename); +return -1 ; + } + +return len_read; +} +#else +#define fs_read_fat fs_read_unsupported +#endif + +#ifdef CONFIG_CMD_EXT2 +static int fs_read_ext(const char *filename, ulong addr, int offset,int len)
fs/fs.c new file +44
-0+{ +int file_len; +int len_read; + +if (offset !=0 ) { +printf ("** Cannot support non-zero offset **\n" ); +return -1 ; + } + + file_len =ext4fs_open (filename); +if (file_len <0 ) { +printf ("** File not found %s **\n" , filename); +ext4fs_close (); +return -1 ; + } + +if (len ==0 ) + len = file_len; + + len_read =ext4fs_read ((char *)addr, len); +ext4fs_close (); + +if (len_read != len) { +printf ("** Unable to read file %s **\n" , filename); +return -1 ; + } + +return len_read; +} +#else +#define fs_read_ext fs_read_unsupported +#endif + +int fs_read (const char *filename,ulong addr,int offset,int len) +{ +switch (fs_type) { +case FS_TYPE_FAT : +return fs_read_fat (filename, addr, offset, len); +case FS_TYPE_EXT : +return fs_read_ext (filename, addr, offset, len); +default : +return fs_read_unsupported (filename, addr, offset, len); + } +}include/fs.h new file +4
-0@@ -0,0 +1,49 @@ +/* +* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. +* +* 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/fs.h new file +5
-0+#ifndef _FS_H +#define _FS_H + +/* +* Tell the fs layer which block device an partition to use for future
+ * commands. This also internally identifies the filesystem that is present
+ * within the partition.
+ *
+ * Returns 0 on success.
+ * Returns non-zero if there is an error accessing the disk or partition, or
+ * no known filesystem type could be recognized on it.
+ */include/fs.h new file +4
-0+int fs_set_blk_dev (const char *ifname,const char *dev_part_str); + +/* +* Print the list of files on the partition previously set by
fs_set_blk_dev(),
+ * in directory "dirname".
+ *
+ * Returns 0 on success. Returns non-zero on error.
+ */include/fs.h new file +4
-0+int fs_ls (const char *dirname); + +/* +* Read file "filename" from the partition previously set by
fs_set_blk_dev(),
+ * to address "addr", starting at byte offset "offset", and reading "len"
+ * bytes. "offset" may be 0 to read from the start of the file. "len" may be
+ * 0 to read the entire file. Note that not all filesystem types support
+ * either/both offset!=0 or len!=0.
+ *
+ * Returns number of bytes read on success. Returns <= 0 on error.
+ */
include/fs.h line 49
Quoted 3 lines
include/fs.h new file +3
-0+int fs_read (const char *filename,ulong addr,int offset,int len); + +#endif /* _FS_H */
Best regards,
Beno?t
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
In reply to Stephen Warren-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
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.
Signed-off-by Stephen Warren <[email protected]> --- There are acouple FIXMEs in here:
Quoted 10 lines
1) In
fs/fs.c, code is ifdef onCONFIG_CMD_FATorCONFIG_CMD_EXT2. This means that the new commands and code can only be enabled if
the "legacy" {fat,ext2}{ls,load} are enabled. What we really want isCONFIG_FS_FATandCONFIG_FS_EXT2to enable the filesystem code,
and thenCONFIG_CMD_FAT,CONFIG_CMD_EXT2,CONFIG_CMD_FSto only
affect the command implementations. However, that would require making everyinclude/config/*.hthat sets the current defines also
set more. I suppose that's a fairly mechanical change though, so
easy enough to implement. Does that seem like a reasonable approach to people?
How about a new CONFIG_CMD_GENERIC_FS for the new ls/fsload (and any later commands like write that get added) and once most filesystems are converted we can think about a transition plan?
Quoted 5 lines
2) In common/Makefile, I need to make this conditional upon
CONFIG_CMD_FSor similar.Also, I wonder if the
fs/*and common/* should be two separate patches or not?
One is fine.
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/
iQIcBAEBAgAGBQJQdvgNAAoJENk4IS6UOR1Wx3gP/iRvYq0khe6ZPRbUcPyTg0r8 tkNJGfglXba52GHjU6URwSrPbN9qOHzh6fD0x26jOdj1vWlMv6nvwmyo3ttvyRLe 4VF7tvTRp3Zv461vGwm8XwAXlDXVrnsWeC4veWxo+/ptFaq2FTWYTVNo2MsqHSIN VNnxMdgtqUIU2kgx0uJst1Fl3olDaRlQmyf88SiRE2et21FQytk/LxAc50zmNr5J UWgVgzoUP+RnZwnZK2CWL9cAuGbEyLjQvoKK8V72dMvKzZgMFpyMEdk0+onKFYe1 Byai7INodWIhWrtQj4nGC/1WQC+kCteMvF3OTjuGY/bfDPqLYx3071kocrgYWSW4 URvvdv6hn1l+evN5BQ1erwAekwfgrfcKkavJwmuVES3ZESrEyComqWEjajqeTe/6 uIpZo58oFGojJZK1HcDmaVFyj7nxAzXloupmHiKq+xfXHbv60ZUZO6InEos/ZCjZ bpT92wyyqTeiD70glLvLRyStKzZidqeoVTkbGM0XUCA3d3RvxXdB4zfgIqDlhhCT EfhxKVkAZAzjsEn+U1/y5RWEEdD+Zaqi2xKwA+Ken9TJ4LFsjcOiQDPVZYklD7qu Xmte9GdxL4tSipu0hWxrkRjO7ap09wUoEk1d0jNSrwNbJALnUUkT4qfpYXcMaAhe okjWSANQaBZxbM0ziEoT
=AnRj
-----END PGP SIGNATURE-----
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
Quoted 23 lines · Tom Rini
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.Signed-off-by Stephen Warren <[email protected]> --- There area couple FIXMEs in here:
Quoted 10 lines
1) In
fs/fs.c, code is ifdef onCONFIG_CMD_FATorCONFIG_CMD_EXT2. This means that the new commands and code can only be enabled if the "legacy" {fat,ext2}{ls,load} are enabled. What we really want isCONFIG_FS_FATandCONFIG_FS_EXT2to enable the filesystem code, and thenCONFIG_CMD_FAT,CONFIG_CMD_EXT2,CONFIG_CMD_FSto only affect the command implementations. However, that would require making everyinclude/config/*.hthat sets the current defines also set more. I suppose that's a fairly mechanical change though, so easy enough to implement. Does that seem like a reasonable approach to people?
Quoted 3 lines
How about a new
CONFIG_CMD_GENERIC_FSfor the new ls/fsload (and any later commands like write that get added) and once most filesystems are converted we can think about a transition plan?
Certainly.
The issue is that the filesystem code itself is conditionally included based on CONFIG_CMD_FAT and CONFIG_CMD_EXT4. This would require that in order to use the new generic commands, you also had to support the old non-generic commands in order to get a linkable result. Perhaps that's fine for now, but by separating the existing CONFIG_CMD_FAT into two (CONFIG_CMD_FAT, CONFIG_FS_FAT), we could avoid that requirement. As Benoit mentioned, perhaps we could arrange that CONFIG_CMD_FAT selects CONFIG_FS_FAT somehow, although I haven't looked at U-Boot's configuration system to see if that's possible yet.
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 31 lines · Stephen Warren
Quoted 24 lines · Tom Rini
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.
Signed-off-by Stephen Warren <[email protected]> --- Thereare a couple FIXMEs in here:
Quoted 11 lines
1) In
fs/fs.c, code is ifdef onCONFIG_CMD_FATorCONFIG_CMD_EXT2. This means that the new commands and code can only be enabled if the "legacy" {fat,ext2}{ls,load} are
enabled. What we really want isCONFIG_FS_FATandCONFIG_FS_EXT2to enable the filesystem code, and thenCONFIG_CMD_FAT,CONFIG_CMD_EXT2,CONFIG_CMD_FSto only affect the command implementations. However, that would require making everyinclude/config/*.hthat sets the current defines also set more. I suppose that's a fairly mechanical change though, so easy enough to implement. Does that seem like a reasonable approach to people?Quoted 3 lines
How about a new
CONFIG_CMD_GENERIC_FSfor the new ls/fsload (and
any later commands like write that get added) and once most
filesystems are converted we can think about a transition plan?Certainly.
Quoted 10 lines
The issue is that the filesystem code itself is conditionally included based on
CONFIG_CMD_FATandCONFIG_CMD_EXT4. This would require that in order to use the new generic commands, you also had to support the old non-generic commands in order to get a linkable result. Perhaps that's fine for now, but by separating the existingCONFIG_CMD_FATinto two (CONFIG_CMD_FAT,CONFIG_FS_FAT), we could avoid that requirement. As Benoit mentioned, perhaps we could arrange thatCONFIG_CMD_FATselectsCONFIG_FS_FATsomehow, although I haven't looked at U-Boot's configuration system to see if that's possible yet.
Since we don't have Kconfig right now, it's not really easy to do that kind of thing. I think once we have more filesystems converted we can work out doing the mechanical separate of fs/ from common/ for fs code.
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/
iQIcBAEBAgAGBQJQdvxhAAoJENk4IS6UOR1WOFIP/0VjExqx5FZ+Lau4wFtV8dI0 v5+jfwDUtG0L3h/lTv9NJkX5j9duXJVOcAkB4hVeWFAqd/fSdI0mlajPvR1rpS/J luYFvR/XdlIoQe65CbrKhFEzHH3pwcbYXd/Zz9wx2cvxmTz7NvbM3KZsvECPpYtO CEqNClM2e5Q0ebE/XKZ5xG8qJVWZbs48i8kkmgHQHsiplGEdf7IzNgOqiSFL5rgF DT6oRacoAzOLBwMo5/ssIiT04GgM+3Nac1UV/4GPKiNt62k4p6OfniUN4sL6N6Yl oq8aFR3ZWGZgHdHO+y+pp+4MLAlvbv8PxMXHhw/ZCCHgLR9sodvWQl/Pn3C9TFTC 0LdYgMvft5FBBqffI+XuPMomdKYLmmHtAhlh7lly9L5GQYw8iU25cfXP8ZeBUOX+ aY4nX/Wp2s+vtXawWUVv01r0HRZZp3r6FJNAXWvE9m2cB+7HiZQD+nJvkV7ZZk7E 6WRdRlI8NTLn6Sfh42d6AzigsYfAm2Xwp6B1/gGix075E30yhB1KGdxs/SpQW+0+ tdtFXij/jtxAyabTLNTivAXO44l6IBurtlAZqXeI1ur6gEJa0L1Ju0Mi6rFO/Vrg aQ/KBo+1DM4QgXxYkcYPxJ+KIJKQdsmIWEmpni+sgaLBgO43Ebh+lkLKHCm5NB0l kaIgld2V1OQQDmg/j4yW
=Tegq
-----END PGP SIGNATURE-----
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
Quoted 43 lines · Tom Rini
Quoted 31 lines · Stephen Warren
Quoted 24 lines · Tom Rini
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.
Signed-off-by Stephen Warren <[email protected]> --- Thereare a couple FIXMEs in here:
Quoted 11 lines
1) In
fs/fs.c, code is ifdef onCONFIG_CMD_FATorCONFIG_CMD_EXT2. This means that the new commands and code can only be enabled if the "legacy" {fat,ext2}{ls,load} are
enabled. What we really want isCONFIG_FS_FATandCONFIG_FS_EXT2to enable the filesystem code, and thenCONFIG_CMD_FAT,CONFIG_CMD_EXT2,CONFIG_CMD_FSto only affect the command implementations. However, that would require making everyinclude/config/*.hthat sets the current defines also set more. I suppose that's a fairly mechanical change though, so easy enough to implement. Does that seem like a reasonable approach to people?Quoted 3 lines
How about a new
CONFIG_CMD_GENERIC_FSfor the new ls/fsload (and
any later commands like write that get added) and once most
filesystems are converted we can think about a transition plan?Certainly.
Quoted 10 lines
The issue is that the filesystem code itself is conditionally included based on
CONFIG_CMD_FATandCONFIG_CMD_EXT4. This would require that in order to use the new generic commands, you also had to support the old non-generic commands in order to get a linkable result. Perhaps that's fine for now, but by separating the existingCONFIG_CMD_FATinto two (CONFIG_CMD_FAT,CONFIG_FS_FAT), we could avoid that requirement. As Benoit mentioned, perhaps we could arrange thatCONFIG_CMD_FATselectsCONFIG_FS_FATsomehow, although I haven't looked at U-Boot's configuration system to see if that's possible yet.
Quoted 6 lines
Since we don't have
Kconfigright now, it's not really easy to do that
kind of thing. I think once we have more filesystems converted we can
work out doing the mechanical separate offs/from common/ for fs code.
This does not require Kconfig. include/config_fallbacks.h is already made for automatic config fixups. The following lines could simply be added to it:
#if defined(CONFIG_CMD_FAT) && !defined(CONFIG_FS_FAT) #define CONFIG_FS_FAT
#endif
Best regards,
Beno?t
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
In reply to Stephen WarrenHi
Quoted 13 lines · On Wednesday 10 October 2012 18:05:07 Stephen Warren wrote:
...snip...
Makefile | 3 +- common/Makefile | 2 + common/cmd_fs.c | 86 ++++++++++++++++++++++ fs/Makefile | 47 ++++++++++++ fs/fs.c | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/fs.h | 49 +++++++++++++ 6 files changed, 402 insertions(+), 1 deletions(-) create mode 100644 common/cmd_fs.c create mode 100644 fs/Makefile create mode 100644 fs/fs.c create mode 100644 include/fs.h
I dont see how this is a "partition switch library", when it doesnt deal with partitions at all. Care to explain? Or maybe call it "filesystem-auto detection" or something?
Best Regards
Pavel Herrmann
RFC PATCH 2/2 fs: add partition switch libary, implement ls and fsload commands
Quoted 17 lines · Pavel Herrmann
Hi
Quoted 13 lines · On Wednesday 10 October 2012 18:05:07 Stephen Warren wrote:
...snip...
Makefile | 3 +- common/Makefile | 2 + common/cmd_fs.c | 86 ++++++++++++++++++++++ fs/Makefile | 47 ++++++++++++ fs/fs.c | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/fs.h | 49 +++++++++++++ 6 files changed, 402 insertions(+), 1 deletions(-) create mode 100644 common/cmd_fs.c create mode 100644 fs/Makefile create mode 100644 fs/fs.c create mode 100644 include/fs.h
Quoted 3 lines
I dont see how this is a "partition switch library", when it doesnt deal with partitions at all. Care to explain? Or maybe call it "filesystem-auto detection" or something?
Oops. I will s/partition/filesystem/ in the patch subject.
RFC PATCH 1/2 fs: delete unused Makefile
In reply to Stephen WarrenHi Stephen,
Quoted 7 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.
I noticed this recently, and I can't see any reason for it, unless there was an intent to remove the top-level Makefile stuff one day?
Quoted 2 lines
Signed-off-by Stephen Warren <[email protected]>
Regards,
Simon
Quoted 60 lines
--- fs/Makefile | 42 ------------------------------------------ 1 files changed, 0 insertions(+), 42 deletions(-) delete mode 100644 fs/Makefilefs/Makefile deleted +0
-43@@ -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 --1.7.0.4
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot