summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorJin Qian <jinqian@google.com>2018-01-22 10:47:41 -0800
committerTheodore Ts'o <tytso@mit.edu>2018-06-21 09:43:09 -0400
commit611d341377607d69b053436fec6de016fe8258fd (patch)
tree0bd9b72e56a1d1ec36c2d42922a2af0cc73873a1 /contrib
parent555a0fce11966a35a5289d7b57afec343d3eaa7b (diff)
AOSP: libext2fs: add EXT2_FLAG_SHARE_DUP to de-duplicate data blocks
When assigning physical address for new data block, search sha of existing blocks for match. If there's a match, reuse address of the matched block. Also set EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS in de-duped image. Signed-off-by: Theodore Ts'o <tytso@mit.edu> Google-Bug-Id: 64109868 Change-Id: I8d2d22e9c301264413c1454c84d7bf6bb32ac5c0 From AOSP commit: 3d7abcc7843d6dfdfdafabf43f5e072cb7aaffbd
Diffstat (limited to 'contrib')
-rw-r--r--contrib/android/e2fsdroid.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/contrib/android/e2fsdroid.c b/contrib/android/e2fsdroid.c
index c73b0be5..2fe922d8 100644
--- a/contrib/android/e2fsdroid.c
+++ b/contrib/android/e2fsdroid.c
@@ -32,7 +32,7 @@ static void usage(int ret)
{
fprintf(stderr, "%s [-B block_list] [-D basefs_out] [-T timestamp]\n"
"\t[-C fs_config] [-S file_contexts] [-p product_out]\n"
- "\t[-a mountpoint] [-d basefs_in] [-f src_dir] [-e] image\n",
+ "\t[-a mountpoint] [-d basefs_in] [-f src_dir] [-e] [-s] image\n",
prog_name);
exit(ret);
}
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
add_error_table(&et_ext2_error_table);
- while ((c = getopt (argc, argv, "T:C:S:p:a:D:d:B:f:e")) != EOF) {
+ while ((c = getopt (argc, argv, "T:C:S:p:a:D:d:B:f:es")) != EOF) {
switch (c) {
case 'T':
fixed_time = strtoul(optarg, &p, 0);
@@ -119,6 +119,9 @@ int main(int argc, char *argv[])
case 'e':
android_sparse_file = 0;
break;
+ case 's':
+ flags |= EXT2_FLAG_SHARE_DUP;
+ break;
default:
usage(EXIT_FAILURE);
}