summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/btrfs-tools/btrfs-tools/allow-relative-path.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/btrfs-tools/btrfs-tools/allow-relative-path.patch')
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools/allow-relative-path.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/allow-relative-path.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/allow-relative-path.patch
new file mode 100644
index 0000000..695973e
--- /dev/null
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools/allow-relative-path.patch
@@ -0,0 +1,58 @@
1From: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
2
3The bug accurs when exec:
4 # mkfs.btrfs -r <a relative path> <device>
5 (note: the path should be 'valid' correspond to your `pwd`)
6error msg:
7 $ scandir for <a relative path> failed: No such file...
8
9Replace strdup() with realpath() to get the correct scan path.
10
11Upstream-Status: Backport (pending)
12
13Reported-by: Saul Wold <sgw@linux.intel.com>
14Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
15---
16 mkfs.c | 5 ++---
17 1 file changed, 2 insertions(+), 3 deletions(-)
18
19diff --git a/mkfs.c b/mkfs.c
20index 2dc90c2..1bd3069 100644
21--- a/mkfs.c
22+++ b/mkfs.c
23@@ -756,6 +756,7 @@ static int traverse_directory(struct btrfs_trans_handle *trans,
24 ino_t parent_inum, cur_inum;
25 ino_t highest_inum = 0;
26 char *parent_dir_name;
27+ char real_path[PATH_MAX];
28 struct btrfs_path path;
29 struct extent_buffer *leaf;
30 struct btrfs_key root_dir_key;
31@@ -764,7 +765,7 @@ static int traverse_directory(struct btrfs_trans_handle *trans,
32 /* Add list for source directory */
33 dir_entry = malloc(sizeof(struct directory_name_entry));
34 dir_entry->dir_name = dir_name;
35- dir_entry->path = strdup(dir_name);
36+ dir_entry->path = realpath(dir_name, real_path);
37
38 parent_inum = highest_inum + BTRFS_FIRST_FREE_OBJECTID;
39 dir_entry->inum = parent_inum;
40@@ -876,7 +877,6 @@ static int traverse_directory(struct btrfs_trans_handle *trans,
41 }
42
43 free_namelist(files, count);
44- free(parent_dir_entry->path);
45 free(parent_dir_entry);
46
47 index_cnt = 2;
48@@ -887,7 +887,6 @@ static int traverse_directory(struct btrfs_trans_handle *trans,
49 fail:
50 free_namelist(files, count);
51 fail_no_files:
52- free(parent_dir_entry->path);
53 free(parent_dir_entry);
54 return -1;
55 }
56--
571.8.1.4
58