Whamcloud - gitweb
- many changes about fids:
[fs/lustre-release.git] / lustre / mdc / mdc_internal.h
1 #include <linux/lustre_mdc.h>
2 void mdc_pack_req_body(struct ptlrpc_request *req, int offset,
3                        __u64 valid, struct lu_fid *fid, int ea_size);
4 void mdc_pack_rep_body(struct ptlrpc_request *);
5 void mdc_readdir_pack(struct ptlrpc_request *req, int pos, __u64 offset,
6                       __u32 size, struct lu_fid *fid);
7 void mdc_getattr_pack(struct ptlrpc_request *req, int valid, int offset,
8                       int flags, struct mdc_op_data *data);
9 void mdc_setattr_pack(struct ptlrpc_request *req, int offset,
10                       struct mdc_op_data *data,
11                       struct iattr *iattr, void *ea, int ealen,
12                       void *ea2, int ea2len);
13 void mdc_create_pack(struct ptlrpc_request *req, int offset,
14                      struct mdc_op_data *op_data, const void *data, int datalen,
15                      __u32 mode, __u32 uid, __u32 gid, __u32 cap_effective,
16                      __u64 rdev);
17 void mdc_open_pack(struct ptlrpc_request *req, int offset,
18                    struct mdc_op_data *op_data, __u32 mode, __u64 rdev,
19                    __u32 flags, const void *data, int datalen);
20 void mdc_join_pack(struct ptlrpc_request *req, int offset, 
21                    struct mdc_op_data *op_data, __u64 head_size);
22 void mdc_unlink_pack(struct ptlrpc_request *req, int offset,
23                      struct mdc_op_data *data);
24 void mdc_link_pack(struct ptlrpc_request *req, int offset,
25                    struct mdc_op_data *data);
26 void mdc_rename_pack(struct ptlrpc_request *req, int offset,
27                      struct mdc_op_data *data,
28                      const char *old, int oldlen, const char *new, int newlen);
29 void mdc_close_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *op_data,
30                     int valid, struct obd_client_handle *och);
31
32 struct mdc_open_data {
33         struct obd_client_handle *mod_och;
34         struct ptlrpc_request    *mod_open_req;
35         struct ptlrpc_request    *mod_close_req;
36 };
37
38 struct mdc_rpc_lock {
39         struct semaphore rpcl_sem;
40         struct lookup_intent *rpcl_it;
41 };
42
43 static inline void mdc_init_rpc_lock(struct mdc_rpc_lock *lck)
44 {
45         sema_init(&lck->rpcl_sem, 1);
46         lck->rpcl_it = NULL;
47 }
48
49 static inline void mdc_get_rpc_lock(struct mdc_rpc_lock *lck, 
50                                     struct lookup_intent *it)
51 {
52         ENTRY;
53         down(&lck->rpcl_sem);
54         if (it) { 
55                 lck->rpcl_it = it;
56         }
57 }
58
59 static inline void mdc_put_rpc_lock(struct mdc_rpc_lock *lck, 
60                                     struct lookup_intent *it)
61 {
62         EXIT;
63         if (it == NULL) {
64                 LASSERT(it == lck->rpcl_it);
65                 up(&lck->rpcl_sem);
66                 return;
67         }
68         if (it) {
69                 LASSERT(it == lck->rpcl_it);
70                 lck->rpcl_it = NULL;
71                 up(&lck->rpcl_sem);
72         }
73 }
74
75 /* Quota stuff */
76 extern quota_interface_t *quota_interface;
77