From e337c4727c8894f4dfea62856c8a25c1f1ade5b1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 31 Jan 2012 16:13:59 -0800 Subject: [PATCH] ceph_manager: add manager.blackhole_kill_osd() This will suspend disk writes for a couple seconds and then kill the daemon. It helps us similute a hardware failure. --- teuthology/task/ceph_manager.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/teuthology/task/ceph_manager.py b/teuthology/task/ceph_manager.py index 99eb8a7dbfa4d..2a21ebfbbfc57 100644 --- a/teuthology/task/ceph_manager.py +++ b/teuthology/task/ceph_manager.py @@ -39,6 +39,14 @@ class Thrasher(gevent.Greenlet): self.dead_osds.append(osd) self.ceph_manager.kill_osd(osd) + def blackhole_kill_osd(self, osd=None): + if osd is None: + osd = random.choice(self.live_osds) + self.log("Blackholing and then killing osd %s, live_osds are %s"%(str(osd),str(self.live_osds))) + self.live_osds.remove(osd) + self.dead_osds.append(osd) + self.ceph_manager.blackhole_kill_osd(osd) + def revive_osd(self, osd=None): if osd is None: osd = random.choice(self.dead_osds) @@ -277,6 +285,12 @@ class CephManager: def kill_osd(self, osd): self.ctx.daemons.get_daemon('osd', osd).stop() + def blackhole_kill_osd(self, osd): + self.raw_cluster_cmd('--', 'tell', 'osd.%d' % osd, + 'injectargs', '--filestore-blackhole') + time.sleep(2) + self.ctx.daemons.get_daemon('osd', osd).stop() + def revive_osd(self, osd): self.ctx.daemons.get_daemon('osd', osd).restart() -- 2.39.5