Exemple #1
0
/**
 * 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));
}
Exemple #2
0
/**
 * 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);
}