]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/cephfs: test ec data pool 18192/head
authorSage Weil <sage@redhat.com>
Mon, 9 Oct 2017 13:15:21 +0000 (08:15 -0500)
committerSage Weil <sage@redhat.com>
Tue, 24 Oct 2017 02:11:24 +0000 (21:11 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
46 files changed:
qa/cephfs/clusters/3-mds.yaml
qa/cephfs/clusters/9-mds.yaml
qa/cephfs/objectstore-ec/bluestore-comp-ec-root.yaml [new file with mode: 0644]
qa/cephfs/objectstore-ec/bluestore-comp.yaml [new file with mode: 0644]
qa/cephfs/objectstore-ec/bluestore-ec-root.yaml [new file with mode: 0644]
qa/cephfs/objectstore-ec/bluestore.yaml [new file with mode: 0644]
qa/cephfs/objectstore-ec/filestore-xfs.yaml [new file with mode: 0644]
qa/suites/fs/32bits/objectstore [deleted symlink]
qa/suites/fs/32bits/objectstore-ec [new symlink]
qa/suites/fs/basic_functional/objectstore/bluestore-ec-root.yaml [new symlink]
qa/suites/fs/basic_workload/objectstore [deleted symlink]
qa/suites/fs/basic_workload/objectstore-ec [new symlink]
qa/suites/fs/multiclient/clusters/three_clients.yaml
qa/suites/fs/multiclient/clusters/two_clients.yaml
qa/suites/fs/multiclient/objectstore [deleted symlink]
qa/suites/fs/multiclient/objectstore-ec [new symlink]
qa/suites/fs/multifs/clusters/2-remote-clients.yaml
qa/suites/fs/multifs/objectstore [deleted symlink]
qa/suites/fs/multifs/objectstore-ec [new symlink]
qa/suites/fs/permission/objectstore [deleted symlink]
qa/suites/fs/permission/objectstore-ec [new symlink]
qa/suites/fs/snaps/objectstore [deleted symlink]
qa/suites/fs/snaps/objectstore-ec [new symlink]
qa/suites/fs/thrash/objectstore [deleted symlink]
qa/suites/fs/thrash/objectstore-ec [new symlink]
qa/suites/fs/traceless/objectstore [deleted symlink]
qa/suites/fs/traceless/objectstore-ec [new symlink]
qa/suites/fs/verify/objectstore [deleted symlink]
qa/suites/fs/verify/objectstore-ec [new symlink]
qa/suites/kcephfs/cephfs/objectstore [deleted symlink]
qa/suites/kcephfs/cephfs/objectstore-ec [new symlink]
qa/suites/kcephfs/mixed-clients/objectstore [deleted symlink]
qa/suites/kcephfs/mixed-clients/objectstore-ec [new symlink]
qa/suites/kcephfs/recovery/clusters/4-remote-clients.yaml
qa/suites/kcephfs/recovery/objectstore [deleted symlink]
qa/suites/kcephfs/recovery/objectstore-ec [new symlink]
qa/suites/kcephfs/thrash/objectstore [deleted symlink]
qa/suites/kcephfs/thrash/objectstore-ec [new symlink]
qa/suites/multimds/basic/objectstore [deleted symlink]
qa/suites/multimds/basic/objectstore-ec [new symlink]
qa/suites/multimds/thrash/objectstore [deleted symlink]
qa/suites/multimds/thrash/objectstore-ec [new symlink]
qa/suites/multimds/verify/objectstore [deleted symlink]
qa/suites/multimds/verify/objectstore-ec [new symlink]
qa/tasks/ceph.py
qa/tasks/cephfs/filesystem.py

index ff35ed1a65b4d47d44a670f504010b968d88f84a..05c6142f8cb61f50bee4ed9105e93f467f8fa8ef 100644 (file)
@@ -1,4 +1,4 @@
 roles:
-- [mon.a, mon.c, mgr.y, mds.a, osd.0, osd.1, osd.2]
-- [mon.b, mgr.x, mds.b, mds.c, osd.3, osd.4, osd.5]
+- [mon.a, mon.c, mgr.y, mds.a, osd.0, osd.1, osd.2, osd.3]
+- [mon.b, mgr.x, mds.b, mds.c, osd.4, osd.5, osd.6, osd.7]
 - [client.0]
index c1228b3a1c7f6814946afb81e4a30f39accbc0c6..a6342dc06720f3627052852fde79c1edcd085c2a 100644 (file)
@@ -1,4 +1,4 @@
 roles:
-- [mon.a, mon.c, mgr.y, mds.a, mds.b, mds.c, mds.d, osd.0, osd.1, osd.2]
-- [mon.b, mgr.x, mds.e, mds.f, mds.g, mds.h, mds.i, osd.3, osd.4, osd.5]
+- [mon.a, mon.c, mgr.y, mds.a, mds.b, mds.c, mds.d, osd.0, osd.1, osd.2, osd.3]
+- [mon.b, mgr.x, mds.e, mds.f, mds.g, mds.h, mds.i, osd.4, osd.5, osd.6, osd.7]
 - [client.0]
diff --git a/qa/cephfs/objectstore-ec/bluestore-comp-ec-root.yaml b/qa/cephfs/objectstore-ec/bluestore-comp-ec-root.yaml
new file mode 100644 (file)
index 0000000..9bc487c
--- /dev/null
@@ -0,0 +1,28 @@
+overrides:
+  thrashosds:
+    bdev_inject_crash: 2
+    bdev_inject_crash_probability: .5
+  ceph:
+    fs: xfs
+    cephfs_ec_profile:
+      - m=2
+      - k=2
+      - crush-failure-domain=osd
+    conf:
+      osd:
+        osd objectstore: bluestore
+        bluestore block size: 96636764160
+        debug bluestore: 20
+        debug bluefs: 20
+        debug rocksdb: 10
+        bluestore compression mode: aggressive
+        bluestore fsck on mount: true
+        # lower the full ratios since we can fill up a 100gb osd so quickly
+        mon osd full ratio: .9
+        mon osd backfillfull_ratio: .85
+        mon osd nearfull ratio: .8
+        osd failsafe full ratio: .95
+
+# this doesn't work with failures bc the log writes are not atomic across the two backends
+#        bluestore bluefs env mirror: true
+
diff --git a/qa/cephfs/objectstore-ec/bluestore-comp.yaml b/qa/cephfs/objectstore-ec/bluestore-comp.yaml
new file mode 100644 (file)
index 0000000..b408032
--- /dev/null
@@ -0,0 +1,23 @@
+overrides:
+  thrashosds:
+    bdev_inject_crash: 2
+    bdev_inject_crash_probability: .5
+  ceph:
+    fs: xfs
+    conf:
+      osd:
+        osd objectstore: bluestore
+        bluestore block size: 96636764160
+        debug bluestore: 20
+        debug bluefs: 20
+        debug rocksdb: 10
+        bluestore compression mode: aggressive
+        bluestore fsck on mount: true
+        # lower the full ratios since we can fill up a 100gb osd so quickly
+        mon osd full ratio: .9
+        mon osd backfillfull_ratio: .85
+        mon osd nearfull ratio: .8
+        osd failsafe full ratio: .95
+
+# this doesn't work with failures bc the log writes are not atomic across the two backends
+#        bluestore bluefs env mirror: true
diff --git a/qa/cephfs/objectstore-ec/bluestore-ec-root.yaml b/qa/cephfs/objectstore-ec/bluestore-ec-root.yaml
new file mode 100644 (file)
index 0000000..726ad3d
--- /dev/null
@@ -0,0 +1,42 @@
+overrides:
+  thrashosds:
+    bdev_inject_crash: 2
+    bdev_inject_crash_probability: .5
+  ceph:
+    fs: xfs
+    cephfs_ec_profile:
+      - m=2
+      - k=2
+      - crush-failure-domain=osd
+    conf:
+      osd:
+        osd objectstore: bluestore
+        bluestore block size: 96636764160
+        debug bluestore: 20
+        debug bluefs: 20
+        debug rocksdb: 10
+        bluestore fsck on mount: true
+        # lower the full ratios since we can fill up a 100gb osd so quickly
+        mon osd full ratio: .9
+        mon osd backfillfull_ratio: .85
+        mon osd nearfull ratio: .8
+        osd failsafe full ratio: .95
+# this doesn't work with failures bc the log writes are not atomic across the two backends
+#        bluestore bluefs env mirror: true
+  ceph-deploy:
+    fs: xfs
+    bluestore: yes
+    conf:
+      osd:
+        osd objectstore: bluestore
+        bluestore block size: 96636764160
+        debug bluestore: 20
+        debug bluefs: 20
+        debug rocksdb: 10
+        bluestore fsck on mount: true
+        # lower the full ratios since we can fill up a 100gb osd so quickly
+        mon osd full ratio: .9
+        mon osd backfillfull_ratio: .85
+        mon osd nearfull ratio: .8
+        osd failsafe full ratio: .95
+
diff --git a/qa/cephfs/objectstore-ec/bluestore.yaml b/qa/cephfs/objectstore-ec/bluestore.yaml
new file mode 100644 (file)
index 0000000..19dfeb0
--- /dev/null
@@ -0,0 +1,38 @@
+overrides:
+  thrashosds:
+    bdev_inject_crash: 2
+    bdev_inject_crash_probability: .5
+  ceph:
+    fs: xfs
+    conf:
+      osd:
+        osd objectstore: bluestore
+        bluestore block size: 96636764160
+        debug bluestore: 20
+        debug bluefs: 20
+        debug rocksdb: 10
+        bluestore fsck on mount: true
+        # lower the full ratios since we can fill up a 100gb osd so quickly
+        mon osd full ratio: .9
+        mon osd backfillfull_ratio: .85
+        mon osd nearfull ratio: .8
+        osd failsafe full ratio: .95
+# this doesn't work with failures bc the log writes are not atomic across the two backends
+#        bluestore bluefs env mirror: true
+  ceph-deploy:
+    fs: xfs
+    bluestore: yes
+    conf:
+      osd:
+        osd objectstore: bluestore
+        bluestore block size: 96636764160
+        debug bluestore: 20
+        debug bluefs: 20
+        debug rocksdb: 10
+        bluestore fsck on mount: true
+        # lower the full ratios since we can fill up a 100gb osd so quickly
+        mon osd full ratio: .9
+        mon osd backfillfull_ratio: .85
+        mon osd nearfull ratio: .8
+        osd failsafe full ratio: .95
+
diff --git a/qa/cephfs/objectstore-ec/filestore-xfs.yaml b/qa/cephfs/objectstore-ec/filestore-xfs.yaml
new file mode 100644 (file)
index 0000000..f7aa0dd
--- /dev/null
@@ -0,0 +1,15 @@
+overrides:
+  ceph:
+    fs: xfs
+    conf:
+      osd:
+        osd objectstore: filestore
+        osd sloppy crc: true
+  ceph-deploy:
+    fs: xfs
+    filestore: True
+    conf:
+      osd:
+        osd objectstore: filestore
+        osd sloppy crc: true
+
diff --git a/qa/suites/fs/32bits/objectstore b/qa/suites/fs/32bits/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/32bits/objectstore-ec b/qa/suites/fs/32bits/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
diff --git a/qa/suites/fs/basic_functional/objectstore/bluestore-ec-root.yaml b/qa/suites/fs/basic_functional/objectstore/bluestore-ec-root.yaml
new file mode 120000 (symlink)
index 0000000..36a4d69
--- /dev/null
@@ -0,0 +1 @@
+../../../../cephfs/objectstore-ec/bluestore-ec-root.yaml
\ No newline at end of file
diff --git a/qa/suites/fs/basic_workload/objectstore b/qa/suites/fs/basic_workload/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/basic_workload/objectstore-ec b/qa/suites/fs/basic_workload/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
index 78b912f725283ae418b202d3d228121dffa87645..a533af5c620129f02c66f48f6c53c495605cfaa4 100644 (file)
@@ -1,5 +1,5 @@
 roles:
-- [mon.a, mon.b, mon.c, mgr.x, mds.a, osd.0, osd.1, osd.2]
+- [mon.a, mon.b, mon.c, mgr.x, mds.a, osd.0, osd.1, osd.2, osd.3]
 - [client.2]
 - [client.1]
 - [client.0]
index 9586e6c8ffd381d7a9dbb1d8c728bec008b78cb9..00f3815cbe55660f7ac71c4a7d6aa0a2a17a1573 100644 (file)
@@ -1,5 +1,5 @@
 roles:
-- [mon.a, mon.b, mon.c, mgr.x, mds.a, osd.0, osd.1, osd.2]
+- [mon.a, mon.b, mon.c, mgr.x, mds.a, osd.0, osd.1, osd.2, osd.3]
 - [client.1]
 - [client.0]
 
diff --git a/qa/suites/fs/multiclient/objectstore b/qa/suites/fs/multiclient/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/multiclient/objectstore-ec b/qa/suites/fs/multiclient/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
index 52c5d7e0171ae86a81dc489699e9efca927d2c20..2ae772c3f27341f231ced6ae422f9e448779514b 100644 (file)
@@ -1,6 +1,6 @@
 roles:
-- [mon.a, mgr.x, osd.0, mon.b, mds.a, mds.b, client.1]
-- [mds.c, mds.d, mon.c, client.0, osd.1, osd.2]
+- [mon.a, mgr.x, osd.0, osd.1, osd.2, osd.3, mon.b, mds.a, mds.b, client.1]
+- [mds.c, mds.d, mon.c, client.0, osd.4, osd.5, osd.6, osd.7]
 openstack:
 - volumes: # attached to each instance
     count: 2
diff --git a/qa/suites/fs/multifs/objectstore b/qa/suites/fs/multifs/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/multifs/objectstore-ec b/qa/suites/fs/multifs/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
diff --git a/qa/suites/fs/permission/objectstore b/qa/suites/fs/permission/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/permission/objectstore-ec b/qa/suites/fs/permission/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
diff --git a/qa/suites/fs/snaps/objectstore b/qa/suites/fs/snaps/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/snaps/objectstore-ec b/qa/suites/fs/snaps/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
diff --git a/qa/suites/fs/thrash/objectstore b/qa/suites/fs/thrash/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/thrash/objectstore-ec b/qa/suites/fs/thrash/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
diff --git a/qa/suites/fs/traceless/objectstore b/qa/suites/fs/traceless/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/traceless/objectstore-ec b/qa/suites/fs/traceless/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
diff --git a/qa/suites/fs/verify/objectstore b/qa/suites/fs/verify/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/fs/verify/objectstore-ec b/qa/suites/fs/verify/objectstore-ec
new file mode 120000 (symlink)
index 0000000..a330d66
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec/
\ No newline at end of file
diff --git a/qa/suites/kcephfs/cephfs/objectstore b/qa/suites/kcephfs/cephfs/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/kcephfs/cephfs/objectstore-ec b/qa/suites/kcephfs/cephfs/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
diff --git a/qa/suites/kcephfs/mixed-clients/objectstore b/qa/suites/kcephfs/mixed-clients/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/kcephfs/mixed-clients/objectstore-ec b/qa/suites/kcephfs/mixed-clients/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
index 1d432addb4af25d2acb4ad23e409d0faeab06afc..b1072e3be164bb2b0892e2696919b02c365d1a4c 100644 (file)
@@ -1,6 +1,6 @@
 roles:
-- [mon.a, osd.0, mds.a, mds.c, client.2]
-- [mgr.x, osd.1, osd.2, mds.b, mds.d, client.3]
+- [mon.a, osd.0, osd.1, osd.2, osd.3, mds.a, mds.c, client.2]
+- [mgr.x, osd.4, osd.5, osd.6, osd.7, mds.b, mds.d, client.3]
 - [client.0]
 - [client.1]
 openstack:
diff --git a/qa/suites/kcephfs/recovery/objectstore b/qa/suites/kcephfs/recovery/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/kcephfs/recovery/objectstore-ec b/qa/suites/kcephfs/recovery/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
diff --git a/qa/suites/kcephfs/thrash/objectstore b/qa/suites/kcephfs/thrash/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/kcephfs/thrash/objectstore-ec b/qa/suites/kcephfs/thrash/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
diff --git a/qa/suites/multimds/basic/objectstore b/qa/suites/multimds/basic/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/multimds/basic/objectstore-ec b/qa/suites/multimds/basic/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
diff --git a/qa/suites/multimds/thrash/objectstore b/qa/suites/multimds/thrash/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/multimds/thrash/objectstore-ec b/qa/suites/multimds/thrash/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
diff --git a/qa/suites/multimds/verify/objectstore b/qa/suites/multimds/verify/objectstore
deleted file mode 120000 (symlink)
index c72da2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../objectstore_cephfs
\ No newline at end of file
diff --git a/qa/suites/multimds/verify/objectstore-ec b/qa/suites/multimds/verify/objectstore-ec
new file mode 120000 (symlink)
index 0000000..15dc98f
--- /dev/null
@@ -0,0 +1 @@
+../../../cephfs/objectstore-ec
\ No newline at end of file
index a37fec1c070374e88612306dd9797a88219637f7..1c345926a55ed948e31396158d930639a8e38ccd 100644 (file)
@@ -365,7 +365,8 @@ def cephfs_setup(ctx, config):
     if mdss.remotes:
         log.info('Setting up CephFS filesystem...')
 
-        fs = Filesystem(ctx, name='cephfs', create=True)
+        fs = Filesystem(ctx, name='cephfs', create=True,
+                        ec_profile=config.get('cephfs_ec_profile', None))
 
         is_active_mds = lambda role: 'mds.' in role and not role.endswith('-s') and '-s-' not in role
         all_roles = [item for remote_roles in mdss.remotes.values() for item in remote_roles]
index 44f6cbaf16dbf0e9e9e2418dfed9f5dd9ca4acbd..9638fd55c96ab02f9651d3cbf33d802d449a3949 100644 (file)
@@ -374,10 +374,12 @@ class Filesystem(MDSCluster):
     This object is for driving a CephFS filesystem.  The MDS daemons driven by
     MDSCluster may be shared with other Filesystems.
     """
-    def __init__(self, ctx, fscid=None, name=None, create=False):
+    def __init__(self, ctx, fscid=None, name=None, create=False,
+                 ec_profile=None):
         super(Filesystem, self).__init__(ctx)
 
         self.name = name
+        self.ec_profile = ec_profile
         self.id = None
         self.metadata_pool_name = None
         self.metadata_overlay = False
@@ -473,8 +475,22 @@ class Filesystem(MDSCluster):
                                              self.name, self.metadata_pool_name, data_pool_name,
                                              '--allow-dangerous-metadata-overlay')
         else:
-            self.mon_manager.raw_cluster_cmd('osd', 'pool', 'create',
-                                             data_pool_name, pgs_per_fs_pool.__str__())
+            if self.ec_profile:
+                log.info("EC profile is %s", self.ec_profile)
+                cmd = ['osd', 'erasure-code-profile', 'set', data_pool_name]
+                cmd.extend(self.ec_profile)
+                self.mon_manager.raw_cluster_cmd(*cmd)
+                self.mon_manager.raw_cluster_cmd(
+                    'osd', 'pool', 'create',
+                    data_pool_name, pgs_per_fs_pool.__str__(), 'erasure',
+                    data_pool_name)
+                self.mon_manager.raw_cluster_cmd(
+                    'osd', 'pool', 'set',
+                    data_pool_name, 'allow_ec_overwrites', 'true')
+            else:
+                self.mon_manager.raw_cluster_cmd(
+                    'osd', 'pool', 'create',
+                    data_pool_name, pgs_per_fs_pool.__str__())
             self.mon_manager.raw_cluster_cmd('fs', 'new',
                                              self.name, self.metadata_pool_name, data_pool_name)
         self.check_pool_application(self.metadata_pool_name)