]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-disk: always check zap is applied on a full device 5755/head
authorLoic Dachary <ldachary@redhat.com>
Sun, 31 May 2015 17:42:45 +0000 (19:42 +0200)
committerLoic Dachary <ldachary@redhat.com>
Wed, 2 Sep 2015 06:31:40 +0000 (08:31 +0200)
zap only makes sense on a full device and this is verified for

    ceph-disk prepare --zap-disk

but not for

    ceph-disk zap

Unify the two and add a test to check that it fails as expected when
trying to zap a directory.

http://tracker.ceph.com/issues/11272 Fixes: #11272

Signed-off-by: Loic Dachary <ldachary@redhat.com>
(cherry picked from commit 8e1bcf21f090fc98ac9b495d76614e3012f5872a)

Conflicts:
src/test/ceph-disk.sh : trivial resolution

src/ceph-disk
src/test/ceph-disk.sh

index 61a28fdf00f22a0279c759a5151336f4be1e8254..4a485201a4fe59c65b7e9da9210b2b0bcf3387e1 100755 (executable)
@@ -1039,6 +1039,9 @@ def zap(dev):
     """
     Destroy the partition table and content of a given disk.
     """
+    dmode = os.stat(dev).st_mode
+    if not stat.S_ISBLK(dmode) or is_partition(dev):
+        raise Error('not full block device; cannot zap', dev)
     try:
         LOG.debug('Zapping partition table on %s', dev)
 
@@ -1501,10 +1504,7 @@ def main_prepare(args):
                 verify_not_in_use(args.journal, False)
 
         if args.zap_disk is not None:
-            if stat.S_ISBLK(dmode) and not is_partition(args.data):
-                zap(args.data)
-            else:
-                raise Error('not full block device; cannot zap', args.data)
+            zap(args.data)
 
         if args.cluster_uuid is None:
             args.cluster_uuid = get_fsid(cluster=args.cluster)
index d265a573a09dde61ea4f4c762faa434356022b77..8f36a584e830268873095530669f44cba8892ef5 100755 (executable)
@@ -167,6 +167,15 @@ function test_no_path() {
     ( unset PATH ; test_activate_dir ) || return 1
 }
 
+function test_zap() {
+    local osd_data=$DIR/dir
+    $mkdir -p $osd_data
+
+    ./ceph-disk $CEPH_DISK_ARGS zap $osd_data 2>&1 | grep 'not full block device' || return 1
+
+    $rm -fr $osd_data
+}
+
 # ceph-disk prepare returns immediately on success if the magic file
 # exists in the --osd-data directory.
 function test_activate_dir_magic() {
@@ -470,6 +479,7 @@ function run() {
     default_actions+="test_activate_dir_magic "
     default_actions+="test_activate_dir "
     default_actions+="test_keyring_path "
+    default_actions+="test_zap "
     local actions=${@:-$default_actions}
     for action in $actions  ; do
         setup