]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-disk: do not activate device that is not ready 10884/head
authorBoris Ranto <branto@redhat.com>
Mon, 27 Jun 2016 09:48:17 +0000 (11:48 +0200)
committerLoic Dachary <ldachary@redhat.com>
Fri, 26 Aug 2016 06:54:21 +0000 (08:54 +0200)
If the journal (or data) device is not ready when we are activating the
data (or journal) device, just print an info message and exit with 0 so
that the ceph-disk systemd service won't fail in this case.

Fixes: http://tracker.ceph.com/issues/15990
Signed-off-by: Boris Ranto <branto@redhat.com>
(cherry picked from commit 73a7a65f65b1f6e90c4cae101bd43fabaeac3045)

src/ceph-disk/ceph_disk/main.py

index 807733c125480d13b2944b0036051c9cf20914a7..fdefe4f0d6e158676c92eda26bce98d623eed317 100755 (executable)
@@ -3328,6 +3328,13 @@ def main_activate(args):
         else:
             raise Error('%s is not a directory or block device' % args.path)
 
+        # exit with 0 if the journal device is not up, yet
+        # journal device will do the activation
+        osd_journal = '{path}/journal'.format(path=osd_data)
+        if os.path.islink(osd_journal) and not os.access(osd_journal, os.F_OK):
+            LOG.info("activate: Journal not present, not starting, yet")
+            return
+
         if (not args.no_start_daemon and args.mark_init == 'none'):
             command_check_call(
                 [
@@ -3335,7 +3342,7 @@ def main_activate(args):
                     '--cluster={cluster}'.format(cluster=cluster),
                     '--id={osd_id}'.format(osd_id=osd_id),
                     '--osd-data={path}'.format(path=osd_data),
-                    '--osd-journal={path}/journal'.format(path=osd_data),
+                    '--osd-journal={journal}'.format(journal=osd_journal),
                 ],
             )
 
@@ -3730,6 +3737,12 @@ def main_activate_space(name, args):
             LOG.info('suppressed activate request on %s', path)
             return
 
+        # warn and exit with 0 if the data device is not up, yet
+        # data device will do the activation
+        if not os.access(path, os.F_OK):
+            LOG.info("activate: OSD device not present, not starting, yet")
+            return
+
         (cluster, osd_id) = mount_activate(
             dev=path,
             activate_key_template=args.activate_key_template,