pack_generic.c
来自「lustre 1.6.5 source code」· C语言 代码 · 共 1,984 行 · 第 1/5 页
C
1,984 行
pb->pb_flags &= ~(MSG_GEN_FLAG_MASK & flags); return; } default: LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic); }}__u32 lustre_msg_get_op_flags(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_flags >> MSG_OP_FLAG_SHIFT; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return 0; } return pb->pb_op_flags; } default: return 0; }}void lustre_msg_add_op_flags(struct lustre_msg *msg, int flags){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: ((struct lustre_msg_v1 *)msg)->lm_flags |= (flags & MSG_GEN_FLAG_MASK) << MSG_OP_FLAG_SHIFT; return; case LUSTRE_MSG_MAGIC_V2: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); LASSERTF(pb, "invalid msg %p: no ptlrpc body!\n", msg); pb->pb_op_flags |= flags; return; } default: LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic); }}void lustre_msg_set_op_flags(struct lustre_msg *msg, int flags){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: ((struct lustre_msg_v1 *)msg)->lm_flags &= ~MSG_OP_FLAG_MASK; ((struct lustre_msg_v1 *)msg)->lm_flags |= ((flags & MSG_GEN_FLAG_MASK) <<MSG_OP_FLAG_SHIFT); return; case LUSTRE_MSG_MAGIC_V2: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); LASSERTF(pb, "invalid msg %p: no ptlrpc body!\n", msg); pb->pb_op_flags |= flags; return; } default: LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic); }}struct lustre_handle *lustre_msg_get_handle(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return &((struct lustre_msg_v1 *)msg)->lm_handle; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return NULL; } return &pb->pb_handle; } default: CERROR("incorrect message magic: %08x\n", msg->lm_magic); return NULL; }}__u32 lustre_msg_get_type(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_type; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return PTL_RPC_MSG_ERR; } return pb->pb_type; } default: CERROR("incorrect message magic: %08x\n", msg->lm_magic); return PTL_RPC_MSG_ERR; }}__u32 lustre_msg_get_version(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_version; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return 0; } return pb->pb_version; } default: CERROR("incorrect message magic: %08x\n", msg->lm_magic); return 0; }}void lustre_msg_add_version(struct lustre_msg *msg, int version){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); LASSERTF(pb, "invalid msg %p: no ptlrpc body!\n", msg); pb->pb_version |= version; return; } default: LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic); }}__u32 lustre_msg_get_opc(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_opc; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return 0; } return pb->pb_opc; } default: CERROR( "incorrect message magic: %08x\n", msg->lm_magic); return 0; }}__u64 lustre_msg_get_last_xid(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_last_xid; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return 0; } return pb->pb_last_xid; } default: CERROR("incorrect message magic: %08x\n", msg->lm_magic); return 0; }}__u64 lustre_msg_get_last_committed(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_last_committed; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return 0; } return pb->pb_last_committed; } default: CERROR("incorrect message magic: %08x\n", msg->lm_magic); return 0; }}__u64 lustre_msg_get_transno(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_transno; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return 0; } return pb->pb_transno; } default: CERROR("incorrect message magic: %08x\n", msg->lm_magic); return 0; }}int lustre_msg_get_status(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_status; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return -EINVAL; } return pb->pb_status; } default: /* status might be printed in debug code while message * uninitialized */ return -EINVAL; }}__u64 lustre_msg_get_slv(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return 1; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return -EINVAL; } return pb->pb_slv; } default: CERROR("invalid msg magic %x\n", msg->lm_magic); return -EINVAL; }}void lustre_msg_set_slv(struct lustre_msg *msg, __u64 slv){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return; } pb->pb_slv = slv; return; } default: CERROR("invalid msg magic %x\n", msg->lm_magic); return; }}__u32 lustre_msg_get_limit(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return 1; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return -EINVAL; } return pb->pb_limit; } default: CERROR("invalid msg magic %x\n", msg->lm_magic); return -EINVAL; }}void lustre_msg_set_limit(struct lustre_msg *msg, __u64 limit){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return; } pb->pb_limit = limit; return; } default: CERROR("invalid msg magic %x\n", msg->lm_magic); return; }}__u32 lustre_msg_get_conn_cnt(struct lustre_msg *msg){ switch (msg->lm_magic) { case LUSTRE_MSG_MAGIC_V1: case LUSTRE_MSG_MAGIC_V1_SWABBED: return ((struct lustre_msg_v1 *)msg)->lm_conn_cnt; case LUSTRE_MSG_MAGIC_V2: case LUSTRE_MSG_MAGIC_V2_SWABBED: { struct ptlrpc_body *pb; pb = lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF, sizeof(*pb)); if (!pb) { CERROR("invalid msg %p: no ptlrpc body!\n", msg); return 0; } return pb->pb_conn_cnt; } default: CERROR("incorrect message magic: %08x\n", msg->lm_magic); return 0; }}int lustre_msg_is_v1(struct lustre_msg *msg)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?