summaryrefslogtreecommitdiffstats
path: root/xlators/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/protocol')
-rw-r--r--xlators/protocol/client/src/client-messages.h10
-rw-r--r--xlators/protocol/client/src/client-rpc-fops.c9
-rw-r--r--xlators/protocol/server/src/server-rpc-fops.c7
3 files changed, 23 insertions, 3 deletions
diff --git a/xlators/protocol/client/src/client-messages.h b/xlators/protocol/client/src/client-messages.h
index 9239176..ea7727e 100644
--- a/xlators/protocol/client/src/client-messages.h
+++ b/xlators/protocol/client/src/client-messages.h
@@ -45,7 +45,7 @@
*/
#define GLFS_PC_BASE GLFS_MSGID_COMP_PC
-#define GLFS_PC_NUM_MESSAGES 63
+#define GLFS_PC_NUM_MESSAGES 65
#define GLFS_PC_MSGID_END (GLFS_PC_BASE + GLFS_NUM_MESSAGES + 1)
/* Messages with message IDs */
#define glfs_msg_start_x GLFS_PC_BASE, "Invalid: Start of messages"
@@ -618,6 +618,14 @@
*
*/
+/*!
+ * @messageid
+ * @diagnosis
+ * @recommendedaction
+ *
+ */
+#define PC_MSG_GFID_NULL (GLFS_PC_BASE + 65)
+
/*------------*/
#define glfs_msg_end_x GLFS_MSGID_END, "Invalid: End of messages"
diff --git a/xlators/protocol/client/src/client-rpc-fops.c b/xlators/protocol/client/src/client-rpc-fops.c
index 2e28516..19b7cf6 100644
--- a/xlators/protocol/client/src/client-rpc-fops.c
+++ b/xlators/protocol/client/src/client-rpc-fops.c
@@ -4065,6 +4065,15 @@ client3_3_mkdir (call_frame_t *frame, xlator_t *this,
args = data;
+ if (!args->xdata || !dict_get (args->xdata, "gfid-req")) {
+ op_errno = EPERM;
+ gf_msg_callingfn (this->name, GF_LOG_WARNING, op_errno,
+ PC_MSG_GFID_NULL, "mkdir: %s is received "
+ "without gfid-req %p", args->loc->path,
+ args->xdata);
+ goto unwind;
+ }
+
local = mem_get0 (this->local_pool);
if (!local) {
op_errno = ENOMEM;
diff --git a/xlators/protocol/server/src/server-rpc-fops.c b/xlators/protocol/server/src/server-rpc-fops.c
index 25ffc0d..954374b 100644
--- a/xlators/protocol/server/src/server-rpc-fops.c
+++ b/xlators/protocol/server/src/server-rpc-fops.c
@@ -496,20 +496,23 @@ server_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
server_state_t *state = NULL;
inode_t *link_inode = NULL;
rpcsvc_request_t *req = NULL;
+ client_t *client = NULL;
GF_PROTOCOL_DICT_SERIALIZE (this, xdata, &rsp.xdata.xdata_val,
rsp.xdata.xdata_len, op_errno, out);
state = CALL_STATE (frame);
+ client = frame->root->client;
if (op_ret < 0) {
gf_msg (this->name, fop_log_level (GF_FOP_MKDIR, op_errno),
op_errno, PS_MSG_DIR_INFO,
- "%"PRId64": MKDIR %s (%s/%s) ==> (%s)",
+ "%"PRId64": MKDIR %s (%s/%s) client: %s",
frame->root->unique,
(state->loc.path) ? state->loc.path : "",
uuid_utoa (state->resolve.pargfid),
- state->resolve.bname, strerror (op_errno));
+ state->resolve.bname,
+ (!client || !client->client_uid) ? "-":client->client_uid);
goto out;
}