Whamcloud - gitweb
ORNL-13: NonIR client support
[fs/lustre-release.git] / lustre / mgs / mgs_internal.h
index 51ae0b1..5c66613 100644 (file)
@@ -76,6 +76,27 @@ enum {
  */
 struct fs_db;
 
+/**
+ * maintain fs client nodes of mgs.
+ */
+struct mgs_fsc {
+        struct fs_db      *mfc_fsdb;
+        /**
+         * Where the fs client comes from.
+         */
+        struct obd_export *mfc_export;
+        /**
+         * list of fs clients from the same export,
+         * protected by mgs_export_data->med_lock
+         */
+        cfs_list_t         mfc_export_list;
+        /**
+         * list of fs clients in the same fsdb, protected by fsdb->fsdb_sem
+         */
+        cfs_list_t        mfc_fsdb_list;
+        unsigned          mfc_ir_capable:1;
+};
+
 struct mgs_nidtbl {
         struct fs_db *mn_fsdb;
         struct file  *mn_version_file;
@@ -121,6 +142,9 @@ struct fs_db {
         struct sptlrpc_rule_set   fsdb_srpc_gen;
         struct mgs_tgt_srpc_conf *fsdb_srpc_tgt;
 
+        /* list of fs clients, mgs_fsc. protected by mgs_sem */
+        cfs_list_t           fsdb_clients;
+        int                  fsdb_nonir_clients;
         int                  fsdb_ir_state;
 
         /* Target NIDs Table */
@@ -181,6 +205,9 @@ int  lprocfs_wr_ir_timeout(struct file *file, const char *buffer,
                            unsigned long count, void *data);
 int  lprocfs_rd_ir_timeout(char *page, char **start, off_t off, int count,
                            int *eof, void *data);
+void mgs_fsc_cleanup(struct obd_export *exp);
+void mgs_fsc_cleanup_by_fsdb(struct fs_db *fsdb);
+int  mgs_fsc_attach(struct obd_export *exp, char *fsname);
 
 /* mgs_fs.c */
 int mgs_export_stats_init(struct obd_device *obd, struct obd_export *exp,