Used before the setup llog can be read. */
#define MOUNT_CONFIGS_DIR "CONFIGS"
#define MOUNT_DATA_FILE MOUNT_CONFIGS_DIR"/mountdata"
-#define SYSTEM_DB_FILE "SYSTEM_DB"
+#define INDEX_BITMAP_FILE "IB"
#define LDD_MAGIC 0xbabb0001
MGMT_CONNECT = 250,
MGMT_DISCONNECT,
MGMT_EXCEPTION, /* node died, etc. */
- MGMT_REGISTER, /* first connect. */
+ MGMT_FIRST_CONNECT, /* first connect. */
+ MGMT_MDS_ADD,
MGMT_OST_ADD,
MGMT_OST_DEL,
MGMT_LAST_OPC
} mgs_cmd_t;
+#define NAME_MAXLEN 64
+#define UUID_MAXLEN NAME_MAXLEN + 5
struct mgmt_ost_info {
struct list_head moi_list;
- char moi_ostname[64];
- char moi_nodename[64];
- char moi_ostuuid[64];
+ char moi_ostname[NAME_MAXLEN];
+ char moi_nodename[NAME_MAXLEN];
+ char moi_ostuuid[UUID_MAXLEN];
__u64 moi_nid; /* lnet_nid_t */
__u32 moi_stripe_index;
};
struct system_db {
char fsname[64];
- char mds_name[64];
- char mds_uuid[64];
- char mds_nodename[64];
- lnet_nid_t mds_nid;
- struct lov_desc lovdesc;
- int ost_number;
+ struct list_head db_list;
+ void* index_map;
struct list_head ost_infos;
};
-struct llog_verion_desc{
- struct list_head lvd_list;
- __u64 lvd_version;
- int lvd_ref;
- struct llog_log_hdr *lvd_log_hdr;
-};
-
struct mgc_open_llog {
struct list_head mol_list;
__u64 mol_step;
char mol_fsname[40];
};
-struct mgs_open_llog {
- struct list_head mol_list;
- char mol_fsname[40];
- struct llog_handle *mol_cfg_llh;
- struct dentry *mol_dentry;
- spinlock_t mol_lock;
- int mol_refs;
- struct system_db *mol_system_db;
-};
-
int mgs_fs_setup(struct obd_device *obd, struct vfsmount *mnt);
int mgs_fs_cleanup(struct obd_device *obddev);
struct vfsmount *mgs_vfsmnt;
struct super_block *mgs_sb;
struct dentry *mgs_configs_dir;
- spinlock_t mgs_open_llogs_lock;
- struct list_head mgs_open_llogs;
struct llog_handle *mgs_cfg_llh;
+ spinlock_t mgs_system_db_lock;
+ struct list_head mgs_system_db_list;
};
struct mds_obd {
#define OBD_FAIL_MGMT 0x900
-#define OBD_FAIL_MGMT_REGISTER 0x901
+#define OBD_FAIL_MGMT_FIRST_CONNECT 0x901
#define OBD_FAIL_MGMT_CONNECT_NET 0x117
#define OBD_FAIL_MGMT_DISCONNECT_NET 0x11a
#define OBD_FAIL_MGMT_ALL_REPLY_NET 0x122
GOTO(err_ns, rc);
}
- INIT_LIST_HEAD(&mgs->mgs_open_llogs);
-
rc = llog_start_commit_thread();
if (rc < 0)
GOTO(err_fs, rc);
OBD_FAIL_RETURN(OBD_FAIL_OBD_LOG_CANCEL_NET, 0);
rc = -ENOTSUPP; /* la la la */
break;
- case MGMT_REGISTER:
- CDEBUG(D_INODE, "mds/(maybe new filesystem) register\n");
- OBD_FAIL_RETURN(OBD_FAIL_MGMT_REGISTER, 0);
- rc = mgs_mds_register(req);
+ case MGMT_FIRST_CONNECT:
+ CDEBUG(D_INODE, "server connect at first time\n");
+ OBD_FAIL_RETURN(OBD_FAIL_MGMT_FIRST_CONNECT, 0);
+ rc = mgmt_handle_first_connect(req);
+ break;
case MGMT_OST_ADD:
CDEBUG(D_INODE, "ost add\n");
+ rc = mgmt_handle_ost_add(req);
+ break;
case MGMT_OST_DEL:
CDEBUG(D_INODE, "ost del\n");
+ rc = mgmt_handle_ost_del(req);
+ break;
+ case MGMT_MDS_ADD:
+ CDEBUG(D_INODE, "mds add\n");
+ rc = mgmt_handle_mds_add(req);
+ break;
case LLOG_ORIGIN_HANDLE_CREATE:
DEBUG_REQ(D_INODE, req, "llog_init");
OBD_FAIL_RETURN(OBD_FAIL_OBD_LOGD_NET, 0);
(long long)MGMT_DISCONNECT);
LASSERTF(MGMT_EXCEPTION == 252, " found %lld\n",
(long long)MGMT_EXCEPTION);
- LASSERTF(MGMT_REGISTER == 253, " found %lld\n",
- (long long)MGMT_REGISTER);
+ LASSERTF(MGMT_FIRST_CONNECT == 253, " found %lld\n",
+ (long long)MGMT_FIRST_CONNECT);
LASSERTF(MGMT_OST_ADD == 254, " found %lld\n",
(long long)MGMT_OST_ADD);
LASSERTF(MGMT_OST_DEL == 255, " found %lld\n",
CHECK_VALUE(MGMT_CONNECT);
CHECK_VALUE(MGMT_DISCONNECT);
CHECK_VALUE(MGMT_EXCEPTION);
- CHECK_VALUE(MGMT_REGISTER);
+ CHECK_VALUE(MGMT_FIRST_CONNECT);
CHECK_VALUE(MGMT_OST_ADD);
CHECK_VALUE(MGMT_OST_DEL);
(long long)MGMT_DISCONNECT);
LASSERTF(MGMT_EXCEPTION == 252, " found %lld\n",
(long long)MGMT_EXCEPTION);
- LASSERTF(MGMT_REGISTER == 253, " found %lld\n",
- (long long)MGMT_REGISTER);
+ LASSERTF(MGMT_FIRST_CONNECT == 253, " found %lld\n",
+ (long long)MGMT_FIRST_CONNECT);
LASSERTF(MGMT_OST_ADD == 254, " found %lld\n",
(long long)MGMT_OST_ADD);
LASSERTF(MGMT_OST_DEL == 255, " found %lld\n",