#define OBD_CONNECT_RDONLY 0x1ULL
#define OBD_CONNECT_SRVLOCK 0x10ULL /* server takes locks for client */
-#define MGS_CONNECT_SUPPORTED (OBD_CONNECT_RDONLY)
#define MDS_CONNECT_SUPPORTED (OBD_CONNECT_RDONLY)
#define OST_CONNECT_SUPPORTED (OBD_CONNECT_SRVLOCK)
#define ECHO_CONNECT_SUPPORTED (0)
+#define MGMT_CONNECT_SUPPORTED (0)
/* This structure is used for both request and reply.
*
extern void lustre_swab_ptlbd_rsp (struct ptlbd_rsp *r);
+
/*
- * Opcodes for management/monitoring node.
+ * Opcodes for mountconf (mgs and mgc)
*/
typedef enum {
MGMT_CONNECT = 250,
MGMT_DISCONNECT,
MGMT_EXCEPTION, /* node died, etc. */
+ MGMT_OST_ADD,
+ MGMT_OST_DEL,
MGMT_LAST_OPC
-} mgmt_cmd_t;
-#define MGMT_FIRST_OPC MGMT_CONNECT
+} mgs_cmd_t;
+
+struct mgmt_ost_info {
+ struct list_head moi_list;
+ char moi_ostname[64];
+ char moi_nodename[64];
+ char moi_ostuuid[64];
+ __u64 moi_nid; /* lnet_nid_t */
+ __u32 moi_stripe_index;
+};
+
+extern void lustre_swab_mgmt_ost_info(struct mgmt_ost_info *oinfo);
+
+struct mgmt_mds_info {
+ __u64 mmi_nid;
+};
+
+extern void lustre_swab_mgmt_mds_info(struct mgmt_mds_info *oinfo);
+
/*
* Opcodes for multiple servers.
QUOTA_DQREL = 602,
} quota_cmd_t;
-/*mount-conf*/
-
-/*
- * Opcodes for management/monitoring node.
- */
-typedef enum {
- MGS_CONNECT = 700,
- MGS_DISCONNECT,
- MGS_LAST_OPC
-} mgs_cmd_t;
-#define MGS_FIRSTOPC MGS_CONNECT,
-
#endif
__u64 obj_version;
};
-struct ost_info {
- struct list_head osi_list;
- char osi_ostname[64];
- char osi_nodename[64];
- char osi_ostuuid[64];
- lnet_nid_t osi_nid;
- __u32 osi_nal;
- __u32 osi_stripe_index;
-};
-
struct system_db {
__u64 version;
char fsname[64];
} else if (!strcmp(name, LUSTRE_MGC_NAME)) {
rq_portal = MGC_REQUEST_PORTAL;
rp_portal = MGC_REPLY_PORTAL;
- connect_op = MGS_CONNECT;
+ connect_op = MGMT_CONNECT;
is_mgc++;
} else {
CERROR("unknown client OBD type \"%s\", can't setup\n",
#include <linux/lustre_log.h>
#include <linux/lustre_fsfilt.h>
#include <linux/lustre_disk.h>
-//#include <linux/lustre_mgs.h>
+#include <linux/lustre_mgs.h>
#include "mgc_internal.h"
-int mgc_ost_add(struct obd_export *exp, struct ost_info *oinfo,
- struct mds_info *minfo)
+int mgc_ost_add(struct obd_export *exp, struct mgmt_ost_info *oinfo,
+ struct mgmt_mds_info *minfo)
{
struct ptlrpc_request *req;
- struct ost_info *req_oinfo;
+ struct mgmt_ost_info *req_oinfo;
int size = sizeof(*req_oinfo);
int rep_size[2] = { sizeof(*oinfo),
sizeof(*minfo)};
int rc;
ENTRY;
- req = ptlrpc_prep_req(class_exp2cliimp(exp),
- MGS_OST_ADD, 1, &size, NULL);
+ req = ptlrpc_prep_req(class_exp2cliimp(exp), MGMT_OST_ADD,
+ 1, &size, NULL);
if (!req)
RETURN(rc = -ENOMEM);
rc = ptlrpc_queue_wait(req);
if (!rc) {
- struct ost_info *rep_oinfo;
- struct mds_info *rep_minfo;
+ struct mgmt_ost_info *rep_oinfo;
+ struct mgmt_mds_info *rep_minfo;
rep_oinfo = lustre_swab_repbuf(req, 0, sizeof(*rep_oinfo),
- lustre_swab_ost_info);
+ lustre_swab_mgmt_ost_info);
rep_minfo = lustre_swab_repbuf(req, 1, sizeof(*rep_minfo),
- lustre_swab_mds_info);
- if (rep_oinfo->osi_stripe_index == -1) {
+ lustre_swab_mgmt_mds_info);
+ if (rep_oinfo->moi_stripe_index == -1) {
CERROR ("Register failed\n");
GOTO (out, rc = -EINVAL);
}
CERROR("register OK.(index = %d)\n",
- rep_oinfo->osi_stripe_index);
+ rep_oinfo->moi_stripe_index);
memcpy(oinfo, rep_oinfo, sizeof(*oinfo));
memcpy(minfo, rep_minfo, sizeof(*minfo));
}
}
EXPORT_SYMBOL(mgc_ost_add);
-int mgc_ost_del(struct obd_export *exp, struct ost_info *oinfo)
+int mgc_ost_del(struct obd_export *exp, struct mgmt_ost_info *oinfo)
{
struct ptlrpc_request *req;
- struct ost_info *req_oinfo;
+ struct mgmt_ost_info *req_oinfo;
int size = sizeof(*req_oinfo);
int rc;
ENTRY;
- req = ptlrpc_prep_req(class_exp2cliimp(exp), MGS_OST_DEL,
+ req = ptlrpc_prep_req(class_exp2cliimp(exp), MGMT_OST_DEL,
1, &size, NULL);
if (!req)
RETURN(rc = -ENOMEM);
rc = ptlrpc_queue_wait(req);
if (!rc)
CERROR("unregister OK.(old index = %d)\n",
- oinfo->osi_stripe_index);
+ oinfo->moi_stripe_index);
else {
CERROR ("Unregister failed\n");
GOTO (out, rc = -EINVAL);
med = &exp->exp_mgs_data;
if (data != NULL) {
- data->ocd_connect_flags &= MGS_CONNECT_SUPPORTED;
+ data->ocd_connect_flags &= MGMT_CONNECT_SUPPORTED;
exp->exp_connect_flags = data->ocd_connect_flags;
}
LASSERT(current->journal_info == NULL);
/* XXX identical to MDS */
- if (req->rq_reqmsg->opc != MGS_CONNECT) {
+ if (req->rq_reqmsg->opc != MGMT_CONNECT) {
struct mgs_export_data *med;
int abort_recovery;
}
switch (req->rq_reqmsg->opc) {
- case MGS_CONNECT:
+ case MGMT_CONNECT:
DEBUG_REQ(D_INODE, req, "connect");
OBD_FAIL_RETURN(OBD_FAIL_MGS_CONNECT_NET, 0);
rc = target_handle_connect(req, mgs_handle);
}
break;
- case MGS_DISCONNECT:
+ case MGMT_DISCONNECT:
DEBUG_REQ(D_INODE, req, "disconnect");
OBD_FAIL_RETURN(OBD_FAIL_MGS_DISCONNECT_NET, 0);
rc = target_handle_disconnect(req);
LASSERT(current->journal_info == NULL);
/* If we're DISCONNECTing, the mgs_export_data is already freed */
- if (!rc && req->rq_reqmsg->opc != MGS_DISCONNECT) {
+ if (!rc && req->rq_reqmsg->opc != MGMT_DISCONNECT) {
struct mgs_export_data *med = &req->rq_export->exp_mgs_data;
req->rq_repmsg->last_xid =
le64_to_cpu(med->med_mcd->mcd_last_xid);
char osc_name[64];
char index[16];
char *setup_argv[2];
- struct ost_info *oinfo = list_entry(tmp, struct ost_info,
- osi_list);
+ struct mgmt_ost_info *oinfo;
- sprintf(ost_node_uuid, "%s_UUID", oinfo->osi_nodename);
+ oinfo = list_entry(tmp, struct mgmt_ost_info, moi_list);
+
+ sprintf(ost_node_uuid, "%s_UUID", oinfo->moi_nodename);
sprintf(osc_name,"OSC_%s_%s_%s",
- db->mds_nodename, oinfo->osi_ostname, db->mds_name);
+ db->mds_nodename, oinfo->moi_ostname, db->mds_name);
- rc = record_add_uuid(obd, llh, oinfo->osi_nid, ost_node_uuid);
+ rc = record_add_uuid(obd, llh, oinfo->moi_nid, ost_node_uuid);
if (rc) {
CERROR("failed to record log(add_uuid) %s: %d\n",
name, rc);
RETURN(rc);
}
- setup_argv[0] = oinfo->osi_ostuuid;
+ setup_argv[0] = oinfo->moi_ostuuid;
setup_argv[1] = ost_node_uuid;
rc = record_setup(obd, llh, osc_name, 2, setup_argv);
if (rc) {
RETURN(rc);
}
- sprintf(index, "%d", oinfo->osi_stripe_index);
+ sprintf(index, "%d", oinfo->moi_stripe_index);
rc = record_lov_modify_tgts(obd, llh, lov_name, "add",
- oinfo->osi_ostuuid, index, "1");
+ oinfo->moi_ostuuid, index, "1");
if (rc) {
CERROR("failed to record log(lov_modify_tgts) %s: %d\n",
name, rc);
char ost_node_uuid[64];
char osc_name[64];
char index[16];
- struct ost_info *oinfo = list_entry(tmp, struct ost_info,
- osi_list);
+ struct mgmt_ost_info *oinfo;
+
+ oinfo = list_entry(tmp, struct mgmt_ost_info, moi_list);
- sprintf(ost_node_uuid, "%s_UUID", oinfo->osi_nodename);
+ sprintf(ost_node_uuid, "%s_UUID", oinfo->moi_nodename);
sprintf(osc_name, "OSC_%s_%s_MNT_client",
- db->mds_nodename, oinfo->osi_ostname);
+ db->mds_nodename, oinfo->moi_ostname);
- rc = record_add_uuid(obd, llh, oinfo->osi_nid, ost_node_uuid);
+ rc = record_add_uuid(obd, llh, oinfo->moi_nid, ost_node_uuid);
if (rc) {
CERROR("failed to record log(add_uuid) %s: %d\n",
name, rc);
RETURN(rc);
}
- setup_argv[0] = oinfo->osi_ostuuid;
+ setup_argv[0] = oinfo->moi_ostuuid;
setup_argv[1] = ost_node_uuid;
rc = record_setup(obd, llh, osc_name, 2, setup_argv);
if (rc) {
RETURN(rc);
}
- sprintf(index, "%d", oinfo->osi_stripe_index);
+ sprintf(index, "%d", oinfo->moi_stripe_index);
rc = record_lov_modify_tgts(obd, llh, lov_name, "add",
- oinfo->osi_ostuuid, index, "1");
+ oinfo->moi_ostuuid, index, "1");
if (rc) {
CERROR("failed to record log(lov_modify_tgts) %s: %d\n",
name, rc);
__swab32s (&b->padding_4);
}
-void lustre_swab_ost_info(struct ost_info *oinfo)
+void lustre_swab_mgmt_ost_info(struct mgmt_ost_info *oinfo)
{
- __swab64s(&oinfo->osi_nid);
- __swab32s(&oinfo->osi_nal);
- __swab32s(&oinfo->osi_stripe_index);
+ __swab64s(&oinfo->moi_nid);
+ __swab32s(&oinfo->moi_stripe_index);
}
-void lustre_swab_mds_info(struct mds_info *minfo)
+void lustre_swab_mgmt_mds_info(struct mgmt_mds_info *minfo)
{
- __swab64s(&minfo->mds_nid);
+ __swab64s(&minfo->mmi_nid);
}
static void lustre_swab_obd_dqinfo (struct obd_dqinfo *i)
(long long)MGMT_DISCONNECT);
LASSERTF(MGMT_EXCEPTION == 252, " found %lld\n",
(long long)MGMT_EXCEPTION);
+ LASSERTF(MGMT_OST_ADD == 253, " found %lld\n",
+ (long long)MGMT_OST_ADD);
+ LASSERTF(MGMT_OST_DEL == 254, " found %lld\n",
+ (long long)MGMT_OST_DEL);
LASSERTF(OBD_PING == 400, " found %lld\n",
(long long)OBD_PING);
LASSERTF(OBD_LOG_CANCEL == 401, " found %lld\n",
EXPORT_SYMBOL(lustre_swab_ptlbd_niob);
EXPORT_SYMBOL(lustre_swab_ptlbd_rsp);
EXPORT_SYMBOL(lustre_swab_qdata);
-EXPORT_SYMBOL(lustre_swab_ost_info);
-EXPORT_SYMBOL(lustre_swab_mds_info);
+EXPORT_SYMBOL(lustre_swab_mgmt_ost_info);
+EXPORT_SYMBOL(lustre_swab_mgmt_mds_info);
/* recover.c */
EXPORT_SYMBOL(ptlrpc_run_recovery_over_upcall);
}
/* Get rid of symbolic hostnames for tcp */
-#define MAXNIDSTR 256
+#define MAXNIDSTR 1024
static char *convert_hostnames(char *s1)
{
char *converted, *s2, *c;
CHECK_VALUE(MGMT_CONNECT);
CHECK_VALUE(MGMT_DISCONNECT);
CHECK_VALUE(MGMT_EXCEPTION);
+ CHECK_VALUE(MGMT_OST_ADD);
+ CHECK_VALUE(MGMT_OST_DEL);
CHECK_VALUE(OBD_PING);
CHECK_VALUE(OBD_LOG_CANCEL);
int main()
{
- lustre_assert_wire_constants();
+ lustre_assert_wire_constants();
- if (ret == 0)
- printf("wire constants OK\n");
+ if (ret == 0)
+ printf("wire constants OK\n");
- return ret;
+ return ret;
}
void lustre_assert_wire_constants(void)
(long long)MGMT_DISCONNECT);
LASSERTF(MGMT_EXCEPTION == 252, " found %lld\n",
(long long)MGMT_EXCEPTION);
+ LASSERTF(MGMT_OST_ADD == 253, " found %lld\n",
+ (long long)MGMT_OST_ADD);
+ LASSERTF(MGMT_OST_DEL == 254, " found %lld\n",
+ (long long)MGMT_OST_DEL);
LASSERTF(OBD_PING == 400, " found %lld\n",
(long long)OBD_PING);
LASSERTF(OBD_LOG_CANCEL == 401, " found %lld\n",