[parted-devel] [PATCH 4/7] parted: make _partition_warn_busy actually a warning instead of an error

Phillip Susi psusi at ubuntu.com
Sun May 25 21:11:30 UTC 2014


This function was throwing a PED_EXCEPTION_ERROR with only the
PED_EXCEPTION_CANCEL option.  Converted to a PED_EXCEPTION_WARNING
with the option to continue anyhow.
---
 NEWS                                            |  3 +++
 parted/parted.c                                 | 17 ++++++++++-------
 tests/t1101-busy-partition.sh                   |  2 +-
 tests/t1102-loop-label.sh                       |  3 +--
 tests/t9041-undetected-in-use-16th-partition.sh |  4 ++--
 5 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/NEWS b/NEWS
index 9e85ff0..4de66da 100644
--- a/NEWS
+++ b/NEWS
@@ -132,6 +132,9 @@ GNU parted NEWS                                    -*- outline -*-
 
 ** Changes in behavior
 
+  When attempting to manipulate a mounted partition, parted now issues
+  a warning that you can choose to ignore, instead of an error.
+
   When creating a loop label, it automatically comes with a partition
   using the whole disk.
 
diff --git a/parted/parted.c b/parted/parted.c
index 6a5440b..17577a8 100644
--- a/parted/parted.c
+++ b/parted/parted.c
@@ -224,14 +224,17 @@ _partition_warn_busy (PedPartition* part)
 
         if (ped_partition_is_busy (part)) {
                 path = ped_partition_get_path (part);
-                ped_exception_throw (
-                        PED_EXCEPTION_ERROR,
-                        PED_EXCEPTION_CANCEL,
-                        _("Partition %s is being used. You must unmount it "
-                          "before you modify it with Parted."),
-                        path);
+                if (ped_exception_throw (
+                            PED_EXCEPTION_WARNING,
+                            PED_EXCEPTION_YES_NO,
+                            _("Partition %s is being used. Are you sure you " \
+                              "want to continue?"),
+                            path) != PED_EXCEPTION_YES)
+                {
+                        free (path);
+                        return 0;
+                }
                 free (path);
-                return 0;
         }
         return 1;
 }
diff --git a/tests/t1101-busy-partition.sh b/tests/t1101-busy-partition.sh
index 81ccdb8..d0db709 100755
--- a/tests/t1101-busy-partition.sh
+++ b/tests/t1101-busy-partition.sh
@@ -29,7 +29,7 @@ scsi_debug_setup_ dev_size_mb=80 > dev-name ||
 dev=$(cat dev-name)
 
 cat <<EOF > exp-error || framework_failure
-Error: Partition ${dev}2 is being used. You must unmount it before you modify it with Parted.
+Warning: Partition ${dev}2 is being used. Are you sure you want to continue?
 EOF
 
 parted -s "$dev" mklabel msdos > out 2>&1 || fail=1
diff --git a/tests/t1102-loop-label.sh b/tests/t1102-loop-label.sh
index f5701a3..2c3b3a0 100644
--- a/tests/t1102-loop-label.sh
+++ b/tests/t1102-loop-label.sh
@@ -73,8 +73,7 @@ compare exp out || fail=1
 # make sure partition busy check works ( mklabel checks whole disk )
 parted -s "$dev" rm 1 > out 2>&1; test $? = 1 || fail=1
 # create expected output file
-echo "Error: Partition $dev is being used. You must unmount it before you modify \
-it with Parted." > exp
+echo "Warning: Partition /dev/sdf is being used. Are you sure you want to continue?" > exp
 compare exp out || fail=1
 
 umount "$mount_point"
diff --git a/tests/t9041-undetected-in-use-16th-partition.sh b/tests/t9041-undetected-in-use-16th-partition.sh
index 2c4390d..f4c75b9 100644
--- a/tests/t9041-undetected-in-use-16th-partition.sh
+++ b/tests/t9041-undetected-in-use-16th-partition.sh
@@ -87,8 +87,8 @@ for part_dev in $partitions; do
   # Removal of mounted partition must fail.
   parted -s $scsi_dev rm $n > out 2>&1 && fail=1
 
-  echo "Error: Partition $part_dev is being used." \
-	  'You must unmount it before you modify it with Parted.' \
+  echo "Warning: Partition $part_dev is being used." \
+          'Are you sure you want to continue?' \
     > exp-error || framework_failure_
 
   # expect error
-- 
1.9.1




More information about the parted-devel mailing list