diff options
Diffstat (limited to 'daemon/gluster-blockd.c')
-rw-r--r-- | daemon/gluster-blockd.c | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/daemon/gluster-blockd.c b/daemon/gluster-blockd.c index c96e4bd..23089a6 100644 --- a/daemon/gluster-blockd.c +++ b/daemon/gluster-blockd.c @@ -8,7 +8,7 @@ cases as published by the Free Software Foundation. */ - +# define _GNU_SOURCE # include <fcntl.h> # include <dirent.h> # include <sys/stat.h> @@ -21,6 +21,10 @@ # include "block.h" # include "block_svc.h" +# define GB_TGCLI_GLOBALS "set " \ + "global auto_add_default_portal=false " \ + "auto_enable_tpgt=false " \ + "logfile=%s" extern size_t glfsLruCount; @@ -256,6 +260,47 @@ glusterBlockDParseArgs(int count, char **options) return 0; } +static int +blockNodeSanityCheck(void) +{ + int ret; + char *global_opts; + + + /* Check if tcmu-runner is running */ + ret = gbRunner("ps aux ww | grep -w '[t]cmu-runner' > /dev/null"); + if (ret) { + LOG("mgmt", GB_LOG_ERROR, "%s", "tcmu-runner not running"); + return ESRCH; + } + + /* Check targetcli has user:glfs handler listed */ + ret = gbRunner("targetcli /backstores/user:glfs ls > /dev/null"); + if (ret) { + LOG("mgmt", GB_LOG_ERROR, "%s", + "tcmu-runner running, but targetcli doesn't list user:glfs handler"); + return ENODEV; + } + + if (ret == EKEYEXPIRED) { + LOG("mgmt", GB_LOG_ERROR, "%s", "targetcli not found"); + return EKEYEXPIRED; + } + + if (GB_ASPRINTF(&global_opts, GB_TGCLI_GLOBALS, gbConf.configShellLogFile) == -1) { + return ENOMEM; + } + /* Set targetcli globals */ + ret = gbRunner(global_opts); + GB_FREE(global_opts); + if (ret) { + LOG("mgmt", GB_LOG_ERROR, "%s", + "targetcli set global attr failed"); + return -1; + } + + return 0; +} int main (int argc, char **argv) @@ -293,6 +338,11 @@ main (int argc, char **argv) exit(errnosv); } + errnosv = blockNodeSanityCheck(); + if (errnosv) { + exit(errnosv); + } + initCache(); /* set signal */ |