summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/btrfs-tools
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/btrfs-tools')
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools/mkfs-xin-fixes.patch366
1 files changed, 183 insertions, 183 deletions
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/mkfs-xin-fixes.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/mkfs-xin-fixes.patch
index 47fc97725a..847e870669 100644
--- a/meta/recipes-devtools/btrfs-tools/btrfs-tools/mkfs-xin-fixes.patch
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools/mkfs-xin-fixes.patch
@@ -1,183 +1,183 @@
1Upstream-Status: Pending 1Upstream-Status: Pending
2 2
3This patch is made by xin.zhong@intel.com to implement these supported 3This patch is made by xin.zhong@intel.com to implement these supported
4features in mkfs.btrfs: 4features in mkfs.btrfs:
5 * populate fs image from a directory while creating it 5 * populate fs image from a directory while creating it
6 * reduce minimum size of the created image from 256MB to around 24MB 6 * reduce minimum size of the created image from 256MB to around 24MB
7 * while creating image use the specified device name rather than output.img 7 * while creating image use the specified device name rather than output.img
8 8
9Patch tested and incorporated in poky by: 9Patch tested and incorporated in poky by:
10Nitin A Kamble <nitin.a.kamble@intel.com> 2011/06/20 10Nitin A Kamble <nitin.a.kamble@intel.com> 2011/06/20
11 11
12diff --git a/file-item.c b/file-item.c 12diff --git a/file-item.c b/file-item.c
13index 9732282..aed42c3 100644 13index 9732282..aed42c3 100644
14--- a/file-item.c 14--- a/file-item.c
15+++ b/file-item.c 15+++ b/file-item.c
16@@ -193,7 +193,7 @@ int btrfs_csum_file_block(struct btrfs_trans_handle *trans, 16@@ -193,7 +193,7 @@ int btrfs_csum_file_block(struct btrfs_trans_handle *trans,
17 struct btrfs_root *root, u64 alloc_end, 17 struct btrfs_root *root, u64 alloc_end,
18 u64 bytenr, char *data, size_t len) 18 u64 bytenr, char *data, size_t len)
19 { 19 {
20- int ret; 20- int ret;
21+ int ret = 0; 21+ int ret = 0;
22 struct btrfs_key file_key; 22 struct btrfs_key file_key;
23 struct btrfs_key found_key; 23 struct btrfs_key found_key;
24 u64 next_offset = (u64)-1; 24 u64 next_offset = (u64)-1;
25diff --git a/mkfs.c b/mkfs.c 25diff --git a/mkfs.c b/mkfs.c
26index 57c88f9..e953a33 100644 26index 57c88f9..e953a33 100644
27--- a/mkfs.c 27--- a/mkfs.c
28+++ b/mkfs.c 28+++ b/mkfs.c
29@@ -36,7 +36,7 @@ 29@@ -36,7 +36,7 @@
30 #include <uuid/uuid.h> 30 #include <uuid/uuid.h>
31 #include <linux/fs.h> 31 #include <linux/fs.h>
32 #include <ctype.h> 32 #include <ctype.h>
33-#include <attr/xattr.h> 33-#include <attr/xattr.h>
34+#include <sys/xattr.h> 34+#include <sys/xattr.h>
35 #include "kerncompat.h" 35 #include "kerncompat.h"
36 #include "ctree.h" 36 #include "ctree.h"
37 #include "disk-io.h" 37 #include "disk-io.h"
38@@ -517,7 +517,6 @@ static int add_inode_items(struct btrfs_trans_handle *trans, 38@@ -517,7 +517,6 @@ static int add_inode_items(struct btrfs_trans_handle *trans,
39 fail: 39 fail:
40 return ret; 40 return ret;
41 } 41 }
42- 42-
43 static int add_xattr_item(struct btrfs_trans_handle *trans, 43 static int add_xattr_item(struct btrfs_trans_handle *trans,
44 struct btrfs_root *root, u64 objectid, 44 struct btrfs_root *root, u64 objectid,
45 const char *file_name) 45 const char *file_name)
46@@ -532,8 +531,10 @@ static int add_xattr_item(struct btrfs_trans_handle *trans, 46@@ -532,8 +531,10 @@ static int add_xattr_item(struct btrfs_trans_handle *trans,
47 47
48 ret = llistxattr(file_name, xattr_list, XATTR_LIST_MAX); 48 ret = llistxattr(file_name, xattr_list, XATTR_LIST_MAX);
49 if (ret < 0) { 49 if (ret < 0) {
50- fprintf(stderr, "get a list of xattr failed for %s\n", 50- fprintf(stderr, "get a list of xattr failed for %s\n",
51- file_name); 51- file_name);
52+ if(errno == ENOTSUP) 52+ if(errno == ENOTSUP)
53+ return 0; 53+ return 0;
54+ fprintf(stderr, "get a list of xattr failed for %s errno %d\n", 54+ fprintf(stderr, "get a list of xattr failed for %s errno %d\n",
55+ file_name, errno); 55+ file_name, errno);
56 return ret; 56 return ret;
57 } 57 }
58 if (ret == 0) 58 if (ret == 0)
59@@ -546,8 +547,11 @@ static int add_xattr_item(struct btrfs_trans_handle *trans, 59@@ -546,8 +547,11 @@ static int add_xattr_item(struct btrfs_trans_handle *trans,
60 60
61 ret = getxattr(file_name, cur_name, cur_value, XATTR_SIZE_MAX); 61 ret = getxattr(file_name, cur_name, cur_value, XATTR_SIZE_MAX);
62 if (ret < 0) { 62 if (ret < 0) {
63- fprintf(stderr, "get a xattr value failed for %s\n", 63- fprintf(stderr, "get a xattr value failed for %s\n",
64- cur_name); 64- cur_name);
65+ if(errno == ENOTSUP) 65+ if(errno == ENOTSUP)
66+ return 0; 66+ return 0;
67+ fprintf(stderr, "get a xattr value failed for %s attr %s errno %d\n", 67+ fprintf(stderr, "get a xattr value failed for %s attr %s errno %d\n",
68+ file_name, cur_name, errno); 68+ file_name, cur_name, errno);
69+ return ret; 69+ return ret;
70 } 70 }
71 71
72 ret = btrfs_insert_xattr_item(trans, root, cur_name, 72 ret = btrfs_insert_xattr_item(trans, root, cur_name,
73@@ -563,7 +567,6 @@ static int add_xattr_item(struct btrfs_trans_handle *trans, 73@@ -563,7 +567,6 @@ static int add_xattr_item(struct btrfs_trans_handle *trans,
74 74
75 return ret; 75 return ret;
76 } 76 }
77- 77-
78 static int custom_alloc_extent(struct btrfs_root *root, u64 num_bytes, 78 static int custom_alloc_extent(struct btrfs_root *root, u64 num_bytes,
79 u64 hint_byte, struct btrfs_key *ins) 79 u64 hint_byte, struct btrfs_key *ins)
80 { 80 {
81@@ -923,27 +926,27 @@ static int traverse_directory(struct btrfs_trans_handle *trans, 81@@ -923,27 +926,27 @@ static int traverse_directory(struct btrfs_trans_handle *trans,
82 fprintf(stderr, "add_inode_items failed\n"); 82 fprintf(stderr, "add_inode_items failed\n");
83 goto fail; 83 goto fail;
84 } 84 }
85- 85-
86 ret = add_xattr_item(trans, root, 86 ret = add_xattr_item(trans, root,
87 cur_inum, cur_file->d_name); 87 cur_inum, cur_file->d_name);
88 if (ret) { 88 if (ret) {
89 fprintf(stderr, "add_xattr_item failed\n"); 89 fprintf(stderr, "add_xattr_item failed\n");
90- goto fail; 90- goto fail;
91+ if(ret != -ENOTSUP) 91+ if(ret != -ENOTSUP)
92+ goto fail; 92+ goto fail;
93 } 93 }
94- 94-
95 if (S_ISDIR(st.st_mode)) { 95 if (S_ISDIR(st.st_mode)) {
96 dir_entry = malloc(sizeof(struct directory_name_entry)); 96 dir_entry = malloc(sizeof(struct directory_name_entry));
97 dir_entry->dir_name = cur_file->d_name; 97 dir_entry->dir_name = cur_file->d_name;
98 dir_entry->path = make_path(parent_dir_entry->path, 98 dir_entry->path = make_path(parent_dir_entry->path,
99 cur_file->d_name); 99 cur_file->d_name);
100 dir_entry->inum = cur_inum; 100 dir_entry->inum = cur_inum;
101- list_add_tail(&dir_entry->list, &dir_head->list); 101- list_add_tail(&dir_entry->list, &dir_head->list);
102+ list_add_tail(&dir_entry->list, &dir_head->list); 102+ list_add_tail(&dir_entry->list, &dir_head->list);
103 } else if (S_ISREG(st.st_mode)) { 103 } else if (S_ISREG(st.st_mode)) {
104 ret = add_file_items(trans, root, &cur_inode, 104 ret = add_file_items(trans, root, &cur_inode,
105 cur_inum, parent_inum, &st, 105 cur_inum, parent_inum, &st,
106 cur_file->d_name, out_fd); 106 cur_file->d_name, out_fd);
107 if (ret) { 107 if (ret) {
108- fprintf(stderr, "add_file_items failed\n"); 108- fprintf(stderr, "add_file_items failed\n");
109+ fprintf(stderr, "add_file_items failed %s\n", 109+ fprintf(stderr, "add_file_items failed %s\n",
110+ cur_file->d_name); 110+ cur_file->d_name);
111 goto fail; 111 goto fail;
112 } 112 }
113 } else if (S_ISLNK(st.st_mode)) { 113 } else if (S_ISLNK(st.st_mode)) {
114@@ -987,7 +990,7 @@ static int create_chunks(struct btrfs_trans_handle *trans, 114@@ -987,7 +990,7 @@ static int create_chunks(struct btrfs_trans_handle *trans,
115 u64 chunk_size; 115 u64 chunk_size;
116 u64 meta_type = BTRFS_BLOCK_GROUP_METADATA; 116 u64 meta_type = BTRFS_BLOCK_GROUP_METADATA;
117 u64 data_type = BTRFS_BLOCK_GROUP_DATA; 117 u64 data_type = BTRFS_BLOCK_GROUP_DATA;
118- u64 minimum_data_chunk_size = 64 * 1024 * 1024; 118- u64 minimum_data_chunk_size = 64 * 1024 * 1024;
119+ u64 minimum_data_chunk_size = 8 * 1024 * 1024; 119+ u64 minimum_data_chunk_size = 8 * 1024 * 1024;
120 u64 i; 120 u64 i;
121 int ret; 121 int ret;
122 122
123@@ -1062,7 +1065,6 @@ static u64 size_sourcedir(char *dir_name, u64 sectorsize, 123@@ -1062,7 +1065,6 @@ static u64 size_sourcedir(char *dir_name, u64 sectorsize,
124 char path[512]; 124 char path[512];
125 char *file_name = "temp_file"; 125 char *file_name = "temp_file";
126 FILE *file; 126 FILE *file;
127- u64 minimum_data_size = 256 * 1024 * 1024; /* 256MB */ 127- u64 minimum_data_size = 256 * 1024 * 1024; /* 256MB */
128 u64 default_chunk_size = 8 * 1024 * 1024; /* 8MB */ 128 u64 default_chunk_size = 8 * 1024 * 1024; /* 8MB */
129 u64 allocated_meta_size = 8 * 1024 * 1024; /* 8MB */ 129 u64 allocated_meta_size = 8 * 1024 * 1024; /* 8MB */
130 u64 allocated_total_size = 20 * 1024 * 1024; /* 20MB */ 130 u64 allocated_total_size = 20 * 1024 * 1024; /* 20MB */
131@@ -1101,9 +1103,6 @@ static u64 size_sourcedir(char *dir_name, u64 sectorsize, 131@@ -1101,9 +1103,6 @@ static u64 size_sourcedir(char *dir_name, u64 sectorsize,
132 132
133 *num_of_meta_chunks_ret = num_of_meta_chunks; 133 *num_of_meta_chunks_ret = num_of_meta_chunks;
134 134
135- if (total_size < minimum_data_size) 135- if (total_size < minimum_data_size)
136- total_size = minimum_data_size; 136- total_size = minimum_data_size;
137- 137-
138 return total_size; 138 return total_size;
139 } 139 }
140 140
141@@ -1158,9 +1157,9 @@ int main(int ac, char **av) 141@@ -1158,9 +1157,9 @@ int main(int ac, char **av)
142 142
143 char *source_dir = NULL; 143 char *source_dir = NULL;
144 int source_dir_set = 0; 144 int source_dir_set = 0;
145- char *output = "output.img"; 145- char *output = "output.img";
146 u64 num_of_meta_chunks = 0; 146 u64 num_of_meta_chunks = 0;
147 u64 size_of_data = 0; 147 u64 size_of_data = 0;
148+ u64 source_dir_size = 0; 148+ u64 source_dir_size = 0;
149 149
150 while(1) { 150 while(1) {
151 int c; 151 int c;
152@@ -1224,8 +1223,6 @@ int main(int ac, char **av) 152@@ -1224,8 +1223,6 @@ int main(int ac, char **av)
153 fprintf(stderr, "Illegal nodesize %u\n", nodesize); 153 fprintf(stderr, "Illegal nodesize %u\n", nodesize);
154 exit(1); 154 exit(1);
155 } 155 }
156- if (source_dir_set) 156- if (source_dir_set)
157- ac++; 157- ac++;
158 ac = ac - optind; 158 ac = ac - optind;
159 if (ac == 0) 159 if (ac == 0)
160 print_usage(); 160 print_usage();
161@@ -1257,17 +1254,19 @@ int main(int ac, char **av) 161@@ -1257,17 +1254,19 @@ int main(int ac, char **av)
162 block_count = dev_block_count; 162 block_count = dev_block_count;
163 } else { 163 } else {
164 ac = 0; 164 ac = 0;
165- fd = open_target(output); 165- fd = open_target(output);
166+ file = av[optind++]; 166+ file = av[optind++];
167+ fd = open_target(file); 167+ fd = open_target(file);
168 if (fd < 0) { 168 if (fd < 0) {
169 fprintf(stderr, "unable to open the %s\n", file); 169 fprintf(stderr, "unable to open the %s\n", file);
170 exit(1); 170 exit(1);
171 } 171 }
172 172
173- file = output; 173- file = output;
174 first_fd = fd; 174 first_fd = fd;
175 first_file = file; 175 first_file = file;
176- block_count = size_sourcedir(source_dir, sectorsize, 176- block_count = size_sourcedir(source_dir, sectorsize,
177+ source_dir_size = size_sourcedir(source_dir, sectorsize, 177+ source_dir_size = size_sourcedir(source_dir, sectorsize,
178 &num_of_meta_chunks, &size_of_data); 178 &num_of_meta_chunks, &size_of_data);
179+ if(block_count < source_dir_size) 179+ if(block_count < source_dir_size)
180+ block_count = source_dir_size; 180+ block_count = source_dir_size;
181 ret = zero_output_file(fd, block_count, sectorsize); 181 ret = zero_output_file(fd, block_count, sectorsize);
182 if (ret) { 182 if (ret) {
183 fprintf(stderr, "unable to zero the output file\n"); 183 fprintf(stderr, "unable to zero the output file\n");