Add DRBD barriers disk parameters
[ganeti-local] / lib / constants.py
index c7aa397..c91f5f5 100644 (file)
@@ -472,7 +472,25 @@ LDS_BLOCK = frozenset([LD_LV, LD_DRBD8, LD_BLOCKDEV])
 # drbd constants
 DRBD_HMAC_ALG = "md5"
 DRBD_NET_PROTOCOL = "C"
-DRBD_BARRIERS = _autoconf.DRBD_BARRIERS
+
+# drbd barrier types
+DRBD_B_NONE = "n"
+DRBD_B_DISK_BARRIERS = "b"
+DRBD_B_DISK_DRAIN = "d"
+DRBD_B_DISK_FLUSH = "f"
+
+# Valid barrier combinations: "n" or any non-null subset of "bfd"
+DRBD_VALID_BARRIER_OPT = frozenset([
+  frozenset([DRBD_B_NONE]),
+  frozenset([DRBD_B_DISK_BARRIERS]),
+  frozenset([DRBD_B_DISK_DRAIN]),
+  frozenset([DRBD_B_DISK_FLUSH]),
+  frozenset([DRBD_B_DISK_DRAIN, DRBD_B_DISK_FLUSH]),
+  frozenset([DRBD_B_DISK_DRAIN, DRBD_B_DISK_FLUSH]),
+  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_DRAIN]),
+  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH]),
+  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH, DRBD_B_DISK_DRAIN]),
+  ])
 
 # file backend driver
 FD_LOOP = "loop"
@@ -898,9 +916,13 @@ NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys())
 # Logical Disks parameters
 RESYNC_RATE = "resync-rate"
 STRIPES = "stripes"
+BARRIERS = "disabled-barriers"
+NO_META_FLUSH = "disable-meta-flush"
 DISK_LD_TYPES = {
   RESYNC_RATE: VTYPE_INT,
   STRIPES: VTYPE_INT,
+  BARRIERS: VTYPE_STRING,
+  NO_META_FLUSH: VTYPE_BOOL,
   }
 DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys())
 
@@ -908,11 +930,15 @@ DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys())
 DRBD_RESYNC_RATE = "resync-rate"
 DRBD_DATA_STRIPES = "data-stripes"
 DRBD_META_STRIPES = "meta-stripes"
+DRBD_DISK_BARRIERS = "disk-barriers"
+DRBD_META_BARRIERS = "meta-barriers"
 LV_STRIPES = "stripes"
 DISK_DT_TYPES = {
   DRBD_RESYNC_RATE: VTYPE_INT,
   DRBD_DATA_STRIPES: VTYPE_INT,
   DRBD_META_STRIPES: VTYPE_INT,
+  DRBD_DISK_BARRIERS: VTYPE_STRING,
+  DRBD_META_BARRIERS: VTYPE_BOOL,
   LV_STRIPES: VTYPE_INT,
   }
 
@@ -1683,6 +1709,8 @@ NDC_DEFAULTS = {
 DISK_LD_DEFAULTS = {
   LD_DRBD8: {
     RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
+    BARRIERS: _autoconf.DRBD_BARRIERS,
+    NO_META_FLUSH: _autoconf.DRBD_NO_META_FLUSH,
     },
   LD_LV: {
     STRIPES: _autoconf.LVM_STRIPECOUNT
@@ -1701,6 +1729,8 @@ DISK_DT_DEFAULTS = {
     DRBD_RESYNC_RATE: DISK_LD_DEFAULTS[LD_DRBD8][RESYNC_RATE],
     DRBD_DATA_STRIPES: DISK_LD_DEFAULTS[LD_LV][STRIPES],
     DRBD_META_STRIPES: DISK_LD_DEFAULTS[LD_LV][STRIPES],
+    DRBD_DISK_BARRIERS: DISK_LD_DEFAULTS[LD_DRBD8][BARRIERS],
+    DRBD_META_BARRIERS: DISK_LD_DEFAULTS[LD_DRBD8][NO_META_FLUSH],
     },
   DT_DISKLESS: {
     },