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 + -
显示快捷键?