--- tools/lvcreate.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) Index: LVM2.2.02.152/tools/lvcreate.c =================================================================== --- LVM2.2.02.152.orig/tools/lvcreate.c +++ LVM2.2.02.152/tools/lvcreate.c @@ -639,6 +639,28 @@ static int _read_activation_params(struc return 1; } +static int clvmd_daemon_is_running(void) +{ + int fd; + struct flock lock; + + if((fd = open("/var/run/cmirrord.pid", O_RDONLY)) < 0) + return 0; + + lock.l_type = F_WRLCK; + lock.l_start = 0; + lock.l_whence = SEEK_SET; + lock.l_len = 0; + if (fcntl(fd, F_GETLK, &lock) < 0) { + /* errors with fcntl */ + close(fd); + return 0; + } + + close(fd); + return (lock.l_type == F_UNLCK) ? 0 : 1; +} + static int _lvcreate_params(struct cmd_context *cmd, int argc, char **argv, struct lvcreate_params *lp, @@ -689,6 +711,8 @@ static int _lvcreate_params(struct cmd_c mirror_default_cfg = (arg_uint_value(cmd, stripes_ARG, 1) > 1) ? global_raid10_segtype_default_CFG : global_mirror_segtype_default_CFG; segtype_str = find_config_tree_str(cmd, mirror_default_cfg, NULL); + if(clvmd_daemon_is_running()) + segtype_str = "mirror"; } else segtype_str = SEG_TYPE_NAME_STRIPED;