Whamcloud - gitweb
e0833f9e2edcc931781c212b634a64cfc545e0b8
[fs/lustre-release.git] / lustre / mgs / mgs_internal.h
1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=8:tabstop=8:
3  */
4
5 #ifndef _MGS_INTERNAL_H
6 #define _MGS_INTERNAL_H
7
8 #ifdef __KERNEL__
9 # include <linux/fs.h>
10 #endif
11 #include <libcfs/libcfs.h>
12 #include <lustre/lustre_idl.h>
13 #include <lustre_lib.h>
14 #include <lustre_dlm.h>
15 #include <lustre_log.h>
16 #include <lustre_export.h>
17
18 /* in ms */
19 #define MGS_SERVICE_WATCHDOG_TIMEOUT (obd_timeout * 1000)
20
21 /* mgs_llog.c */
22 int class_dentry_readdir(struct obd_device *obd, struct dentry *dir,
23                          struct vfsmount *inmnt, 
24                          struct list_head *dentry_list);
25  
26 struct mgs_tgt_srpc_conf {
27         struct mgs_tgt_srpc_conf  *mtsc_next;
28         char                      *mtsc_tgt;
29         struct sptlrpc_rule_set    mtsc_rset;
30 };
31
32 #define INDEX_MAP_SIZE  8192     /* covers indicies to FFFF */
33 #define FSDB_LOG_EMPTY  0x0001  /* missing client log */
34 #define FSDB_OLDLOG14   0x0002  /* log starts in old (1.4) style */
35
36
37 struct fs_db {
38         char              fsdb_name[9];
39         struct list_head  fsdb_list;           /* list of databases */
40         struct semaphore  fsdb_sem;
41         void             *fsdb_ost_index_map;  /* bitmap of used indicies */
42         void             *fsdb_mdt_index_map;  /* bitmap of used indicies */
43         /* COMPAT_146 these items must be recorded out of the old client log */
44         char             *fsdb_clilov;         /* COMPAT_146 client lov name */
45         char             *fsdb_clilmv;
46         char             *fsdb_mdtlov;         /* COMPAT_146 mds lov name */
47         char             *fsdb_mdtlmv;
48         char             *fsdb_mdc;            /* COMPAT_146 mdc name */
49         /* end COMPAT_146 */
50         __u32             fsdb_flags;
51         __u32             fsdb_gen;
52
53         /* in-memory copy of the srpc rules, guarded by fsdb_sem */
54         struct sptlrpc_rule_set   fsdb_srpc_gen;
55         struct mgs_tgt_srpc_conf *fsdb_srpc_tgt;
56         unsigned int              fsdb_srpc_fl_udesc:1;
57 };
58
59 int mgs_init_fsdb_list(struct obd_device *obd);
60 int mgs_cleanup_fsdb_list(struct obd_device *obd);
61 int mgs_check_index(struct obd_device *obd, struct mgs_target_info *mti);
62 int mgs_check_failnid(struct obd_device *obd, struct mgs_target_info *mti);
63 int mgs_write_log_target(struct obd_device *obd, struct mgs_target_info *mti);
64 int mgs_upgrade_sv_14(struct obd_device *obd, struct mgs_target_info *mti);
65 int mgs_erase_log(struct obd_device *obd, char *name);
66 int mgs_erase_logs(struct obd_device *obd, char *fsname);
67 int mgs_setparam(struct obd_device *obd, struct lustre_cfg *lcfg, char *fsname);
68
69 /* mgs_fs.c */
70 int mgs_fs_setup(struct obd_device *obd, struct vfsmount *mnt);
71 int mgs_fs_cleanup(struct obd_device *obddev);
72
73 #define strsuf(buf, suffix) (strcmp((buf)+strlen(buf)-strlen(suffix), (suffix)))
74 #ifdef LPROCFS
75 int lproc_mgs_setup(struct obd_device *dev);
76 int lproc_mgs_cleanup(struct obd_device *obd);
77 int lproc_mgs_add_live(struct obd_device *obd, struct fs_db *fsdb);
78 int lproc_mgs_del_live(struct obd_device *obd, struct fs_db *fsdb);
79 void lprocfs_mgs_init_vars(struct lprocfs_static_vars *lvars);
80 #else
81 static inline int lproc_mgs_setup(struct obd_device *dev) 
82 {return 0;}
83 static inline int lproc_mgs_cleanup(struct obd_device *obd)
84 {return 0;}
85 static inline int lproc_mgs_add_live(struct obd_device *obd, struct fs_db *fsdb)
86 {return 0;}
87 static inline int lproc_mgs_del_live(struct obd_device *obd, struct fs_db *fsdb)
88 {return 0;}
89 static void lprocfs_mgs_init_vars(struct lprocfs_static_vars *lvars)
90 {
91         memset(lvars, 0, sizeof(*lvars));
92 }
93 #endif
94
95 /* mgs/lproc_mgs.c */
96 enum {
97         LPROC_MGS_CONNECT = 0,
98         LPROC_MGS_DISCONNECT,
99         LPROC_MGS_EXCEPTION,
100         LPROC_MGS_TARGET_REG,
101         LPROC_MGS_TARGET_DEL,
102         LPROC_MGS_LAST
103 };
104 void mgs_counter_incr(struct obd_export *exp, int opcode);
105 void mgs_stats_counter_init(struct lprocfs_stats *stats);
106
107 #endif /* _MGS_INTERNAL_H */