diff --git a/ext_scripts/ext_rbd.py b/ext_scripts/ext_rbd.py index 006e5c0afccf9f2303dadc015fb6bb96df1cc7d1..cd41e621d45fb055e279f635867a48e57459cab1 100755 --- a/ext_scripts/ext_rbd.py +++ b/ext_scripts/ext_rbd.py @@ -281,7 +281,7 @@ def snapshot(env): return 1 -def format_qemu_uri(name, pool=None, cephx=None, conf_file=None): +def format_qemu_uri(name, pool=None, cephx=None, conf_file=None, cache=None): """Create a QEMU RBD URI for the specific image / environment""" uri = 'kvm:rbd:%s' % RBD.format_name(name, pool=pool) @@ -290,6 +290,9 @@ def format_qemu_uri(name, pool=None, cephx=None, conf_file=None): extra_conf += ':id=%s' % cephx['id'] if conf_file: extra_conf += ':conf=%s' % conf_file + # TODO: we need to revisit this, to support more caching modes correctly. + if cache in ['writeback']: + extra_conf += ':rbd_cache=true' if extra_conf: uri += extra_conf @@ -311,6 +314,7 @@ def attach(env): name = env.get("name") pool = env.get("rbd_pool") cephx = env.get("cephx") + cache = env.get("cache") if userspace_only: device = "" else: @@ -325,7 +329,7 @@ def attach(env): % (RBD.format_name(name, pool=pool), device)) sys.stdout.write("%s" % device) - qemu_uri = format_qemu_uri(name, pool=pool, cephx=cephx) + qemu_uri = format_qemu_uri(name, pool=pool, cephx=cephx, cache=cache) sys.stdout.write("\n%s" % qemu_uri) return 0