]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - util.c
Grow: support --array-size changes
[thirdparty/mdadm.git] / util.c
diff --git a/util.c b/util.c
index f09fd843c9aa8bec32aeb0e39da7e6c47e9ba5c2..080decc222a970bf36a9e2329c6eb7b27f307678 100644 (file)
--- a/util.c
+++ b/util.c
@@ -154,6 +154,37 @@ int get_linux_version()
        return (a*1000000)+(b*1000)+c;
 }
 
+long long parse_size(char *size)
+{
+       /* parse 'size' which should be a number optionally
+        * followed by 'K', 'M', or 'G'.
+        * Without a suffix, K is assumed.
+        * Number returned is in sectors (half-K)
+        */
+       char *c;
+       long long s = strtoll(size, &c, 10);
+       if (s > 0) {
+               switch (*c) {
+               case 'K':
+                       c++;
+               default:
+                       s *= 2;
+                       break;
+               case 'M':
+                       c++;
+                       s *= 1024 * 2;
+                       break;
+               case 'G':
+                       c++;
+                       s *= 1024 * 1024 * 2;
+                       break;
+               }
+       }
+       if (*c)
+               s = 0;
+       return s;
+}
+
 void remove_partitions(int fd)
 {
        /* remove partitions from this block devices.