summaryrefslogtreecommitdiffstats
path: root/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch')
-rw-r--r--meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch
new file mode 100644
index 000000000..3b50ffbf3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch
@@ -0,0 +1,78 @@
+From b9254539811ce912bfd16dd1d185eba7a10cceff Mon Sep 17 00:00:00 2001
+From: Markus Mayer <mmayer@mmayer.net>
+Date: Wed, 7 Sep 2016 12:58:47 +0300
+Subject: [PATCH] ext4_utils: add -o argument to preserve ownership
+
+See also https://android-review.googlesource.com/#/c/100312/
+
+Upstream-Status: Inappropriate
+---
+ ext4_utils/make_ext4fs.c | 6 ++++++
+ ext4_utils/make_ext4fs_main.c | 10 ++++++++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/ext4_utils/make_ext4fs.c b/ext4_utils/make_ext4fs.c
+index 732afbed7..2cbf04399 100644
+--- a/ext4_utils/make_ext4fs.c
++++ b/ext4_utils/make_ext4fs.c
+@@ -67,6 +67,8 @@
+
+ #endif
+
++int preserve_owner = 0;
++
+ /* TODO: Not implemented:
+ Allocating blocks in the same block group as the file inode
+ Hash or binary tree directories
+@@ -185,6 +187,10 @@ static u32 build_directory_structure(const char *full_path, const char *dir_path
+ } else {
+ dentries[i].mtime = fixed_time;
+ }
++ if (preserve_owner) {
++ dentries[i].uid = stat.st_uid;
++ dentries[i].gid = stat.st_gid;
++ }
+ uint64_t capabilities;
+ if (fs_config_func != NULL) {
+ #ifdef ANDROID
+diff --git a/ext4_utils/make_ext4fs_main.c b/ext4_utils/make_ext4fs_main.c
+index f8e7b9da9..e82d43277 100644
+--- a/ext4_utils/make_ext4fs_main.c
++++ b/ext4_utils/make_ext4fs_main.c
+@@ -47,13 +47,15 @@ struct selabel_handle;
+ extern struct fs_info info;
+
+
++extern int preserve_owner;
++
+ static void usage(char *path)
+ {
+ fprintf(stderr, "%s [ -l <len> ] [ -j <journal size> ] [ -b <block_size> ]\n", basename(path));
+ fprintf(stderr, " [ -g <blocks per group> ] [ -i <inodes> ] [ -I <inode size> ]\n");
+ fprintf(stderr, " [ -L <label> ] [ -f ] [ -a <android mountpoint> ]\n");
+ fprintf(stderr, " [ -S file_contexts ] [ -C fs_config ] [ -T timestamp ]\n");
+- fprintf(stderr, " [ -z | -s ] [ -w ] [ -c ] [ -J ] [ -v ] [ -B <block_list_file> ]\n");
++ fprintf(stderr, " [ -z | -s ] [ -w ] [ -c ] [ -J ] [ -o ] [ -v ] [ -B <block_list_file> ]\n");
+ fprintf(stderr, " <filename> [<directory>]\n");
+ }
+
+@@ -79,7 +81,7 @@ int main(int argc, char **argv)
+ struct selinux_opt seopts[] = { { SELABEL_OPT_PATH, "" } };
+ #endif
+
+- while ((opt = getopt(argc, argv, "l:j:b:g:i:I:L:a:S:T:C:B:fwzJsctv")) != -1) {
++ while ((opt = getopt(argc, argv, "l:j:b:g:i:I:L:a:S:T:C:B:fwzJsctov")) != -1) {
+ switch (opt) {
+ case 'l':
+ info.len = parse_num(optarg);
+@@ -142,6 +144,10 @@ int main(int argc, char **argv)
+ }
+ #endif
+ break;
++ case 'o':
++ preserve_owner = 1;
++ printf("Warning: Enabling 'preserve ownership', this is an unofficial feature!\n");
++ break;
+ case 'v':
+ verbose = 1;
+ break;
OpenPOWER on IntegriCloud