Avoid trying to register arrays with dmeventd when they don't support it. Currently an attempt to register or deregister ddf fails. So ret = deactivate_set(lc, rs, DM_REGISTER) && deactivate_set(lc, rs, DM_ACTIVATE); will not deactivate... This patch is based on an upstream patch which itself is rathe broken. If there is no metadata_handler, don't try to register or deregister, just succeed. Signed-off-by: NeilBrown References: bnc#712671 --- lib/activate/activate.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) --- 1.0.0.rc16.orig/lib/activate/activate.c +++ 1.0.0.rc16/lib/activate/activate.c @@ -968,8 +968,11 @@ activate_subset(struct lib_context *lc, if (T_GROUP(rs)) return 1; - if (what == DM_REGISTER) + if (what == DM_REGISTER) { + if (!get_format(rs)->metadata_handler) + return 1; return register_devices(lc, rs); + } /* Call type handler */ if ((ret = (handler(rs))->f(lc, &table, rs))) { @@ -1054,8 +1057,11 @@ deactivate_superset(struct lib_context * { int ret = 1, status; - if (what == DM_REGISTER) + if (what == DM_REGISTER) { + if (!get_format(rs)->metadata_handler) + return 1; return unregister_devices(lc, rs); + } status = dm_status(lc, rs); if (OPT_TEST(lc))