Whamcloud - gitweb
smash the HEAD with the contents of b_cmd. HEAD_PRE_CMD_SMASH and
[fs/lustre-release.git] / lustre / mdc / mdc_internal.h
1 void mdc_pack_req_body(struct ptlrpc_request *);
2 void mdc_pack_rep_body(struct ptlrpc_request *);
3 void mdc_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size,
4                       struct ll_fid *mdc_fid);
5 void mdc_getattr_pack(struct ptlrpc_request *req, int valid, int offset,
6                       int flags, struct mdc_op_data *data);
7 void mdc_setattr_pack(struct ptlrpc_request *req,
8                       struct mdc_op_data *data,
9                       struct iattr *iattr, void *ea, int ealen,
10                       void *ea2, int ea2len);
11 void mdc_create_pack(struct ptlrpc_request *req, int offset,
12                      struct mdc_op_data *op_data, __u32 mode, __u64 rdev,
13                      const void *data, int datalen);
14 void mdc_open_pack(struct ptlrpc_request *req, int offset,
15                    struct mdc_op_data *op_data, __u32 mode, __u64 rdev,
16                    __u32 flags, const void *data, int datalen);
17 void mdc_unlink_pack(struct ptlrpc_request *req, int offset,
18                      struct mdc_op_data *data);
19 void mdc_link_pack(struct ptlrpc_request *req, int offset,
20                    struct mdc_op_data *data);
21 void mdc_rename_pack(struct ptlrpc_request *req, int offset,
22                      struct mdc_op_data *data,
23                      const char *old, int oldlen, const char *new, int newlen);
24
25 struct mdc_open_data {
26         struct obd_client_handle *mod_och;
27         struct ptlrpc_request    *mod_open_req;
28         struct ptlrpc_request    *mod_close_req;
29 };
30
31 struct mdc_rpc_lock {
32         struct semaphore rpcl_sem;
33         struct lookup_intent *rpcl_it;
34 };
35
36 static inline void mdc_init_rpc_lock(struct mdc_rpc_lock *lck)
37 {
38         sema_init(&lck->rpcl_sem, 1);
39         lck->rpcl_it = NULL;
40 }
41
42 static inline void mdc_get_rpc_lock(struct mdc_rpc_lock *lck, 
43                                     struct lookup_intent *it)
44 {
45         ENTRY;
46         down(&lck->rpcl_sem);
47         if (it) { 
48                 lck->rpcl_it = it;
49         }
50 }
51
52 static inline void mdc_put_rpc_lock(struct mdc_rpc_lock *lck, 
53                                     struct lookup_intent *it)
54 {
55         EXIT;
56         if (it == NULL) {
57                 LASSERT(it == lck->rpcl_it);
58                 up(&lck->rpcl_sem);
59                 return;
60         }
61         if (it) {
62                 LASSERT(it == lck->rpcl_it);
63                 lck->rpcl_it = NULL;
64                 up(&lck->rpcl_sem);
65         }
66 }