diff options
Diffstat (limited to 'xlators/protocol')
| -rw-r--r-- | xlators/protocol/client/src/client-messages.h | 10 | ||||
| -rw-r--r-- | xlators/protocol/client/src/client-rpc-fops.c | 9 | ||||
| -rw-r--r-- | xlators/protocol/server/src/server-rpc-fops.c | 7 | 
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 923917643bf..ea7727e8d1b 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 2e2851685fa..19b7cf6b0e9 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 25ffc0d9e73..954374b6011 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;          }  | 
