From 52d9b8bcd5b0aee750a22d53b46c804d608d8bba Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Tue, 17 Apr 2018 23:05:54 +0530 Subject: protocol/server: don't assume there would be a volfile id Earlier glusterfs never had an assumption someone would start it with right arguments, and brick processes would be spawned by a management layer. It just assume the role based on the volfile. Other than volfile, no other arguments should be technically mandatory for working of glusterfs. With this patch, that assumption holds true. Updates: github issue # 352 A note on why this particular issue for this basic sanity? As per the design of thin-arbiter/tie-breaker, it can be started independently on any machine, without need of glusterd. So, similar to 'glusterd', we should be able to spawn a process with any translator without options/volume id etc. fixes: bz#1569399 Change-Id: I5c0650fe0bfde35ad94ccba60e63f6cdcd1ae5ff Signed-off-by: Amar Tumballi --- glusterfsd/src/glusterfsd-mgmt.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'glusterfsd') diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index e30d9287575..5666a532696 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -861,6 +861,13 @@ glusterfs_handle_attach (rpcsvc_request_t *req) this = THIS; GF_ASSERT (this); + ctx = this->ctx; + if (!ctx->cmd_args.volfile_id) { + gf_log (THIS->name, GF_LOG_ERROR, + "No volfile-id provided, erroring out"); + return -1; + } + ret = xdr_to_generic (req->msg[0], &xlator_req, (xdrproc_t)xdr_gd1_mgmt_brick_op_req); @@ -870,7 +877,6 @@ glusterfs_handle_attach (rpcsvc_request_t *req) return -1; } ret = 0; - ctx = this->ctx; LOCK (&ctx->volfile_lock); { @@ -2089,6 +2095,11 @@ glusterfs_volfile_fetch_one (glusterfs_ctx_t *ctx, char *volfile_id) cmd_args = &ctx->cmd_args; if (!volfile_id) { volfile_id = ctx->cmd_args.volfile_id; + if (!volfile_id) { + gf_log (THIS->name, GF_LOG_ERROR, + "No volfile-id provided, erroring out"); + return -1; + } } frame = create_frame (THIS, ctx->pool); -- cgit