log = logging.getLogger(__name__)
-def wait_for_victim_pg(manager):
+def wait_for_victim_pg(manager, poolid):
"""Return a PG with some data and its acting set"""
# wait for some PG to have data that we can mess with
victim = None
while victim is None:
stats = manager.get_pg_stats()
for pg in stats:
+ pgid = str(pg['pgid'])
+ pgpool = int(pgid.split('.')[0])
+ if poolid != pgpool:
+ continue
size = pg['stat_sum']['num_bytes']
if size > 0:
victim = pg['pgid']
manager.flush_pg_stats(range(num_osds))
manager.wait_for_clean()
+ osd_dump = manager.get_osd_dump_json()
+ poolid = -1
+ for p in osd_dump['pools']:
+ if p['pool_name'] == 'rbd':
+ poolid = p['pool']
+ break
+ assert poolid != -1
+
# write some data
p = manager.do_rados(['bench', '--no-cleanup', '1', 'write', '-b', '4096'], pool='rbd')
log.info('err is %d' % p.exitstatus)
# wait for some PG to have data that we can mess with
- pg, acting = wait_for_victim_pg(manager)
+ pg, acting = wait_for_victim_pg(manager, poolid)
osd = acting[0]
osd_remote, obj_path, obj_name = find_victim_object(ctx, pg, osd)