/** * Pack a name (path component) into a request * * \param[in] req request * \param[in] field request field (usually RMF_NAME) * \param[in] name path component * \param[in] name_len length of path component * * \a field must be present in \a req and of size \a name_len + 1. * * \a name must be '\0' terminated of length \a name_len and represent * a single path component (not contain '/'). */ static void mdc_pack_name(struct ptlrpc_request *req, const struct req_msg_field *field, const char *name, size_t name_len) { char *buf; size_t buf_size; size_t cpy_len; buf = req_capsule_client_get(&req->rq_pill, field); buf_size = req_capsule_get_size(&req->rq_pill, field, RCL_CLIENT); LASSERT(name != NULL && name_len != 0 && buf != NULL && buf_size == name_len + 1); cpy_len = strlcpy(buf, name, buf_size); LASSERT(cpy_len == name_len && lu_name_is_valid_2(buf, cpy_len)); }
/** * Pack a name (path component) into a request * * \param[in] req request * \param[in] field request field (usually RMF_NAME) * \param[in] name path component * \param[in] name_len length of path component * * \a field must be present in \a req and of size \a name_len + 1. * * \a name must be '\0' terminated of length \a name_len and represent * a single path component (not contain '/'). */ static void mdc_pack_name(struct ptlrpc_request *req, const struct req_msg_field *field, const char *name, size_t name_len) { char *buf; size_t buf_size; size_t cpy_len; buf = req_capsule_client_get(&req->rq_pill, field); buf_size = req_capsule_get_size(&req->rq_pill, field, RCL_CLIENT); LASSERT(name != NULL && name_len != 0 && buf != NULL && buf_size == name_len + 1); cpy_len = strlcpy(buf, name, buf_size); LASSERT(lu_name_is_valid_2(buf, cpy_len)); if (cpy_len != name_len) CDEBUG(D_DENTRY, "%s: %s len %zd != %zd, concurrent rename?\n", req->rq_export->exp_obd->obd_name, buf, name_len, cpy_len); }