[PATCH 33/35] fs-tests: integck: lessen memory consumption

Artem Bityutskiy dedekind1 at gmail.com
Wed Apr 20 06:19:06 EDT 2011


From: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>

We do not need to store directory name in the 'struct dir_info' objects,
because we already have it in 'struct dir_entry_info'. So we duplicate
the names for directories in 'dir->name' and 'dir->entry->name'.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
---
 tests/fs-tests/integrity/integck.c |   18 ++++++++----------
 1 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
index 03b3a01..d5ee08e 100644
--- a/tests/fs-tests/integrity/integck.c
+++ b/tests/fs-tests/integrity/integck.c
@@ -163,7 +163,6 @@ struct symlink_info /* Each symlink has one of these */
 
 struct dir_info /* Each directory has one of these */
 {
-	char *name;
 	struct dir_info *parent; /* Parent directory or null
 					for our top directory */
 	unsigned int number_of_entries;
@@ -332,7 +331,7 @@ static char *dir_path(struct dir_info *parent, const char *name)
 
 	if (!parent)
 		return cat_paths(fsinfo.mount_point, name);
-	parent_path = dir_path(parent->parent, parent->name);
+	parent_path = dir_path(parent->parent, parent->entry->name);
 	path = cat_paths(parent_path, name);
 	free(parent_path);
 	return path;
@@ -411,7 +410,6 @@ static void add_dir_entry(struct dir_info *parent, char type, const char *name,
 
 		entry->dir = dir;
 		dir->entry = entry;
-		dir->name = dup_string(name);
 		dir->parent = parent;
 	} else if (entry->type == 's') {
 		struct symlink_info *symlink = target;
@@ -505,7 +503,7 @@ static int dir_remove(struct dir_info *dir)
 	}
 
 	/* Remove directory form the file-system */
-	path = dir_path(dir->parent, dir->name);
+	path = dir_path(dir->parent, dir->entry->name);
 	if (rmdir(path) != 0) {
 		pcv("cannot remove directory entry %s", path);
 		free(path);
@@ -515,7 +513,6 @@ static int dir_remove(struct dir_info *dir)
 	/* Remove entry from parent directory */
 	remove_dir_entry(dir->entry);
 	free(path);
-	free(dir->name);
 	free(dir);
 	return 0;
 }
@@ -570,7 +567,7 @@ static int link_new(struct dir_info *parent, const char *name,
 			full = 1;
 		} else
 			pcv("cannot create hardlink %s in directory %s to file %s",
-			    path, parent->name, target);
+			    path, parent->entry->name, target);
 		free(target);
 		free(path);
 		return ret;
@@ -706,7 +703,7 @@ static void file_info_display(struct file_info *file)
 	entry = file->links;
 	while (entry) {
 		normsg("      Name: %s", entry->name);
-		normsg("      Directory: %s", entry->parent->name);
+		normsg("      Directory: %s", entry->parent->entry->name);
 		entry = entry->next_link;
 	}
 	normsg("    Length: %llu", (unsigned long long)file->length);
@@ -1510,7 +1507,7 @@ static void dir_check(struct dir_info *dir)
 	qsort(entry_array, n, sz, sort_comp);
 
 	/* Go through directory on file system checking entries match */
-	path = dir_path(dir->parent, dir->name);
+	path = dir_path(dir->parent, dir->entry->name);
 	d = opendir(path);
 	CHECK(d != NULL);
 	for (;;) {
@@ -1867,7 +1864,7 @@ static int symlink_new(struct dir_info *dir, const char *nm)
 			full = 1;
 		else if (errno != ENAMETOOLONG) {
 			pcv("cannot create symlink %s in directory %s to file %s",
-			    path, dir->name, target);
+			    path, dir->entry->name, target);
 			ret = -1;
 		}
 		free(target);
@@ -2356,7 +2353,8 @@ static int integck(void)
 	}
 
 	top_dir = zalloc(sizeof(struct dir_info));
-	top_dir->name = dup_string(fsinfo.test_dir);
+	top_dir->entry = zalloc(sizeof(struct dir_entry_info));
+	top_dir->entry->name = dup_string(fsinfo.test_dir);
 
 	ret = create_test_data();
 	if (ret)
-- 
1.7.2.3




More information about the linux-mtd mailing list