Merge "fastboot: handle small flash block sizes correctly" am: ebcfa44937 am: 5aff24e01d
am: e09baa0f20

Change-Id: I8e7b05e53626c0b78b0e741d4369e6b324074ba1
diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp
index df755aa..40c18e0 100644
--- a/fastboot/fastboot.cpp
+++ b/fastboot/fastboot.cpp
@@ -1365,9 +1365,8 @@
         fprintf(stderr, "Couldn't parse %s '%s'.\n", name.c_str(), sizeString.c_str());
         return 0;
     }
-    if (size < 4096 || (size & (size - 1)) != 0) {
-        fprintf(stderr, "Invalid %s %u: must be a power of 2 and at least 4096.\n",
-                name.c_str(), size);
+    if ((size & (size - 1)) != 0) {
+        fprintf(stderr, "Invalid %s %u: must be a power of 2.\n", name.c_str(), size);
         return 0;
     }
     return size;
diff --git a/fastboot/fs.cpp b/fastboot/fs.cpp
index 8006beb..2d77dd6 100644
--- a/fastboot/fs.cpp
+++ b/fastboot/fs.cpp
@@ -119,6 +119,8 @@
         int raid_stripe_width = eraseBlkSize / block_size;
         // stride should be the max of 8kb and logical block size
         if (logicalBlkSize != 0 && logicalBlkSize < 8192) raid_stride = 8192 / block_size;
+        // stripe width should be >= stride
+        if (raid_stripe_width < raid_stride) raid_stripe_width = raid_stride;
         ext_attr += StringPrintf(",stride=%d,stripe-width=%d", raid_stride, raid_stripe_width);
     }
     mke2fs_args.push_back("-E");