summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2014-03-07 01:59:27 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-07 14:45:22 +0000
commitbc5d73d67bc193a59345eacab2778e630cd1532e (patch)
tree26156ef9f73dce8c95d410df35760587376100ae
parent243cc2b9ff3c50b8268126e0d4123cb8ddc4a49b (diff)
downloadpoky-bc5d73d67bc193a59345eacab2778e630cd1532e.tar.gz
e2fsprogs: mke2fs: create directory
The do_mkdir_internal() is used for making dir on the target fs, most of the code are from debugfs/debugfs.c, the debugfs/debugfs.c will be modified to use this function. [YOCTO #4083] (From OE-Core rev: 30b6ad5067d7a1514c02994c31baf6ec4e5fbcb7) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Reviewed-by: Darren Hart <dvhart@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/0006-misc-create_inode.c-create-directory.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0006-misc-create_inode.c-create-directory.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0006-misc-create_inode.c-create-directory.patch
new file mode 100644
index 0000000000..5c7ca9c37e
--- /dev/null
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0006-misc-create_inode.c-create-directory.patch
@@ -0,0 +1,62 @@
1From c8d1c43be24489036137f8fdebcfccc208f7cc8b Mon Sep 17 00:00:00 2001
2From: Robert Yang <liezhi.yang@windriver.com>
3Date: Mon, 23 Dec 2013 03:34:14 -0500
4Subject: [PATCH 06/11] misc/create_inode.c: create directory
5
6The do_mkdir_internal() is used for making dir on the target fs, most of
7the code are from debugfs/debugfs.c, the debugfs/debugfs.c will be
8modified to use this function.
9
10Upstream-Status: Backport
11
12Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
13Reviewed-by: Darren Hart <dvhart@linux.intel.com>
14---
15 misc/create_inode.c | 31 +++++++++++++++++++++++++++++++
16 1 file changed, 31 insertions(+)
17
18diff --git a/misc/create_inode.c b/misc/create_inode.c
19index 98f4a93..6a8c92a 100644
20--- a/misc/create_inode.c
21+++ b/misc/create_inode.c
22@@ -135,6 +135,37 @@ try_again:
23 /* Make a directory in the fs */
24 errcode_t do_mkdir_internal(ext2_ino_t cwd, const char *name, struct stat *st)
25 {
26+ char *cp;
27+ ext2_ino_t parent_ino, ino;
28+ errcode_t retval;
29+ struct ext2_inode inode;
30+
31+
32+ cp = strrchr(name, '/');
33+ if (cp) {
34+ *cp = 0;
35+ if ((retval = ext2fs_namei(current_fs, root, cwd, name, &parent_ino))){
36+ com_err(name, retval, 0);
37+ return retval;
38+ }
39+ name = cp+1;
40+ } else
41+ parent_ino = cwd;
42+
43+try_again:
44+ retval = ext2fs_mkdir(current_fs, parent_ino, 0, name);
45+ if (retval == EXT2_ET_DIR_NO_SPACE) {
46+ retval = ext2fs_expand_dir(current_fs, parent_ino);
47+ if (retval) {
48+ com_err(__func__, retval, "while expanding directory");
49+ return retval;
50+ }
51+ goto try_again;
52+ }
53+ if (retval) {
54+ com_err("ext2fs_mkdir", retval, 0);
55+ return retval;
56+ }
57 }
58
59 static errcode_t copy_file(int fd, ext2_ino_t newfile, int bufsize, int make_holes)
60--
611.7.10.4
62