X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre_req_layout.h;h=c1c3c90efe699077230b2557972a81a055fef448;hp=88f3b29f31423e269ca7c836f768927b35e8c85e;hb=929ec628e6fef5609e55d519a1eb9e2cbbf1f1e8;hpb=31cdf88e8c9de9ec198f6274cdccdc031af20fc1 diff --git a/lustre/include/lustre_req_layout.h b/lustre/include/lustre_req_layout.h index 88f3b29..c1c3c90 100644 --- a/lustre/include/lustre_req_layout.h +++ b/lustre/include/lustre_req_layout.h @@ -1,34 +1,53 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: +/* + * GPL HEADER START + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf * - * lustre/include/linux/lustre_req_layout.h - * Lustre Metadata Target (mdt) request handler + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. * - * Copyright (c) 2006 Cluster File Systems, Inc. - * Author: Nikita Danilov + * GPL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * This file is part of the Lustre file system, http://www.lustre.org - * Lustre is a trademark of Cluster File Systems, Inc. + * Copyright (c) 2011, Whamcloud, Inc. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. * - * You may have signed or agreed to another license before downloading - * this software. If so, you are bound by the terms and conditions - * of that agreement, and the following does not apply to you. See the - * LICENSE file included with this distribution for more information. + * lustre/include/lustre_req_layout.h * - * If you did not agree to a different license, then this copy of Lustre - * is open source software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. + * Lustre Metadata Target (mdt) request handler * - * In either case, Lustre is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * license text for more details. + * Author: Nikita Danilov */ #ifndef _LUSTRE_REQ_LAYOUT_H__ #define _LUSTRE_REQ_LAYOUT_H__ +/** \defgroup req_layout req_layout + * + * @{ + */ + struct req_msg_field; struct req_format; struct req_capsule; @@ -47,7 +66,6 @@ enum req_location { struct req_capsule { struct ptlrpc_request *rc_req; const struct req_format *rc_fmt; - __u32 rc_swabbed; enum req_location rc_loc; __u32 rc_area[RCL_NR][REQ_MAX_FIELD_NR]; }; @@ -62,6 +80,8 @@ void req_capsule_init(struct req_capsule *pill, struct ptlrpc_request *req, void req_capsule_fini(struct req_capsule *pill); void req_capsule_set(struct req_capsule *pill, const struct req_format *fmt); +void req_capsule_client_dump(struct req_capsule *pill); +void req_capsule_server_dump(struct req_capsule *pill); void req_capsule_init_area(struct req_capsule *pill); int req_capsule_filled_sizes(struct req_capsule *pill, enum req_location loc); int req_capsule_server_pack(struct req_capsule *pill); @@ -69,8 +89,8 @@ int req_capsule_server_pack(struct req_capsule *pill); void *req_capsule_client_get(struct req_capsule *pill, const struct req_msg_field *field); void *req_capsule_client_swab_get(struct req_capsule *pill, - const struct req_msg_field *field, - void (*swabber)(void*)); + const struct req_msg_field *field, + void *swabber); void *req_capsule_client_sized_get(struct req_capsule *pill, const struct req_msg_field *field, int len); @@ -82,6 +102,9 @@ void *req_capsule_server_sized_get(struct req_capsule *pill, void *req_capsule_server_swab_get(struct req_capsule *pill, const struct req_msg_field *field, void *swabber); +void *req_capsule_server_sized_swab_get(struct req_capsule *pill, + const struct req_msg_field *field, + int len, void *swabber); const void *req_capsule_other_get(struct req_capsule *pill, const struct req_msg_field *field); @@ -106,150 +129,176 @@ void req_capsule_shrink(struct req_capsule *pill, const struct req_msg_field *field, unsigned int newlen, enum req_location loc); - +int req_capsule_server_grow(struct req_capsule *pill, + const struct req_msg_field *field, + unsigned int newlen); int req_layout_init(void); void req_layout_fini(void); /* __REQ_LAYOUT_USER__ */ #endif -extern const struct req_format RQF_OBD_PING; -extern const struct req_format RQF_SEC_CTX; +extern struct req_format RQF_OBD_PING; +extern struct req_format RQF_OBD_SET_INFO; +extern struct req_format RQF_SEC_CTX; +extern struct req_format RQF_OBD_IDX_READ; /* MGS req_format */ -extern const struct req_format RQF_MGS_TARGET_REG; -extern const struct req_format RQF_MGS_SET_INFO; +extern struct req_format RQF_MGS_TARGET_REG; +extern struct req_format RQF_MGS_SET_INFO; +extern struct req_format RQF_MGS_CONFIG_READ; /* fid/fld req_format */ -extern const struct req_format RQF_SEQ_QUERY; -extern const struct req_format RQF_FLD_QUERY; +extern struct req_format RQF_SEQ_QUERY; +extern struct req_format RQF_FLD_QUERY; /* MDS req_format */ -extern const struct req_format RQF_MDS_CONNECT; -extern const struct req_format RQF_MDS_DISCONNECT; -extern const struct req_format RQF_MDS_STATFS; -extern const struct req_format RQF_MDS_GETSTATUS; -extern const struct req_format RQF_MDS_SYNC; -extern const struct req_format RQF_MDS_GETXATTR; -extern const struct req_format RQF_MDS_GETATTR; +extern struct req_format RQF_MDS_CONNECT; +extern struct req_format RQF_MDS_DISCONNECT; +extern struct req_format RQF_MDS_STATFS; +extern struct req_format RQF_MDS_GETSTATUS; +extern struct req_format RQF_MDS_SYNC; +extern struct req_format RQF_MDS_GETXATTR; +extern struct req_format RQF_MDS_GETATTR; /* * This is format of direct (non-intent) MDS_GETATTR_NAME request. */ -extern const struct req_format RQF_MDS_GETATTR_NAME; -extern const struct req_format RQF_MDS_CLOSE; -extern const struct req_format RQF_MDS_PIN; -extern const struct req_format RQF_MDS_UNPIN; -extern const struct req_format RQF_MDS_CONNECT; -extern const struct req_format RQF_MDS_DISCONNECT; -extern const struct req_format RQF_MDS_SET_INFO; -extern const struct req_format RQF_MDS_READPAGE; -extern const struct req_format RQF_MDS_WRITEPAGE; -extern const struct req_format RQF_MDS_IS_SUBDIR; -extern const struct req_format RQF_MDS_DONE_WRITING; -extern const struct req_format RQF_MDS_REINT; -extern const struct req_format RQF_MDS_REINT_CREATE; -extern const struct req_format RQF_MDS_REINT_CREATE_RMT_ACL; -extern const struct req_format RQF_MDS_REINT_CREATE_SLAVE; -extern const struct req_format RQF_MDS_REINT_CREATE_SYM; -extern const struct req_format RQF_MDS_REINT_OPEN; -extern const struct req_format RQF_MDS_REINT_UNLINK; -extern const struct req_format RQF_MDS_REINT_LINK; -extern const struct req_format RQF_MDS_REINT_RENAME; -extern const struct req_format RQF_MDS_REINT_SETATTR; -extern const struct req_format RQF_MDS_REINT_SETXATTR; -extern const struct req_format RQF_MDS_QUOTACHECK; -extern const struct req_format RQF_MDS_QUOTACTL; -extern const struct req_format RQF_MDS_QUOTA_DQACQ; -extern const struct req_format RQF_QC_CALLBACK; +extern struct req_format RQF_MDS_GETATTR_NAME; +extern struct req_format RQF_MDS_CLOSE; +extern struct req_format RQF_MDS_PIN; +extern struct req_format RQF_MDS_UNPIN; +extern struct req_format RQF_MDS_CONNECT; +extern struct req_format RQF_MDS_DISCONNECT; +extern struct req_format RQF_MDS_GET_INFO; +extern struct req_format RQF_MDS_READPAGE; +extern struct req_format RQF_MDS_WRITEPAGE; +extern struct req_format RQF_MDS_IS_SUBDIR; +extern struct req_format RQF_MDS_DONE_WRITING; +extern struct req_format RQF_MDS_REINT; +extern struct req_format RQF_MDS_REINT_CREATE; +extern struct req_format RQF_MDS_REINT_CREATE_RMT_ACL; +extern struct req_format RQF_MDS_REINT_CREATE_SLAVE; +extern struct req_format RQF_MDS_REINT_CREATE_SYM; +extern struct req_format RQF_MDS_REINT_OPEN; +extern struct req_format RQF_MDS_REINT_UNLINK; +extern struct req_format RQF_MDS_REINT_LINK; +extern struct req_format RQF_MDS_REINT_RENAME; +extern struct req_format RQF_MDS_REINT_SETATTR; +extern struct req_format RQF_MDS_REINT_SETXATTR; +extern struct req_format RQF_MDS_QUOTACHECK; +extern struct req_format RQF_MDS_QUOTACTL; +extern struct req_format RQF_QC_CALLBACK; +extern struct req_format RQF_QUOTA_DQACQ; /* OST req_format */ -extern const struct req_format RQF_OST_CONNECT; -extern const struct req_format RQF_OST_DISCONNECT; -extern const struct req_format RQF_OST_QUOTACHECK; -extern const struct req_format RQF_OST_QUOTACTL; -extern const struct req_format RQF_OST_GETATTR; -extern const struct req_format RQF_OST_SETATTR; -extern const struct req_format RQF_OST_CREATE; -extern const struct req_format RQF_OST_PUNCH; -extern const struct req_format RQF_OST_SYNC; -extern const struct req_format RQF_OST_DESTROY; -extern const struct req_format RQF_OST_BRW; -extern const struct req_format RQF_OST_STATFS; -extern const struct req_format RQF_OST_SET_INFO; -extern const struct req_format RQF_OST_GET_INFO_GENERIC; -extern const struct req_format RQF_OST_GET_INFO_LAST_ID; +extern struct req_format RQF_OST_CONNECT; +extern struct req_format RQF_OST_DISCONNECT; +extern struct req_format RQF_OST_QUOTACHECK; +extern struct req_format RQF_OST_QUOTACTL; +extern struct req_format RQF_OST_GETATTR; +extern struct req_format RQF_OST_SETATTR; +extern struct req_format RQF_OST_CREATE; +extern struct req_format RQF_OST_PUNCH; +extern struct req_format RQF_OST_SYNC; +extern struct req_format RQF_OST_DESTROY; +extern struct req_format RQF_OST_BRW_READ; +extern struct req_format RQF_OST_BRW_WRITE; +extern struct req_format RQF_OST_STATFS; +extern struct req_format RQF_OST_SET_GRANT_INFO; +extern struct req_format RQF_OST_GET_INFO_GENERIC; +extern struct req_format RQF_OST_GET_INFO_LAST_ID; +extern struct req_format RQF_OST_GET_INFO_FIEMAP; /* LDLM req_format */ -extern const struct req_format RQF_LDLM_ENQUEUE; -extern const struct req_format RQF_LDLM_ENQUEUE_LVB; -extern const struct req_format RQF_LDLM_CONVERT; -extern const struct req_format RQF_LDLM_INTENT; -extern const struct req_format RQF_LDLM_INTENT_GETATTR; -extern const struct req_format RQF_LDLM_INTENT_OPEN; -extern const struct req_format RQF_LDLM_INTENT_CREATE; -extern const struct req_format RQF_LDLM_INTENT_UNLINK; -extern const struct req_format RQF_LDLM_CANCEL; -extern const struct req_format RQF_LDLM_CALLBACK; -extern const struct req_format RQF_LDLM_CP_CALLBACK; -extern const struct req_format RQF_LDLM_BL_CALLBACK; -extern const struct req_format RQF_LDLM_GL_CALLBACK; +extern struct req_format RQF_LDLM_ENQUEUE; +extern struct req_format RQF_LDLM_ENQUEUE_LVB; +extern struct req_format RQF_LDLM_CONVERT; +extern struct req_format RQF_LDLM_INTENT; +extern struct req_format RQF_LDLM_INTENT_BASIC; +extern struct req_format RQF_LDLM_INTENT_GETATTR; +extern struct req_format RQF_LDLM_INTENT_OPEN; +extern struct req_format RQF_LDLM_INTENT_CREATE; +extern struct req_format RQF_LDLM_INTENT_UNLINK; +extern struct req_format RQF_LDLM_INTENT_QUOTA; +extern struct req_format RQF_LDLM_CANCEL; +extern struct req_format RQF_LDLM_CALLBACK; +extern struct req_format RQF_LDLM_CP_CALLBACK; +extern struct req_format RQF_LDLM_BL_CALLBACK; +extern struct req_format RQF_LDLM_GL_CALLBACK; +extern struct req_format RQF_LDLM_GL_DESC_CALLBACK; /* LOG req_format */ -extern const struct req_format RQF_LOG_CANCEL; -extern const struct req_format RQF_LLOG_CATINFO; -extern const struct req_format RQF_LLOG_ORIGIN_HANDLE_CREATE; -extern const struct req_format RQF_LLOG_ORIGIN_HANDLE_DESTROY; -extern const struct req_format RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK; -extern const struct req_format RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK; -extern const struct req_format RQF_LLOG_ORIGIN_HANDLE_READ_HEADER; -extern const struct req_format RQF_LLOG_ORIGIN_CONNECT; - -extern const struct req_msg_field RMF_GENERIC_DATA; -extern const struct req_msg_field RMF_PTLRPC_BODY; -extern const struct req_msg_field RMF_MDT_BODY; -extern const struct req_msg_field RMF_MDT_EPOCH; -extern const struct req_msg_field RMF_OBD_STATFS; -extern const struct req_msg_field RMF_NAME; -extern const struct req_msg_field RMF_SYMTGT; -extern const struct req_msg_field RMF_TGTUUID; -extern const struct req_msg_field RMF_CLUUID; -extern const struct req_msg_field RMF_SETINFO_VAL; -extern const struct req_msg_field RMF_SETINFO_KEY; +extern struct req_format RQF_LOG_CANCEL; +extern struct req_format RQF_LLOG_ORIGIN_HANDLE_CREATE; +extern struct req_format RQF_LLOG_ORIGIN_HANDLE_DESTROY; +extern struct req_format RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK; +extern struct req_format RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK; +extern struct req_format RQF_LLOG_ORIGIN_HANDLE_READ_HEADER; +extern struct req_format RQF_LLOG_ORIGIN_CONNECT; + +extern struct req_msg_field RMF_GENERIC_DATA; +extern struct req_msg_field RMF_PTLRPC_BODY; +extern struct req_msg_field RMF_MDT_BODY; +extern struct req_msg_field RMF_MDT_EPOCH; +extern struct req_msg_field RMF_OBD_STATFS; +extern struct req_msg_field RMF_NAME; +extern struct req_msg_field RMF_SYMTGT; +extern struct req_msg_field RMF_TGTUUID; +extern struct req_msg_field RMF_CLUUID; +extern struct req_msg_field RMF_SETINFO_VAL; +extern struct req_msg_field RMF_SETINFO_KEY; +extern struct req_msg_field RMF_GETINFO_VAL; +extern struct req_msg_field RMF_GETINFO_VALLEN; +extern struct req_msg_field RMF_GETINFO_KEY; +extern struct req_msg_field RMF_IDX_INFO; + /* * connection handle received in MDS_CONNECT request. */ -extern const struct req_msg_field RMF_CONN; -extern const struct req_msg_field RMF_CONNECT_DATA; -extern const struct req_msg_field RMF_DLM_REQ; -extern const struct req_msg_field RMF_DLM_REP; -extern const struct req_msg_field RMF_DLM_LVB; -extern const struct req_msg_field RMF_LDLM_INTENT; -extern const struct req_msg_field RMF_MDT_MD; -extern const struct req_msg_field RMF_REC_REINT; -extern const struct req_msg_field RMF_REC_JOINFILE; -extern const struct req_msg_field RMF_EADATA; -extern const struct req_msg_field RMF_ACL; -extern const struct req_msg_field RMF_LOGCOOKIES; -extern const struct req_msg_field RMF_CAPA1; -extern const struct req_msg_field RMF_CAPA2; -extern const struct req_msg_field RMF_OBD_QUOTACHECK; -extern const struct req_msg_field RMF_OBD_QUOTACTL; -extern const struct req_msg_field RMF_QUNIT_DATA; -extern const struct req_msg_field RMF_STRING; +extern struct req_msg_field RMF_CONN; +extern struct req_msg_field RMF_CONNECT_DATA; +extern struct req_msg_field RMF_DLM_REQ; +extern struct req_msg_field RMF_DLM_REP; +extern struct req_msg_field RMF_DLM_LVB; +extern struct req_msg_field RMF_DLM_GL_DESC; +extern struct req_msg_field RMF_LDLM_INTENT; +extern struct req_msg_field RMF_MDT_MD; +extern struct req_msg_field RMF_REC_REINT; +extern struct req_msg_field RMF_EADATA; +extern struct req_msg_field RMF_ACL; +extern struct req_msg_field RMF_LOGCOOKIES; +extern struct req_msg_field RMF_CAPA1; +extern struct req_msg_field RMF_CAPA2; +extern struct req_msg_field RMF_OBD_QUOTACHECK; +extern struct req_msg_field RMF_OBD_QUOTACTL; +extern struct req_msg_field RMF_QUOTA_BODY; +extern struct req_msg_field RMF_STRING; /* seq-mgr fields */ -extern const struct req_msg_field RMF_SEQ_OPC; -extern const struct req_msg_field RMF_SEQ_RANGE; +extern struct req_msg_field RMF_SEQ_OPC; +extern struct req_msg_field RMF_SEQ_RANGE; /* FLD fields */ -extern const struct req_msg_field RMF_FLD_OPC; -extern const struct req_msg_field RMF_FLD_MDFLD; +extern struct req_msg_field RMF_FLD_OPC; +extern struct req_msg_field RMF_FLD_MDFLD; + +extern struct req_msg_field RMF_LLOGD_BODY; +extern struct req_msg_field RMF_LLOG_LOG_HDR; +extern struct req_msg_field RMF_LLOGD_CONN_BODY; + +extern struct req_msg_field RMF_MGS_TARGET_INFO; +extern struct req_msg_field RMF_MGS_SEND_PARAM; + +extern struct req_msg_field RMF_OST_BODY; +extern struct req_msg_field RMF_OBD_IOOBJ; +extern struct req_msg_field RMF_OBD_ID; +extern struct req_msg_field RMF_NIOBUF_REMOTE; +extern struct req_msg_field RMF_RCS; +extern struct req_msg_field RMF_FIEMAP_KEY; +extern struct req_msg_field RMF_FIEMAP_VAL; -extern const struct req_msg_field RMF_LLOGD_BODY; -extern const struct req_msg_field RMF_LLOG_LOG_HDR; -extern const struct req_msg_field RMF_LLOGD_CONN_BODY; +/* MGS config read message format */ +extern struct req_msg_field RMF_MGS_CONFIG_BODY; +extern struct req_msg_field RMF_MGS_CONFIG_RES; -extern const struct req_msg_field RMF_MGS_TARGET_INFO; -extern const struct req_msg_field RMF_MGS_SEND_PARAM; +/* generic uint32 */ +extern struct req_msg_field RMF_U32; -extern const struct req_msg_field RMF_OST_BODY; -extern const struct req_msg_field RMF_OBD_IOOBJ; -extern const struct req_msg_field RMF_OBD_ID; -extern const struct req_msg_field RMF_NIOBUF_REMOTE; +/** @} req_layout */ #endif /* _LUSTRE_REQ_LAYOUT_H__ */