__u32 lm_buflens[0];
};
+/* flags for lm_flags */
+#define MSGHDR_AT_SUPPORT 0x1
+
#define lustre_msg lustre_msg_v2
/* we depend on this structure to be 8-byte aligned */
/* this type is only endian-adjusted in lustre_unpack_msg() */
__u32 lm_magic;
__u32 lm_repsize;
__u32 lm_cksum;
- __u32 lm_padding_1;
+ __u32 lm_flags;
__u32 lm_padding_2;
__u32 lm_padding_3;
__u32 lm_buflens[0];
#define MSG_LAST_REPLAY 1
#define MSG_RESENT 2
#define MSG_REPLAY 4
-#define MSG_AT_SUPPORT 8
+/* #define MSG_AT_SUPPORT 8 avoid until 1.10+ */
/*
* Flags for all connect opcodes (MDS_CONNECT, OST_CONNECT)
__u64 imp_connect_flags_orig;
__u32 imp_msg_magic;
- __u32 imp_msg_flags; /* adjusted based on server capability */
+ __u32 imp_msghdr_flags; /* adjusted based on server capability */
struct ptlrpc_request_pool *imp_rq_pool; /* emergency request pool */
void *swabber);
void *lustre_swab_repbuf(struct ptlrpc_request *req, int n, int minlen,
void *swabber);
+__u32 lustre_msghdr_get_flags(struct lustre_msg *msg);
+void lustre_msghdr_set_flags(struct lustre_msg *msg, __u32 flags);
__u32 lustre_msg_get_flags(struct lustre_msg *msg);
void lustre_msg_add_flags(struct lustre_msg *msg, int flags);
void lustre_msg_set_flags(struct lustre_msg *msg, int flags);
revimp->imp_msg_magic = LUSTRE_MSG_MAGIC_V2;
lustre_msg_add_op_flags(req->rq_repmsg, MSG_CONNECT_NEXT_VER);
if (export->exp_connect_flags & OBD_CONNECT_AT)
- revimp->imp_msg_flags |= MSG_AT_SUPPORT;
+ revimp->imp_msghdr_flags |= MSGHDR_AT_SUPPORT;
}
class_import_put(revimp);
atomic_set(&request->rq_refcount, 1);
lustre_msg_set_opc(request->rq_reqmsg, opcode);
- lustre_msg_set_flags(request->rq_reqmsg, imp->imp_msg_flags);
+ lustre_msghdr_set_flags(request->rq_reqmsg, imp->imp_msghdr_flags);
RETURN(request);
}
}
if ((ev->offset == 0) &&
- ((lustre_msg_get_flags(req->rq_reqmsg) & MSG_AT_SUPPORT) != 0)) {
+ (lustre_msghdr_get_flags(req->rq_reqmsg) & MSGHDR_AT_SUPPORT)) {
/* Early reply */
DEBUG_REQ(D_ADAPTTO, req,
"Early reply received: mlen=%u offset=%d replen=%d "
(in ptlrpc_send_reply).
Can only be set when we know AT is supported at
both ends */
- imp->imp_msg_flags |= MSG_AT_SUPPORT;
+ imp->imp_msghdr_flags |= MSGHDR_AT_SUPPORT;
else
- imp->imp_msg_flags &= ~MSG_AT_SUPPORT;
+ imp->imp_msghdr_flags &= ~MSGHDR_AT_SUPPORT;
LASSERT((cli->cl_max_pages_per_rpc <= PTLRPC_MAX_BRW_PAGES) &&
(cli->cl_max_pages_per_rpc > 0));
if (req->rq_export && req->rq_export->exp_obd)
target_pack_pool_reply(req);
- if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_AT_SUPPORT) {
+ if (lustre_msghdr_get_flags(req->rq_reqmsg) & MSGHDR_AT_SUPPORT) {
/* early replies go to offset 0, regular replies go after that*/
if (flags & PTLRPC_REPLY_EARLY) {
offset = 0;
__swab32s(&m->lm_secflvr);
__swab32s(&m->lm_repsize);
__swab32s(&m->lm_cksum);
- CLASSERT(offsetof(typeof(*m), lm_padding_1) != 0);
+ __swab32s(&m->lm_flags);
CLASSERT(offsetof(typeof(*m), lm_padding_2) != 0);
CLASSERT(offsetof(typeof(*m), lm_padding_3) != 0);
}
return lustre_swab_buf(req->rq_repmsg, index, min_size, swabber);
}
+__u32 lustre_msghdr_get_flags(struct lustre_msg *msg)
+{
+ switch (msg->lm_magic) {
+ case LUSTRE_MSG_MAGIC_V1:
+ case LUSTRE_MSG_MAGIC_V1_SWABBED:
+ return 0;
+ case LUSTRE_MSG_MAGIC_V2:
+ case LUSTRE_MSG_MAGIC_V2_SWABBED:
+ /* already in host endian */
+ return msg->lm_flags;
+ default:
+ LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic);
+ return 0;
+ }
+}
+
+void lustre_msghdr_set_flags(struct lustre_msg *msg, __u32 flags)
+{
+ switch (msg->lm_magic) {
+ case LUSTRE_MSG_MAGIC_V1:
+ return;
+ case LUSTRE_MSG_MAGIC_V2:
+ msg->lm_flags = flags;
+ return;
+ default:
+ LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic);
+ }
+}
+
__u32 lustre_msg_get_flags(struct lustre_msg *msg)
{
switch (msg->lm_magic) {
if (AT_OFF)
return(0);
- if ((lustre_msg_get_flags(req->rq_reqmsg) & MSG_AT_SUPPORT) == 0)
+ if ((lustre_msghdr_get_flags(req->rq_reqmsg) & MSGHDR_AT_SUPPORT) == 0)
return(-ENOSYS);
DEBUG_REQ(D_ADAPTTO, req, "add timed %lds",
RETURN(-ETIMEDOUT);
}
- if ((lustre_msg_get_flags(req->rq_reqmsg) & MSG_AT_SUPPORT) == 0) {
+ if ((lustre_msghdr_get_flags(req->rq_reqmsg) & MSGHDR_AT_SUPPORT) == 0){
CDEBUG(D_INFO, "Wanted to ask client for more time, but no AT "
"support\n");
RETURN(-ENOSYS);
cfs_time_current_sec() - req->rq_arrival_time.tv_sec);
/* Set rpc server deadline and add it to the timed list */
- deadline = (lustre_msg_get_flags(req->rq_reqmsg) & MSG_AT_SUPPORT) ?
- /* The max time the client expects us to take */
- lustre_msg_get_timeout(req->rq_reqmsg) : obd_timeout;
+ deadline = (lustre_msghdr_get_flags(req->rq_reqmsg) &
+ MSGHDR_AT_SUPPORT) ?
+ /* The max time the client expects us to take */
+ lustre_msg_get_timeout(req->rq_reqmsg) : obd_timeout;
LASSERT(deadline > 0);
req->rq_deadline = req->rq_arrival_time.tv_sec + deadline;
{
/* Wire protocol assertions generated by 'wirecheck'
* (make -C lustre/utils newwirecheck)
- * running on Linux hideous 2.6.9-prep.qp3.5.34.4qsnet #3 Mon Aug 13 08:38:55 EEST 2007 i686
- * with gcc version 3.4.6 20060404 (Red Hat 3.4.6-3) */
+ * running on Linux vmbuild 2.6.9-build #1 SMP Sat Apr 7 11:21:22 MDT 2007 i686 i686 i386 GNU
+ * with gcc version 3.4.6 20060404 (Red Hat 3.4.6-4) */
/* Constants... */
(long long)LUSTRE_MSG_MAGIC_V2);
LASSERTF(PTLRPC_MSG_VERSION == 0x00000003," found %lld\n",
(long long)PTLRPC_MSG_VERSION);
+ LASSERTF(MSGHDR_AT_SUPPORT == 1, " found %lld\n",
+ (long long)MSGHDR_AT_SUPPORT);
LASSERTF(PTL_RPC_MSG_REQUEST == 4711, " found %lld\n",
(long long)PTL_RPC_MSG_REQUEST);
LASSERTF(PTL_RPC_MSG_ERR == 4712, " found %lld\n",
(long long)MSG_RESENT);
LASSERTF(MSG_REPLAY == 4, " found %lld\n",
(long long)MSG_REPLAY);
- LASSERTF(MSG_AT_SUPPORT == 8, " found %lld\n",
- (long long)MSG_AT_SUPPORT);
LASSERTF(MSG_CONNECT_RECOVERING == 1, " found %lld\n",
(long long)MSG_CONNECT_RECOVERING);
LASSERTF(MSG_CONNECT_RECONNECT == 2, " found %lld\n",
(long long)(int)offsetof(struct lustre_msg_v2, lm_cksum));
LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_cksum) == 4, " found %lld\n",
(long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_cksum));
- LASSERTF((int)offsetof(struct lustre_msg_v2, lm_padding_1) == 20, " found %lld\n",
- (long long)(int)offsetof(struct lustre_msg_v2, lm_padding_1));
- LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_padding_1) == 4, " found %lld\n",
- (long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_padding_1));
+ LASSERTF((int)offsetof(struct lustre_msg_v2, lm_flags) == 20, " found %lld\n",
+ (long long)(int)offsetof(struct lustre_msg_v2, lm_flags));
+ LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_flags) == 4, " found %lld\n",
+ (long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_flags));
LASSERTF((int)offsetof(struct lustre_msg_v2, lm_padding_2) == 24, " found %lld\n",
(long long)(int)offsetof(struct lustre_msg_v2, lm_padding_2));
LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_padding_2) == 4, " found %lld\n",
(long long)(int)offsetof(struct mds_rec_setattr, sa_attr_flags));
LASSERTF((int)sizeof(((struct mds_rec_setattr *)0)->sa_attr_flags) == 4, " found %lld\n",
(long long)(int)sizeof(((struct mds_rec_setattr *)0)->sa_attr_flags));
- CLASSERT(MDS_ATTR_MODE == 1);
- CLASSERT(MDS_ATTR_UID == 2);
- CLASSERT(MDS_ATTR_GID == 4);
- CLASSERT(MDS_ATTR_SIZE == 8);
- CLASSERT(MDS_ATTR_ATIME == 16);
- CLASSERT(MDS_ATTR_MTIME == 32);
- CLASSERT(MDS_ATTR_CTIME == 64);
- CLASSERT(MDS_ATTR_ATIME_SET == 128);
- CLASSERT(MDS_ATTR_MTIME_SET == 256);
- CLASSERT(MDS_ATTR_FORCE == 512);
- CLASSERT(MDS_ATTR_ATTR_FLAG == 1024);
- CLASSERT(MDS_ATTR_KILL_SUID == 2048);
- CLASSERT(MDS_ATTR_KILL_SGID == 4096);
- CLASSERT(MDS_ATTR_CTIME_SET == 8192);
- CLASSERT(MDS_ATTR_FROM_OPEN == 16384);
+ CLASSERT(MDS_ATTR_MODE == 0x1ULL);
+ CLASSERT(MDS_ATTR_UID == 0x2ULL);
+ CLASSERT(MDS_ATTR_GID == 0x4ULL);
+ CLASSERT(MDS_ATTR_SIZE == 0x8ULL);
+ CLASSERT(MDS_ATTR_ATIME == 0x10ULL);
+ CLASSERT(MDS_ATTR_MTIME == 0x20ULL);
+ CLASSERT(MDS_ATTR_CTIME == 0x40ULL);
+ CLASSERT(MDS_ATTR_ATIME_SET == 0x80ULL);
+ CLASSERT(MDS_ATTR_MTIME_SET == 0x100ULL);
+ CLASSERT(MDS_ATTR_FORCE == 0x200ULL);
+ CLASSERT(MDS_ATTR_ATTR_FLAG == 0x400ULL);
+ CLASSERT(MDS_ATTR_KILL_SUID == 0x800ULL);
+ CLASSERT(MDS_ATTR_KILL_SGID == 0x1000ULL);
+ CLASSERT(MDS_ATTR_CTIME_SET == 0x2000ULL);
+ CLASSERT(MDS_ATTR_FROM_OPEN == 0x4000ULL);
/* Checks for struct mds_rec_create */
LASSERTF((int)sizeof(struct mds_rec_create) == 96, " found %lld\n",
LASSERTF((int)sizeof(((struct lustre_disk_data *)0)->ldd_params) == 4096, " found %lld\n",
(long long)(int)sizeof(((struct lustre_disk_data *)0)->ldd_params));
}
+
CHECK_MEMBER(lustre_msg_v2, lm_magic);
CHECK_MEMBER(lustre_msg_v2, lm_repsize);
CHECK_MEMBER(lustre_msg_v2, lm_cksum);
- CHECK_MEMBER(lustre_msg_v2, lm_padding_1);
+ CHECK_MEMBER(lustre_msg_v2, lm_flags);
CHECK_MEMBER(lustre_msg_v2, lm_padding_2);
CHECK_MEMBER(lustre_msg_v2, lm_padding_3);
CHECK_MEMBER(lustre_msg_v2, lm_buflens[0]);
CHECK_DEFINE(LUSTRE_MSG_MAGIC_V1);
CHECK_DEFINE(LUSTRE_MSG_MAGIC_V2);
CHECK_DEFINE(PTLRPC_MSG_VERSION);
+ CHECK_VALUE(MSGHDR_AT_SUPPORT);
CHECK_VALUE(PTL_RPC_MSG_REQUEST);
CHECK_VALUE(PTL_RPC_MSG_ERR);
CHECK_VALUE(MSG_LAST_REPLAY);
CHECK_VALUE(MSG_RESENT);
CHECK_VALUE(MSG_REPLAY);
- CHECK_VALUE(MSG_AT_SUPPORT);
CHECK_VALUE(MSG_CONNECT_RECOVERING);
CHECK_VALUE(MSG_CONNECT_RECONNECT);
{
/* Wire protocol assertions generated by 'wirecheck'
* (make -C lustre/utils newwirecheck)
- * running on Linux hideous 2.6.9-prep.qp3.5.34.4qsnet #3 Mon Aug 13 08:38:55 EEST 2007 i686
- * with gcc version 3.4.6 20060404 (Red Hat 3.4.6-3) */
+ * running on Linux vmbuild 2.6.9-build #1 SMP Sat Apr 7 11:21:22 MDT 2007 i686 i686 i386 GNU
+ * with gcc version 3.4.6 20060404 (Red Hat 3.4.6-4) */
/* Constants... */
(long long)LUSTRE_MSG_MAGIC_V2);
LASSERTF(PTLRPC_MSG_VERSION == 0x00000003," found %lld\n",
(long long)PTLRPC_MSG_VERSION);
+ LASSERTF(MSGHDR_AT_SUPPORT == 1, " found %lld\n",
+ (long long)MSGHDR_AT_SUPPORT);
LASSERTF(PTL_RPC_MSG_REQUEST == 4711, " found %lld\n",
(long long)PTL_RPC_MSG_REQUEST);
LASSERTF(PTL_RPC_MSG_ERR == 4712, " found %lld\n",
(long long)MSG_RESENT);
LASSERTF(MSG_REPLAY == 4, " found %lld\n",
(long long)MSG_REPLAY);
- LASSERTF(MSG_AT_SUPPORT == 8, " found %lld\n",
- (long long)MSG_AT_SUPPORT);
LASSERTF(MSG_CONNECT_RECOVERING == 1, " found %lld\n",
(long long)MSG_CONNECT_RECOVERING);
LASSERTF(MSG_CONNECT_RECONNECT == 2, " found %lld\n",
(long long)(int)offsetof(struct lustre_msg_v2, lm_cksum));
LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_cksum) == 4, " found %lld\n",
(long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_cksum));
- LASSERTF((int)offsetof(struct lustre_msg_v2, lm_padding_1) == 20, " found %lld\n",
- (long long)(int)offsetof(struct lustre_msg_v2, lm_padding_1));
- LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_padding_1) == 4, " found %lld\n",
- (long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_padding_1));
+ LASSERTF((int)offsetof(struct lustre_msg_v2, lm_flags) == 20, " found %lld\n",
+ (long long)(int)offsetof(struct lustre_msg_v2, lm_flags));
+ LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_flags) == 4, " found %lld\n",
+ (long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_flags));
LASSERTF((int)offsetof(struct lustre_msg_v2, lm_padding_2) == 24, " found %lld\n",
(long long)(int)offsetof(struct lustre_msg_v2, lm_padding_2));
LASSERTF((int)sizeof(((struct lustre_msg_v2 *)0)->lm_padding_2) == 4, " found %lld\n",
(long long)(int)offsetof(struct mds_rec_setattr, sa_attr_flags));
LASSERTF((int)sizeof(((struct mds_rec_setattr *)0)->sa_attr_flags) == 4, " found %lld\n",
(long long)(int)sizeof(((struct mds_rec_setattr *)0)->sa_attr_flags));
- CLASSERT(MDS_ATTR_MODE == 1);
- CLASSERT(MDS_ATTR_UID == 2);
- CLASSERT(MDS_ATTR_GID == 4);
- CLASSERT(MDS_ATTR_SIZE == 8);
- CLASSERT(MDS_ATTR_ATIME == 16);
- CLASSERT(MDS_ATTR_MTIME == 32);
- CLASSERT(MDS_ATTR_CTIME == 64);
- CLASSERT(MDS_ATTR_ATIME_SET == 128);
- CLASSERT(MDS_ATTR_MTIME_SET == 256);
- CLASSERT(MDS_ATTR_FORCE == 512);
- CLASSERT(MDS_ATTR_ATTR_FLAG == 1024);
- CLASSERT(MDS_ATTR_KILL_SUID == 2048);
- CLASSERT(MDS_ATTR_KILL_SGID == 4096);
- CLASSERT(MDS_ATTR_CTIME_SET == 8192);
- CLASSERT(MDS_ATTR_FROM_OPEN == 16384);
+ CLASSERT(MDS_ATTR_MODE == 0x1ULL);
+ CLASSERT(MDS_ATTR_UID == 0x2ULL);
+ CLASSERT(MDS_ATTR_GID == 0x4ULL);
+ CLASSERT(MDS_ATTR_SIZE == 0x8ULL);
+ CLASSERT(MDS_ATTR_ATIME == 0x10ULL);
+ CLASSERT(MDS_ATTR_MTIME == 0x20ULL);
+ CLASSERT(MDS_ATTR_CTIME == 0x40ULL);
+ CLASSERT(MDS_ATTR_ATIME_SET == 0x80ULL);
+ CLASSERT(MDS_ATTR_MTIME_SET == 0x100ULL);
+ CLASSERT(MDS_ATTR_FORCE == 0x200ULL);
+ CLASSERT(MDS_ATTR_ATTR_FLAG == 0x400ULL);
+ CLASSERT(MDS_ATTR_KILL_SUID == 0x800ULL);
+ CLASSERT(MDS_ATTR_KILL_SGID == 0x1000ULL);
+ CLASSERT(MDS_ATTR_CTIME_SET == 0x2000ULL);
+ CLASSERT(MDS_ATTR_FROM_OPEN == 0x4000ULL);
/* Checks for struct mds_rec_create */
LASSERTF((int)sizeof(struct mds_rec_create) == 96, " found %lld\n",
#ifdef LIBLUSTRE_POSIX_ACL
/* Checks for type posix_acl_xattr_entry */
- LASSERTF((int)sizeof(posix_acl_xattr_entry) == 8, " found %lld\n",
- (long long)(int)sizeof(posix_acl_xattr_entry));
- LASSERTF((int)offsetof(posix_acl_xattr_entry, e_tag) == 0, " found %lld\n",
- (long long)(int)offsetof(posix_acl_xattr_entry, e_tag));
- LASSERTF((int)sizeof(((posix_acl_xattr_entry *)0)->e_tag) == 2, " found %lld\n",
- (long long)(int)sizeof(((posix_acl_xattr_entry *)0)->e_tag));
- LASSERTF((int)offsetof(posix_acl_xattr_entry, e_perm) == 2, " found %lld\n",
- (long long)(int)offsetof(posix_acl_xattr_entry, e_perm));
- LASSERTF((int)sizeof(((posix_acl_xattr_entry *)0)->e_perm) == 2, " found %lld\n",
- (long long)(int)sizeof(((posix_acl_xattr_entry *)0)->e_perm));
- LASSERTF((int)offsetof(posix_acl_xattr_entry, e_id) == 4, " found %lld\n",
- (long long)(int)offsetof(posix_acl_xattr_entry, e_id));
- LASSERTF((int)sizeof(((posix_acl_xattr_entry *)0)->e_id) == 4, " found %lld\n",
- (long long)(int)sizeof(((posix_acl_xattr_entry *)0)->e_id));
+ LASSERTF((int)sizeof(xattr_acl_entry) == 8, " found %lld\n",
+ (long long)(int)sizeof(xattr_acl_entry));
+ LASSERTF((int)offsetof(xattr_acl_entry, e_tag) == 0, " found %lld\n",
+ (long long)(int)offsetof(xattr_acl_entry, e_tag));
+ LASSERTF((int)sizeof(((xattr_acl_entry *)0)->e_tag) == 2, " found %lld\n",
+ (long long)(int)sizeof(((xattr_acl_entry *)0)->e_tag));
+ LASSERTF((int)offsetof(xattr_acl_entry, e_perm) == 2, " found %lld\n",
+ (long long)(int)offsetof(xattr_acl_entry, e_perm));
+ LASSERTF((int)sizeof(((xattr_acl_entry *)0)->e_perm) == 2, " found %lld\n",
+ (long long)(int)sizeof(((xattr_acl_entry *)0)->e_perm));
+ LASSERTF((int)offsetof(xattr_acl_entry, e_id) == 4, " found %lld\n",
+ (long long)(int)offsetof(xattr_acl_entry, e_id));
+ LASSERTF((int)sizeof(((xattr_acl_entry *)0)->e_id) == 4, " found %lld\n",
+ (long long)(int)sizeof(((xattr_acl_entry *)0)->e_id));
/* Checks for type posix_acl_xattr_header */
- LASSERTF((int)sizeof(posix_acl_xattr_header) == 4, " found %lld\n",
- (long long)(int)sizeof(posix_acl_xattr_header));
- LASSERTF((int)offsetof(posix_acl_xattr_header, a_version) == 0, " found %lld\n",
- (long long)(int)offsetof(posix_acl_xattr_header, a_version));
- LASSERTF((int)sizeof(((posix_acl_xattr_header *)0)->a_version) == 4, " found %lld\n",
- (long long)(int)sizeof(((posix_acl_xattr_header *)0)->a_version));
- LASSERTF((int)offsetof(posix_acl_xattr_header, a_entries) == 4, " found %lld\n",
- (long long)(int)offsetof(posix_acl_xattr_header, a_entries));
- LASSERTF((int)sizeof(((posix_acl_xattr_header *)0)->a_entries) == 0, " found %lld\n",
- (long long)(int)sizeof(((posix_acl_xattr_header *)0)->a_entries));
+ LASSERTF((int)sizeof(xattr_acl_header) == 4, " found %lld\n",
+ (long long)(int)sizeof(xattr_acl_header));
+ LASSERTF((int)offsetof(xattr_acl_header, a_version) == 0, " found %lld\n",
+ (long long)(int)offsetof(xattr_acl_header, a_version));
+ LASSERTF((int)sizeof(((xattr_acl_header *)0)->a_version) == 4, " found %lld\n",
+ (long long)(int)sizeof(((xattr_acl_header *)0)->a_version));
+ LASSERTF((int)offsetof(xattr_acl_header, a_entries) == 4, " found %lld\n",
+ (long long)(int)offsetof(xattr_acl_header, a_entries));
+ LASSERTF((int)sizeof(((xattr_acl_header *)0)->a_entries) == 0, " found %lld\n",
+ (long long)(int)sizeof(((xattr_acl_header *)0)->a_entries));
#endif
-
}
+