X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Fobd_class.h;h=71635822b1bf0df2b81c44de9e1cc11666336807;hb=8cad1d968ad4efee46d08aee1e6a6266d4713e84;hp=f86dca80653b0420d5b949c106533b6385c1949b;hpb=56cc9aeb7151f908ab9cac034ceaf11098bac6a4;p=fs%2Flustre-release.git diff --git a/lustre/include/obd_class.h b/lustre/include/obd_class.h index f86dca8..7163582 100644 --- a/lustre/include/obd_class.h +++ b/lustre/include/obd_class.h @@ -26,7 +26,7 @@ * 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. */ /* @@ -103,7 +103,6 @@ void obd_zombie_impexp_stop(void); void obd_zombie_impexp_cull(void); void obd_zombie_barrier(void); void obd_exports_barrier(struct obd_device *obd); - /* obd_config.c */ int class_process_config(struct lustre_cfg *lcfg); int class_process_proc_param(char *prefix, struct lprocfs_vars *lvars, @@ -157,6 +156,7 @@ struct config_llog_data { 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 */ @@ -272,6 +272,18 @@ static inline enum obd_option exp_flags_from_obd(struct obd_device *obd) 0); } +static inline struct lu_target *class_exp2tgt(struct obd_export *exp) +{ + LASSERT(exp->exp_obd); + return exp->exp_obd->u.obt.obt_lut; +} + +static inline struct lr_server_data *class_server_data(struct obd_device *obd) +{ + LASSERT(obd->u.obt.obt_lut); + return &obd->u.obt.obt_lut->lut_lsd; +} + void obdo_cpy_md(struct obdo *dst, struct obdo *src, obd_flag valid); void obdo_to_ioobj(struct obdo *oa, struct obd_ioobj *ioobj); void obdo_from_iattr(struct obdo *oa, struct iattr *attr, @@ -370,6 +382,19 @@ do { \ #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)) { \ @@ -877,6 +902,11 @@ static inline struct obd_uuid *obd_get_uuid(struct obd_export *exp) 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, @@ -1229,6 +1259,20 @@ static inline int obd_sync(struct obd_export *exp, struct obdo *oa, 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) @@ -1411,6 +1455,20 @@ static inline int obd_change_cbdata(struct obd_export *exp, 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) @@ -1427,7 +1485,8 @@ static inline int obd_cancel(struct obd_export *exp, 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; @@ -1581,7 +1640,8 @@ static inline int obd_quotactl(struct obd_export *exp, 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; @@ -1598,7 +1658,7 @@ static inline int obd_quota_adjust_qunit(struct obd_export *exp, 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) { @@ -1741,16 +1801,14 @@ static inline int md_getstatus(struct obd_export *exp, RETURN(rc); } -static inline int md_getattr(struct obd_export *exp, const struct lu_fid *fid, - struct obd_capa *oc, obd_valid valid, int ea_size, +static inline int md_getattr(struct obd_export *exp, struct md_op_data *op_data, struct ptlrpc_request **request) { int rc; ENTRY; EXP_CHECK_MD_OP(exp, getattr); EXP_MD_COUNTER_INCREMENT(exp, getattr); - rc = MDP(exp->exp_obd, getattr)(exp, fid, oc, valid, - ea_size, request); + rc = MDP(exp->exp_obd, getattr)(exp, op_data, request); RETURN(rc); } @@ -1766,6 +1824,18 @@ static inline int md_change_cbdata(struct obd_export *exp, 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) @@ -1823,17 +1893,14 @@ static inline int md_enqueue(struct obd_export *exp, } static inline int md_getattr_name(struct obd_export *exp, - const struct lu_fid *fid, struct obd_capa *oc, - const char *name, int namelen, - obd_valid valid, int ea_size, __u32 suppgid, + struct md_op_data *op_data, struct ptlrpc_request **request) { int rc; ENTRY; EXP_CHECK_MD_OP(exp, getattr_name); EXP_MD_COUNTER_INCREMENT(exp, getattr_name); - rc = MDP(exp->exp_obd, getattr_name)(exp, fid, oc, name, namelen, - valid, ea_size, suppgid, request); + rc = MDP(exp->exp_obd, getattr_name)(exp, op_data, request); RETURN(rc); } @@ -2022,7 +2089,9 @@ static inline int md_set_lock_data(struct obd_export *exp, 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; @@ -2109,13 +2178,13 @@ static inline int md_intent_getattr_async(struct obd_export *exp, 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); } @@ -2130,7 +2199,7 @@ extern cfs_mem_cache_t *obdo_cachep; #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) \ @@ -2175,6 +2244,6 @@ int mea_name2idx(struct lmv_stripe_md *mea, const char *name, int namelen); 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 */