From fca84e94173c66133e20fee2b092b29a475aa2f3 Mon Sep 17 00:00:00 2001
From: Thomas Schoebel-Theuer <tst@1und1.de>
Date: Mon, 13 May 2013 12:25:51 +0200
Subject: [PATCH] marsadm: optional size argument for 'create-resource'

---
 userspace/marsadm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/userspace/marsadm b/userspace/marsadm
index fc3eb66b..478aaab0 100755
--- a/userspace/marsadm
+++ b/userspace/marsadm
@@ -733,7 +733,7 @@ sub leave_cluster {
 }
 
 sub create_res {
-  my ($cmd, $res, $dev, $appear) = @_;
+  my ($cmd, $res, $dev, $appear, $size_arg) = @_;
   my $create = ($cmd eq "create-resource");
 
   ldie "undefined device or size argument\n" unless $dev;
@@ -761,6 +761,12 @@ sub create_res {
     $size = sysseek(TEST, 0, SEEK_END);
     close(TEST);
     lprint "block device '$dev': determined size = $size bytes\n";
+    if ($size_arg) {
+      my $new_size = get_size($size_arg);
+      ldie "size argument '$size_arg' is smaller than device size '$size'\n" unless $new_size <= $size;
+      lprint "reducing size from $size to $new_size\n";
+      $size = $new_size;
+    }
   } else {
     $size = get_size($dev);
     if ($size > 0) {