1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Copyright (c) 2003 Cluster File Systems, Inc.
6 * This file is part of Lustre, http://www.lustre.org.
8 * Lustre is free software; you can redistribute it and/or
9 * modify it under the terms of version 2 of the GNU General Public
10 * License as published by the Free Software Foundation.
12 * Lustre is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Lustre; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 #ifndef MDC_INTERNAL_H
22 #define MDC_INTERNAL_H
24 int mdc_packmd(struct obd_export *exp, struct lov_mds_md **lmmp,
25 struct lov_stripe_md *lsm);
27 int mdc_unpackmd(struct obd_export *exp, struct lov_stripe_md **lsmp,
28 struct lov_mds_md *lmm, int lmm_size);
30 void mdc_getattr_pack(struct lustre_msg *msg, int offset,
31 __u64 valid, int flags,
32 struct mdc_op_data *op_data);
34 void mdc_open_pack(struct lustre_msg *msg, int offset,
35 struct mdc_op_data *op_data, __u32 mode,
36 __u64 rdev, __u32 flags, const void *lmm,
37 int lmmlen, void *key, int keylen);
39 void mdc_close_pack(struct ptlrpc_request *req, int offset,
40 struct mdc_op_data *op_data,
41 struct obd_client_handle *och);
43 void mdc_readdir_pack(struct ptlrpc_request *req, int req_offset,
44 __u64 offset, __u32 size, struct lustre_id *mdc_id);
46 struct mdc_open_data {
47 struct obd_client_handle *mod_och;
48 struct ptlrpc_request *mod_open_req;
49 struct ptlrpc_request *mod_close_req;
53 struct semaphore rpcl_sem;
54 struct lookup_intent *rpcl_it;
57 static inline void mdc_init_rpc_lock(struct mdc_rpc_lock *lck)
59 sema_init(&lck->rpcl_sem, 1);
63 static inline void mdc_get_rpc_lock(struct mdc_rpc_lock *lck,
64 struct lookup_intent *it)
73 static inline void mdc_put_rpc_lock(struct mdc_rpc_lock *lck,
74 struct lookup_intent *it)
78 LASSERT(it == lck->rpcl_it);
83 LASSERT(it == lck->rpcl_it);
89 #endif /* MDC_INTERNAL_H */