* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*/
/*
cfs_atomic_t cld_refcount;
struct config_llog_data *cld_sptlrpc;/* depended sptlrpc log */
struct obd_export *cld_mgcexp;
+ cfs_mutex_t cld_lock;
unsigned int cld_stopping:1, /* we were told to stop
* watching */
cld_lostlock:1, /* lock not requeued */
#define EXP_MD_COUNTER_INCREMENT(exp, op)
#endif
+static inline int lprocfs_nid_ldlm_stats_init(struct nid_stat* tmp) {
+ /* Always add in ldlm_stats */
+ tmp->nid_ldlm_stats = lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC
+ ,LPROCFS_STATS_FLAG_NOPERCPU);
+ if (tmp->nid_ldlm_stats == NULL)
+ return -ENOMEM;
+
+ lprocfs_init_ldlm_stats(tmp->nid_ldlm_stats);
+
+ return lprocfs_register_stats(tmp->nid_proc, "ldlm_stats",
+ tmp->nid_ldlm_stats);
+}
+
#define OBD_CHECK_MD_OP(obd, op, err) \
do { \
if (!OBT(obd) || !MDP((obd), op)) { \
RETURN(uuid);
}
+/** Create a new /a exp on device /a obd for the uuid /a cluuid
+ * @param exp New export handle
+ * @param d Connect data, supported flags are set, flags also understood
+ * by obd are returned.
+ */
static inline int obd_connect(const struct lu_env *env,
struct obd_export **exp,struct obd_device *obd,
struct obd_uuid *cluuid,
RETURN(rc);
}
+static inline int obd_sync_fs(struct obd_device *obd, struct obd_info *oinfo,
+ int wait)
+{
+ int rc;
+ ENTRY;
+
+ OBD_CHECK_DT_OP(obd, sync_fs, -EOPNOTSUPP);
+ OBD_COUNTER_INCREMENT(obd, sync);
+
+ rc = OBP(obd, sync_fs)(obd, oinfo, wait);
+
+ RETURN(rc);
+}
+
static inline int obd_punch_rqset(struct obd_export *exp,
struct obd_info *oinfo,
struct obd_trans_info *oti)
RETURN(rc);
}
+static inline int obd_find_cbdata(struct obd_export *exp,
+ struct lov_stripe_md *lsm,
+ ldlm_iterator_t it, void *data)
+{
+ int rc;
+ ENTRY;
+
+ EXP_CHECK_DT_OP(exp, find_cbdata);
+ EXP_COUNTER_INCREMENT(exp, find_cbdata);
+
+ rc = OBP(exp->exp_obd, find_cbdata)(exp, lsm, it, data);
+ RETURN(rc);
+}
+
static inline int obd_cancel(struct obd_export *exp,
struct lov_stripe_md *ea, __u32 mode,
struct lustre_handle *lockh)
static inline int obd_cancel_unused(struct obd_export *exp,
struct lov_stripe_md *ea,
- int flags, void *opaque)
+ ldlm_cancel_flags_t flags,
+ void *opaque)
{
int rc;
ENTRY;
static inline int obd_quota_adjust_qunit(struct obd_export *exp,
struct quota_adjust_qunit *oqaq,
- struct lustre_quota_ctxt *qctxt)
+ struct lustre_quota_ctxt *qctxt,
+ struct ptlrpc_request_set *set)
{
#if defined(LPROCFS) && defined(HAVE_QUOTA_SUPPORT)
struct timeval work_start;
EXP_CHECK_DT_OP(exp, quota_adjust_qunit);
EXP_COUNTER_INCREMENT(exp, quota_adjust_qunit);
- rc = OBP(exp->exp_obd, quota_adjust_qunit)(exp, oqaq, qctxt);
+ rc = OBP(exp->exp_obd, quota_adjust_qunit)(exp, oqaq, qctxt, set);
#if defined(LPROCFS) && defined(HAVE_QUOTA_SUPPORT)
if (qctxt) {
RETURN(rc);
}
+static inline int md_find_cbdata(struct obd_export *exp,
+ const struct lu_fid *fid,
+ ldlm_iterator_t it, void *data)
+{
+ int rc;
+ ENTRY;
+ EXP_CHECK_MD_OP(exp, find_cbdata);
+ EXP_MD_COUNTER_INCREMENT(exp, find_cbdata);
+ rc = MDP(exp->exp_obd, find_cbdata)(exp, fid, it, data);
+ RETURN(rc);
+}
+
static inline int md_close(struct obd_export *exp, struct md_op_data *op_data,
struct md_open_data *mod,
struct ptlrpc_request **request)
static inline int md_cancel_unused(struct obd_export *exp,
const struct lu_fid *fid,
ldlm_policy_data_t *policy,
- ldlm_mode_t mode, int flags, void *opaque)
+ ldlm_mode_t mode,
+ ldlm_cancel_flags_t flags,
+ void *opaque)
{
int rc;
ENTRY;
static inline int md_revalidate_lock(struct obd_export *exp,
struct lookup_intent *it,
- struct lu_fid *fid)
+ struct lu_fid *fid, __u32 *bits)
{
int rc;
ENTRY;
EXP_CHECK_MD_OP(exp, revalidate_lock);
EXP_MD_COUNTER_INCREMENT(exp, revalidate_lock);
- rc = MDP(exp->exp_obd, revalidate_lock)(exp, it, fid);
+ rc = MDP(exp->exp_obd, revalidate_lock)(exp, it, fid, bits);
RETURN(rc);
}
#define OBDO_ALLOC(ptr) \
do { \
- OBD_SLAB_ALLOC_PTR((ptr), obdo_cachep); \
+ OBD_SLAB_ALLOC_PTR_GFP((ptr), obdo_cachep, CFS_ALLOC_IO); \
} while(0)
#define OBDO_FREE(ptr) \
int raw_name2idx(int hashtype, int count, const char *name, int namelen);
/* prng.c */
-void ll_generate_random_uuid(class_uuid_t uuid_out);
+#define ll_generate_random_uuid(uuid_out) cfs_get_random_bytes(uuid_out, sizeof(class_uuid_t))
#endif /* __LINUX_OBD_CLASS_H */