[PATCH 5/5] fs: ext4: use fs_ls_generic

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Sat Oct 26 08:40:48 CEST 2024


Now that opendir, readir, closedir are implemented for ext4 we can use
fs_ls_generic() for implementing the ls command.

Adjust the unit tests:

* fs_ls_generic() produces more spaces between file size and name.
* The ext4 specific message "** Can not find directory. **\n" is not
  written anymore.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
---
 fs/ext4/ext4_common.c               | 29 -----------------------------
 fs/ext4/ext4fs.c                    | 23 -----------------------
 fs/fs.c                             |  2 +-
 test/py/tests/test_env.py           |  2 +-
 test/py/tests/test_fs/test_basic.py |  5 +----
 5 files changed, 3 insertions(+), 58 deletions(-)

diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
index c1e38978bb9..cc150cf824f 100644
--- a/fs/ext4/ext4_common.c
+++ b/fs/ext4/ext4_common.c
@@ -2137,35 +2137,6 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
 					*fnode = fdiro;
 					return 1;
 				}
-			} else {
-				if (fdiro->inode_read == 0) {
-					status = ext4fs_read_inode(dir->data,
-								   le32_to_cpu(
-								   dirent.inode),
-								   &fdiro->inode);
-					if (status == 0) {
-						free(fdiro);
-						return 0;
-					}
-					fdiro->inode_read = 1;
-				}
-				switch (type) {
-				case FILETYPE_DIRECTORY:
-					printf("<DIR> ");
-					break;
-				case FILETYPE_SYMLINK:
-					printf("<SYM> ");
-					break;
-				case FILETYPE_REG:
-					printf("      ");
-					break;
-				default:
-					printf("< ? > ");
-					break;
-				}
-				printf("%10u %s\n",
-				       le32_to_cpu(fdiro->inode.size),
-					filename);
 			}
 			free(fdiro);
 		}
diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c
index 32693198aeb..dfecfa0b4e8 100644
--- a/fs/ext4/ext4fs.c
+++ b/fs/ext4/ext4fs.c
@@ -201,29 +201,6 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,
 	return 0;
 }
 
-int ext4fs_ls(const char *dirname)
-{
-	struct ext2fs_node *dirnode = NULL;
-	int status;
-
-	if (dirname == NULL)
-		return 0;
-
-	status = ext4fs_find_file(dirname, &ext4fs_root->diropen, &dirnode,
-				  FILETYPE_DIRECTORY);
-	if (status != 1) {
-		printf("** Can not find directory. **\n");
-		if (dirnode)
-			ext4fs_free_node(dirnode, &ext4fs_root->diropen);
-		return 1;
-	}
-
-	ext4fs_iterate_dir(dirnode, NULL, NULL, NULL);
-	ext4fs_free_node(dirnode, &ext4fs_root->diropen);
-
-	return 0;
-}
-
 int ext4fs_opendir(const char *dirname, struct fs_dir_stream **dirsp)
 {
 	struct ext4_dir_stream *dirs;
diff --git a/fs/fs.c b/fs/fs.c
index a515905c4c9..1afa0fbeaed 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -220,7 +220,7 @@ static struct fstype_info fstypes[] = {
 		.null_dev_desc_ok = false,
 		.probe = ext4fs_probe,
 		.close = ext4fs_close,
-		.ls = ext4fs_ls,
+		.ls = fs_ls_generic,
 		.exists = ext4fs_exists,
 		.size = ext4fs_size,
 		.read = ext4_read_file,
diff --git a/test/py/tests/test_env.py b/test/py/tests/test_env.py
index 00bcccd65ff..4471db7d9cb 100644
--- a/test/py/tests/test_env.py
+++ b/test/py/tests/test_env.py
@@ -488,7 +488,7 @@ def test_env_ext4(state_test_env):
         assert 'Loading Environment from EXT4... OK' in response
 
         response = c.run_command('ext4ls host 0:0')
-        assert '8192 uboot.env' in response
+        assert '8192   uboot.env' in response
 
         response = c.run_command('env info')
         assert 'env_valid = valid' in response
diff --git a/test/py/tests/test_fs/test_basic.py b/test/py/tests/test_fs/test_basic.py
index 71f3e86fb18..b5f4704172a 100644
--- a/test/py/tests/test_fs/test_basic.py
+++ b/test/py/tests/test_fs/test_basic.py
@@ -33,10 +33,7 @@ class TestFsBasic(object):
             # In addition, test with a nonexistent directory to see if we crash.
             output = u_boot_console.run_command(
                 '%sls host 0:0 invalid_d' % fs_type)
-            if fs_type == 'ext4':
-                assert('Can not find directory' in output)
-            else:
-                assert('' == output)
+            assert('' == output)
 
     def test_fs2(self, u_boot_console, fs_obj_basic):
         """
-- 
2.45.2



More information about the U-Boot mailing list