Whamcloud - gitweb
- make HEAD from b_post_cmd3
[fs/lustre-release.git] / lustre / include / lustre_mds.h
1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=8:tabstop=8:
3  *
4  *   This file is part of Lustre, http://www.lustre.org
5  *
6  * MDS data structures.
7  * See also lustre_idl.h for wire formats of requests.
8  */
9
10 #ifndef _LUSTRE_MDS_H
11 #define _LUSTRE_MDS_H
12
13 #include <lustre_handles.h>
14 #include <libcfs/kp30.h>
15 #include <lustre/lustre_idl.h>
16 #include <lustre_lib.h>
17 #include <lustre_dlm.h>
18 #include <lustre_log.h>
19 #include <lustre_export.h>
20
21 #if defined(__linux__)
22 #include <linux/lustre_mds.h>
23 #elif defined(__APPLE__)
24 #include <darwin/lustre_mds.h>
25 #elif defined(__WINNT__)
26 #include <winnt/lustre_mds.h>
27 #else
28 #error Unsupported operating system.
29 #endif
30
31 struct ldlm_lock_desc;
32 struct mds_obd;
33 struct ptlrpc_connection;
34 struct ptlrpc_client;
35 struct obd_export;
36 struct ptlrpc_request;
37 struct obd_device;
38 struct ll_file_data;
39
40 struct mds_update_record {
41         __u32 ur_opcode;
42         struct ll_fid *ur_fid1;
43         struct ll_fid *ur_fid2;
44         int ur_namelen;
45         char *ur_name;
46         int ur_tgtlen;
47         char *ur_tgt;
48         int ur_eadatalen;
49         void *ur_eadata;
50         int ur_cookielen;
51         struct llog_cookie *ur_logcookies;
52         struct iattr ur_iattr;
53         struct lvfs_ucred ur_uc;
54         __u64 ur_rdev;
55         __u64 ur_time;
56         __u32 ur_mode;
57         __u32 ur_flags;
58         struct lvfs_grp_hash_entry *ur_grp_entry;
59 };
60
61 /* file data for open files on MDS */
62 struct mds_file_data {
63         struct portals_handle mfd_handle; /* must be first */
64         atomic_t              mfd_refcount;
65         struct list_head      mfd_list; /* protected by med_open_lock */
66         __u64                 mfd_xid;
67         int                   mfd_mode;
68         struct dentry        *mfd_dentry;
69 };
70
71 struct mds_group_info {
72         struct obd_uuid *uuid;
73         int group;
74 };
75
76 /* mds/mds_reint.c */
77 struct inode;
78
79 int mds_reint_rec(struct mds_update_record *r, int offset,
80                   struct ptlrpc_request *req, struct lustre_handle *);
81
82 int mds_osc_setattr_async(struct obd_device *obd, __u32 uid, __u32 gid,
83                           struct lov_mds_md *lmm, int lmm_size,
84                           struct llog_cookie *logcookies, __u64 id, __u32 gen,
85                           struct obd_capa *oc);
86
87 int mds_log_op_unlink(struct obd_device *obd,
88                       struct lov_mds_md *lmm, int lmm_size,
89                       struct llog_cookie *logcookies, int cookies_size);
90 int mds_log_op_setattr(struct obd_device *obd, __u32 uid, __u32 gid, 
91                       struct lov_mds_md *lmm, int lmm_size,
92                       struct llog_cookie *logcookies, int cookies_size);
93
94 int mds_lov_write_objids(struct obd_device *obd);
95 void mds_lov_update_objids(struct obd_device *obd, obd_id *ids);
96 void mds_objids_from_lmm(obd_id *, struct lov_mds_md *, struct lov_desc *);
97
98 /* ioctls for trying requests */
99 #define IOC_REQUEST_TYPE                   'f'
100 #define IOC_REQUEST_MIN_NR                 30
101
102 #define IOC_REQUEST_GETATTR             _IOWR('f', 30, long)
103 #define IOC_REQUEST_READPAGE            _IOWR('f', 31, long)
104 #define IOC_REQUEST_SETATTR             _IOWR('f', 32, long)
105 #define IOC_REQUEST_CREATE              _IOWR('f', 33, long)
106 #define IOC_REQUEST_OPEN                _IOWR('f', 34, long)
107 #define IOC_REQUEST_CLOSE               _IOWR('f', 35, long)
108 #define IOC_REQUEST_MAX_NR               35
109
110 #define MDS_LOV_MD_NAME "trusted.lov"
111 #define MDS_LMV_MD_NAME "trusted.lmv"
112 #define MDD_OBD_NAME    "mdd_obd"
113 #define MDD_OBD_UUID    "mdd_obd_uuid"
114 #define MDD_OBD_TYPE    "mds"
115 #define MDD_OBD_PROFILE "lustre-MDT0000"
116
117 #endif