X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Fobd_class.h;h=2692599c00919da01ea11a12823fccb2eecfd1a2;hp=378ab308448f4edcfd615916314b79de964e9b0b;hb=8d161d44214f907a9f2d9cf5a79cd2c83de995c3;hpb=a7d738b4778da34c35a19ff447f18d46ff02057a diff --git a/lustre/include/obd_class.h b/lustre/include/obd_class.h index 378ab30..2692599 100644 --- a/lustre/include/obd_class.h +++ b/lustre/include/obd_class.h @@ -86,9 +86,12 @@ struct lu_device_type; /* genops.c */ struct obd_export *class_conn2export(struct lustre_handle *); -int class_register_type(struct obd_ops *, struct md_ops *, - struct lprocfs_vars *, const char *nm, - struct lu_device_type *ldt); +int class_register_type(struct obd_ops *, struct md_ops *, bool enable_proc, + struct lprocfs_seq_vars *module_vars, +#ifndef HAVE_ONLY_PROCFS_SEQ + struct lprocfs_vars *, +#endif + const char *nm, struct lu_device_type *ldt); int class_unregister_type(const char *nm); struct obd_device *class_newdev(const char *type_name, const char *name); @@ -125,6 +128,10 @@ struct kuc_hdr * kuc_ptr(void *p); int kuc_ispayload(void *p); void *kuc_alloc(int payload_len, int transport, int type); void kuc_free(void *p, int payload_len); +int obd_get_request_slot(struct client_obd *cli); +void obd_put_request_slot(struct client_obd *cli); +__u32 obd_get_max_rpcs_in_flight(struct client_obd *cli); +int obd_set_max_rpcs_in_flight(struct client_obd *cli, __u32 max); struct llog_handle; struct llog_rec_hdr; @@ -134,8 +141,12 @@ typedef int (*llog_cb_t)(const struct lu_env *, struct llog_handle *, struct lustre_cfg *lustre_cfg_rename(struct lustre_cfg *cfg, const char *new_name); int class_process_config(struct lustre_cfg *lcfg); +#ifndef HAVE_ONLY_PROCFS_SEQ int class_process_proc_param(char *prefix, struct lprocfs_vars *lvars, struct lustre_cfg *lcfg, void *data); +#endif +int class_process_proc_seq_param(char *prefix, struct lprocfs_seq_vars *lvars, + struct lustre_cfg *lcfg, void *data); int class_attach(struct lustre_cfg *lcfg); int class_setup(struct obd_device *obd, struct lustre_cfg *lcfg); int class_cleanup(struct obd_device *obd, struct lustre_cfg *lcfg); @@ -151,16 +162,6 @@ int class_config_llog_handler(const struct lu_env *env, int class_add_conn(struct obd_device *obd, struct lustre_cfg *lcfg); int class_add_uuid(const char *uuid, __u64 nid); -/*obdecho*/ -#ifdef LPROCFS -extern void lprocfs_echo_init_vars(struct lprocfs_static_vars *lvars); -#else -static inline void lprocfs_echo_init_vars(struct lprocfs_static_vars *lvars) -{ - memset(lvars, 0, sizeof(*lvars)); -} -#endif - #define CFG_F_START 0x01 /* Set when we start updating from a log */ #define CFG_F_MARKER 0x02 /* We are within a maker */ #define CFG_F_SKIP 0x04 /* We should ignore this cfg command */ @@ -169,13 +170,14 @@ static inline void lprocfs_echo_init_vars(struct lprocfs_static_vars *lvars) /* Passed as data param to class_config_parse_llog */ struct config_llog_instance { - char *cfg_obdname; - void *cfg_instance; - struct super_block *cfg_sb; - struct obd_uuid cfg_uuid; - llog_cb_t cfg_callback; - int cfg_last_idx; /* for partial llog processing */ - int cfg_flags; + char *cfg_obdname; + void *cfg_instance; + struct super_block *cfg_sb; + struct obd_uuid cfg_uuid; + llog_cb_t cfg_callback; + int cfg_last_idx; /* for partial llog processing */ + int cfg_flags; + __u32 cfg_lwp_idx; }; int class_config_parse_llog(const struct lu_env *env, struct llog_ctxt *ctxt, char *name, struct config_llog_instance *cfg); @@ -198,7 +200,7 @@ struct config_llog_data { struct ldlm_res_id cld_resid; struct config_llog_instance cld_cfg; cfs_list_t cld_list_chain; - cfs_atomic_t cld_refcount; + atomic_t cld_refcount; struct config_llog_data *cld_sptlrpc;/* depended sptlrpc log */ struct config_llog_data *cld_params; /* common parameters log */ struct config_llog_data *cld_recover;/* imperative recover log */ @@ -237,53 +239,53 @@ extern void (*class_export_dump_hook)(struct obd_export *); #define class_export_rpc_inc(exp) \ ({ \ - cfs_atomic_inc(&(exp)->exp_rpc_count); \ - CDEBUG(D_INFO, "RPC GETting export %p : new rpc_count %d\n", \ - (exp), cfs_atomic_read(&(exp)->exp_rpc_count)); \ + atomic_inc(&(exp)->exp_rpc_count); \ + CDEBUG(D_INFO, "RPC GETting export %p : new rpc_count %d\n", \ + (exp), atomic_read(&(exp)->exp_rpc_count)); \ }) #define class_export_rpc_dec(exp) \ ({ \ - LASSERT_ATOMIC_POS(&exp->exp_rpc_count); \ - cfs_atomic_dec(&(exp)->exp_rpc_count); \ - CDEBUG(D_INFO, "RPC PUTting export %p : new rpc_count %d\n", \ - (exp), cfs_atomic_read(&(exp)->exp_rpc_count)); \ + LASSERT_ATOMIC_POS(&exp->exp_rpc_count); \ + atomic_dec(&(exp)->exp_rpc_count); \ + CDEBUG(D_INFO, "RPC PUTting export %p : new rpc_count %d\n", \ + (exp), atomic_read(&(exp)->exp_rpc_count)); \ }) #define class_export_lock_get(exp, lock) \ ({ \ - cfs_atomic_inc(&(exp)->exp_locks_count); \ - __class_export_add_lock_ref(exp, lock); \ - CDEBUG(D_INFO, "lock GETting export %p : new locks_count %d\n", \ - (exp), cfs_atomic_read(&(exp)->exp_locks_count)); \ - class_export_get(exp); \ + atomic_inc(&(exp)->exp_locks_count); \ + __class_export_add_lock_ref(exp, lock); \ + CDEBUG(D_INFO, "lock GETting export %p : new locks_count %d\n", \ + (exp), atomic_read(&(exp)->exp_locks_count)); \ + class_export_get(exp); \ }) #define class_export_lock_put(exp, lock) \ ({ \ - LASSERT_ATOMIC_POS(&exp->exp_locks_count); \ - cfs_atomic_dec(&(exp)->exp_locks_count); \ - __class_export_del_lock_ref(exp, lock); \ - CDEBUG(D_INFO, "lock PUTting export %p : new locks_count %d\n", \ - (exp), cfs_atomic_read(&(exp)->exp_locks_count)); \ - class_export_put(exp); \ + LASSERT_ATOMIC_POS(&exp->exp_locks_count); \ + atomic_dec(&(exp)->exp_locks_count); \ + __class_export_del_lock_ref(exp, lock); \ + CDEBUG(D_INFO, "lock PUTting export %p : new locks_count %d\n", \ + (exp), atomic_read(&(exp)->exp_locks_count)); \ + class_export_put(exp); \ }) #define class_export_cb_get(exp) \ ({ \ - cfs_atomic_inc(&(exp)->exp_cb_count); \ - CDEBUG(D_INFO, "callback GETting export %p : new cb_count %d\n",\ - (exp), cfs_atomic_read(&(exp)->exp_cb_count)); \ - class_export_get(exp); \ + atomic_inc(&(exp)->exp_cb_count); \ + CDEBUG(D_INFO, "callback GETting export %p : new cb_count %d\n",\ + (exp), atomic_read(&(exp)->exp_cb_count)); \ + class_export_get(exp); \ }) #define class_export_cb_put(exp) \ ({ \ - LASSERT_ATOMIC_POS(&exp->exp_cb_count); \ - cfs_atomic_dec(&(exp)->exp_cb_count); \ - CDEBUG(D_INFO, "callback PUTting export %p : new cb_count %d\n",\ - (exp), cfs_atomic_read(&(exp)->exp_cb_count)); \ - class_export_put(exp); \ + LASSERT_ATOMIC_POS(&exp->exp_cb_count); \ + atomic_dec(&(exp)->exp_cb_count); \ + CDEBUG(D_INFO, "callback PUTting export %p : new cb_count %d\n",\ + (exp), atomic_read(&(exp)->exp_cb_count)); \ + class_export_put(exp); \ }) /* genops.c */ @@ -341,9 +343,6 @@ void md_from_obdo(struct md_op_data *op_data, struct obdo *oa, obd_flag valid); void obdo_from_md(struct obdo *oa, struct md_op_data *op_data, unsigned int valid); -void obdo_cpu_to_le(struct obdo *dobdo, struct obdo *sobdo); -void obdo_le_to_cpu(struct obdo *dobdo, struct obdo *sobdo); - #define OBT(dev) (dev)->obd_type #define OBP(dev, op) (dev)->obd_type->typ_dt_ops->o_ ## op #define MDP(dev, op) (dev)->obd_type->typ_md_ops->m_ ## op @@ -565,7 +564,7 @@ static inline int obd_setup(struct obd_device *obd, struct lustre_cfg *cfg) if (ldt != NULL) { struct lu_context session_ctx; struct lu_env env; - lu_context_init(&session_ctx, LCT_SESSION); + lu_context_init(&session_ctx, LCT_SESSION | LCT_SERVER_SESSION); session_ctx.lc_thread = NULL; lu_context_enter(&session_ctx); @@ -729,15 +728,6 @@ static inline int obd_size_diskmd(struct obd_export *exp, return obd_packmd(exp, NULL, mem_src); } -/* helper functions */ -static inline int obd_alloc_diskmd(struct obd_export *exp, - struct lov_mds_md **disk_tgt) -{ - LASSERT(disk_tgt); - LASSERT(*disk_tgt == NULL); - return obd_packmd(exp, disk_tgt, NULL); -} - static inline int obd_free_diskmd(struct obd_export *exp, struct lov_mds_md **disk_tgt) { @@ -799,18 +789,6 @@ static inline int obd_free_memmd(struct obd_export *exp, return rc; } -static inline int obd_precreate(struct obd_export *exp) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, precreate); - OBD_COUNTER_INCREMENT(exp->exp_obd, precreate); - - rc = OBP(exp->exp_obd, precreate)(exp); - RETURN(rc); -} - static inline int obd_create_async(struct obd_export *exp, struct obd_info *oinfo, struct lov_stripe_md **ea, @@ -1065,18 +1043,19 @@ static inline int obd_fid_fini(struct obd_device *obd) RETURN(rc); } -static inline int obd_fid_alloc(struct obd_export *exp, +static inline int obd_fid_alloc(const struct lu_env *env, + struct obd_export *exp, struct lu_fid *fid, struct md_op_data *op_data) { - int rc; - ENTRY; + int rc; + ENTRY; - EXP_CHECK_DT_OP(exp, fid_alloc); - EXP_COUNTER_INCREMENT(exp, fid_alloc); + EXP_CHECK_DT_OP(exp, fid_alloc); + EXP_COUNTER_INCREMENT(exp, fid_alloc); - rc = OBP(exp->exp_obd, fid_alloc)(exp, fid, op_data); - RETURN(rc); + rc = OBP(exp->exp_obd, fid_alloc)(env, exp, fid, op_data); + RETURN(rc); } static inline int obd_ping(const struct lu_env *env, struct obd_export *exp) @@ -1179,17 +1158,6 @@ static inline int obd_destroy_export(struct obd_export *exp) RETURN(0); } -static inline int obd_extent_calc(struct obd_export *exp, - struct lov_stripe_md *md, - int cmd, obd_off *offset) -{ - int rc; - ENTRY; - EXP_CHECK_DT_OP(exp, extent_calc); - rc = OBP(exp->exp_obd, extent_calc)(exp, md, cmd, offset); - RETURN(rc); -} - /* @max_age is the oldest time in jiffies that we accept using a cached data. * If the cache is older than @max_age we will get a new value from the * target. Use a value of "cfs_time_current() + HZ" to guarantee freshness. */ @@ -1291,97 +1259,6 @@ static inline int obd_statfs(const struct lu_env *env, struct obd_export *exp, RETURN(rc); } -static inline int obd_sync_rqset(struct obd_export *exp, struct obd_info *oinfo, - obd_size start, obd_size end) -{ - struct ptlrpc_request_set *set = NULL; - int rc; - ENTRY; - - OBD_CHECK_DT_OP(exp->exp_obd, sync, -EOPNOTSUPP); - EXP_COUNTER_INCREMENT(exp, sync); - - set = ptlrpc_prep_set(); - if (set == NULL) - RETURN(-ENOMEM); - - rc = OBP(exp->exp_obd, sync)(NULL, exp, oinfo, start, end, set); - if (rc == 0) - rc = ptlrpc_set_wait(set); - ptlrpc_set_destroy(set); - RETURN(rc); -} - -static inline int obd_sync(const struct lu_env *env, struct obd_export *exp, - struct obd_info *oinfo, obd_size start, obd_size end, - struct ptlrpc_request_set *set) -{ - int rc; - ENTRY; - - OBD_CHECK_DT_OP(exp->exp_obd, sync, -EOPNOTSUPP); - EXP_COUNTER_INCREMENT(exp, sync); - - rc = OBP(exp->exp_obd, sync)(env, exp, oinfo, start, end, set); - RETURN(rc); -} - -static inline int obd_punch_rqset(struct obd_export *exp, - struct obd_info *oinfo, - struct obd_trans_info *oti) -{ - struct ptlrpc_request_set *set = NULL; - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, punch); - EXP_COUNTER_INCREMENT(exp, punch); - - set = ptlrpc_prep_set(); - if (set == NULL) - RETURN(-ENOMEM); - - rc = OBP(exp->exp_obd, punch)(NULL, exp, oinfo, oti, set); - if (rc == 0) - rc = ptlrpc_set_wait(set); - ptlrpc_set_destroy(set); - RETURN(rc); -} - -static inline int obd_punch(const struct lu_env *env, struct obd_export *exp, - struct obd_info *oinfo, struct obd_trans_info *oti, - struct ptlrpc_request_set *rqset) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, punch); - EXP_COUNTER_INCREMENT(exp, punch); - - rc = OBP(exp->exp_obd, punch)(env, exp, oinfo, oti, rqset); - RETURN(rc); -} - -static inline int obd_brw(int cmd, struct obd_export *exp, - struct obd_info *oinfo, obd_count oa_bufs, - struct brw_page *pg, struct obd_trans_info *oti) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, brw); - EXP_COUNTER_INCREMENT(exp, brw); - - if (!(cmd & (OBD_BRW_RWMASK | OBD_BRW_CHECK))) { - CERROR("obd_brw: cmd must be OBD_BRW_READ, OBD_BRW_WRITE, " - "or OBD_BRW_CHECK\n"); - LBUG(); - } - - rc = OBP(exp->exp_obd, brw)(cmd, exp, oinfo, oa_bufs, pg, oti); - RETURN(rc); -} - static inline int obd_preprw(const struct lu_env *env, int cmd, struct obd_export *exp, struct obdo *oa, int objcount, struct obd_ioobj *obj, @@ -1418,34 +1295,6 @@ static inline int obd_commitrw(const struct lu_env *env, int cmd, RETURN(rc); } -static inline int obd_merge_lvb(struct obd_export *exp, - struct lov_stripe_md *lsm, - struct ost_lvb *lvb, int kms_only) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, merge_lvb); - EXP_COUNTER_INCREMENT(exp, merge_lvb); - - rc = OBP(exp->exp_obd, merge_lvb)(exp, lsm, lvb, kms_only); - RETURN(rc); -} - -static inline int obd_adjust_kms(struct obd_export *exp, - struct lov_stripe_md *lsm, obd_off size, - int shrink) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, adjust_kms); - EXP_COUNTER_INCREMENT(exp, adjust_kms); - - rc = OBP(exp->exp_obd, adjust_kms)(exp, lsm, size, shrink); - RETURN(rc); -} - static inline int obd_iocontrol(unsigned int cmd, struct obd_export *exp, int len, void *karg, void *uarg) { @@ -1459,43 +1308,6 @@ static inline int obd_iocontrol(unsigned int cmd, struct obd_export *exp, RETURN(rc); } -static inline int obd_enqueue_rqset(struct obd_export *exp, - struct obd_info *oinfo, - struct ldlm_enqueue_info *einfo) -{ - struct ptlrpc_request_set *set = NULL; - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, enqueue); - EXP_COUNTER_INCREMENT(exp, enqueue); - - set = ptlrpc_prep_set(); - if (set == NULL) - RETURN(-ENOMEM); - - rc = OBP(exp->exp_obd, enqueue)(exp, oinfo, einfo, set); - if (rc == 0) - rc = ptlrpc_set_wait(set); - ptlrpc_set_destroy(set); - RETURN(rc); -} - -static inline int obd_enqueue(struct obd_export *exp, - struct obd_info *oinfo, - struct ldlm_enqueue_info *einfo, - struct ptlrpc_request_set *set) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, enqueue); - EXP_COUNTER_INCREMENT(exp, enqueue); - - rc = OBP(exp->exp_obd, enqueue)(exp, oinfo, einfo, set); - RETURN(rc); -} - static inline int obd_change_cbdata(struct obd_export *exp, struct lov_stripe_md *lsm, ldlm_iterator_t it, void *data) @@ -1524,35 +1336,6 @@ static inline int obd_find_cbdata(struct obd_export *exp, RETURN(rc); } -static inline int obd_cancel(struct obd_export *exp, - struct lov_stripe_md *ea, __u32 mode, - struct lustre_handle *lockh) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, cancel); - EXP_COUNTER_INCREMENT(exp, cancel); - - rc = OBP(exp->exp_obd, cancel)(exp, ea, mode, lockh); - RETURN(rc); -} - -static inline int obd_cancel_unused(struct obd_export *exp, - struct lov_stripe_md *ea, - ldlm_cancel_flags_t flags, - void *opaque) -{ - int rc; - ENTRY; - - EXP_CHECK_DT_OP(exp, cancel_unused); - EXP_COUNTER_INCREMENT(exp, cancel_unused); - - rc = OBP(exp->exp_obd, cancel_unused)(exp, ea, flags, opaque); - RETURN(rc); -} - static inline int obd_pin(struct obd_export *exp, const struct lu_fid *fid, struct obd_capa *oc, struct obd_client_handle *handle, int flag) @@ -1898,19 +1681,18 @@ static inline int md_done_writing(struct obd_export *exp, static inline int md_enqueue(struct obd_export *exp, struct ldlm_enqueue_info *einfo, + const union ldlm_policy_data *policy, struct lookup_intent *it, struct md_op_data *op_data, struct lustre_handle *lockh, - void *lmm, int lmmsize, - struct ptlrpc_request **req, __u64 extra_lock_flags) { - int rc; - ENTRY; - EXP_CHECK_MD_OP(exp, enqueue); - EXP_MD_COUNTER_INCREMENT(exp, enqueue); - rc = MDP(exp->exp_obd, enqueue)(exp, einfo, it, op_data, lockh, - lmm, lmmsize, req, extra_lock_flags); + int rc; + ENTRY; + EXP_CHECK_MD_OP(exp, enqueue); + EXP_MD_COUNTER_INCREMENT(exp, enqueue); + rc = MDP(exp->exp_obd, enqueue)(exp, einfo, policy, it, op_data, lockh, + extra_lock_flags); RETURN(rc); } @@ -1927,20 +1709,19 @@ static inline int md_getattr_name(struct obd_export *exp, } static inline int md_intent_lock(struct obd_export *exp, - struct md_op_data *op_data, void *lmm, - int lmmsize, struct lookup_intent *it, - int lookup_flags, struct ptlrpc_request **reqp, + struct md_op_data *op_data, + struct lookup_intent *it, + struct ptlrpc_request **reqp, ldlm_blocking_callback cb_blocking, __u64 extra_lock_flags) { - int rc; - ENTRY; - EXP_CHECK_MD_OP(exp, intent_lock); - EXP_MD_COUNTER_INCREMENT(exp, intent_lock); - rc = MDP(exp->exp_obd, intent_lock)(exp, op_data, lmm, lmmsize, - it, lookup_flags, reqp, cb_blocking, - extra_lock_flags); - RETURN(rc); + int rc; + ENTRY; + EXP_CHECK_MD_OP(exp, intent_lock); + EXP_MD_COUNTER_INCREMENT(exp, intent_lock); + rc = MDP(exp->exp_obd, intent_lock)(exp, op_data, it, reqp, cb_blocking, + extra_lock_flags); + RETURN(rc); } static inline int md_link(struct obd_export *exp, struct md_op_data *op_data, @@ -2017,6 +1798,20 @@ static inline int md_readpage(struct obd_export *exp, struct md_op_data *opdata, RETURN(rc); } +static inline int md_read_entry(struct obd_export *exp, + struct md_op_data *op_data, + struct md_callback *cb_op, + struct lu_dirent **ld, + struct page **ppage) +{ + int rc; + ENTRY; + EXP_CHECK_MD_OP(exp, read_entry); + EXP_MD_COUNTER_INCREMENT(exp, read_entry); + rc = MDP(exp->exp_obd, read_entry)(exp, op_data, cb_op, ld, ppage); + RETURN(rc); +} + static inline int md_unlink(struct obd_export *exp, struct md_op_data *op_data, struct ptlrpc_request **request) { @@ -2049,6 +1844,27 @@ static inline int md_free_lustre_md(struct obd_export *exp, RETURN(MDP(exp->exp_obd, free_lustre_md)(exp, md)); } +static inline int md_update_lsm_md(struct obd_export *exp, + struct lmv_stripe_md *lsm, + struct mdt_body *body, + ldlm_blocking_callback cb) +{ + ENTRY; + EXP_CHECK_MD_OP(exp, update_lsm_md); + EXP_MD_COUNTER_INCREMENT(exp, update_lsm_md); + RETURN(MDP(exp->exp_obd, update_lsm_md)(exp, lsm, body, cb)); +} + +static inline int md_merge_attr(struct obd_export *exp, + const struct lmv_stripe_md *lsm, + struct cl_attr *attr) +{ + ENTRY; + EXP_CHECK_MD_OP(exp, merge_attr); + EXP_MD_COUNTER_INCREMENT(exp, merge_attr); + RETURN(MDP(exp->exp_obd, merge_attr)(exp, lsm, attr)); +} + static inline int md_setxattr(struct obd_export *exp, const struct lu_fid *fid, struct obd_capa *oc, obd_valid valid, const char *name, @@ -2080,13 +1896,13 @@ static inline int md_getxattr(struct obd_export *exp, } static inline int md_set_open_replay_data(struct obd_export *exp, - struct obd_client_handle *och, - struct ptlrpc_request *open_req) + struct obd_client_handle *och, + struct lookup_intent *it) { - ENTRY; - EXP_CHECK_MD_OP(exp, set_open_replay_data); - EXP_MD_COUNTER_INCREMENT(exp, set_open_replay_data); - RETURN(MDP(exp->exp_obd, set_open_replay_data)(exp, och, open_req)); + ENTRY; + EXP_CHECK_MD_OP(exp, set_open_replay_data); + EXP_MD_COUNTER_INCREMENT(exp, set_open_replay_data); + RETURN(MDP(exp->exp_obd, set_open_replay_data)(exp, och, it)); } static inline int md_clear_open_replay_data(struct obd_export *exp, @@ -2140,13 +1956,14 @@ static inline ldlm_mode_t md_lock_match(struct obd_export *exp, __u64 flags, } static inline int md_init_ea_size(struct obd_export *exp, int easize, - int def_asize, int cookiesize) + int def_asize, int cookiesize, + int def_cookiesize) { - ENTRY; - EXP_CHECK_MD_OP(exp, init_ea_size); - EXP_MD_COUNTER_INCREMENT(exp, init_ea_size); - RETURN(MDP(exp->exp_obd, init_ea_size)(exp, easize, def_asize, - cookiesize)); + ENTRY; + EXP_CHECK_MD_OP(exp, init_ea_size); + EXP_MD_COUNTER_INCREMENT(exp, init_ea_size); + RETURN(MDP(exp->exp_obd, init_ea_size)(exp, easize, def_asize, + cookiesize, def_cookiesize)); } static inline int md_get_remote_perm(struct obd_export *exp, @@ -2220,7 +2037,7 @@ extern struct kmem_cache *obdo_cachep; #define OBDO_ALLOC(ptr) \ do { \ - OBD_SLAB_ALLOC_PTR_GFP((ptr), obdo_cachep, __GFP_IO); \ + OBD_SLAB_ALLOC_PTR_GFP((ptr), obdo_cachep, GFP_NOFS); \ } while(0) #define OBDO_FREE(ptr) \ @@ -2260,7 +2077,8 @@ extern int (*ptlrpc_put_connection_superhack)(struct ptlrpc_connection *c); int lustre_register_lwp_item(const char *lwpname, struct obd_export **exp, register_lwp_cb cb_func, void *cb_data); void lustre_deregister_lwp_item(struct obd_export **exp); -int tgt_name2lwpname(const char *tgt_name, char *lwp_name); +struct obd_export *lustre_find_lwp_by_index(const char *dev, __u32 idx); +int tgt_name2lwp_name(const char *tgt_name, char *lwp_name, int len, __u32 idx); #endif /* HAVE_SERVER_SUPPORT */ /* sysctl.c */ @@ -2279,11 +2097,22 @@ int class_check_uuid(struct obd_uuid *uuid, __u64 nid); void class_init_uuidlist(void); void class_exit_uuidlist(void); -/* mea.c */ -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 */ #define ll_generate_random_uuid(uuid_out) cfs_get_random_bytes(uuid_out, sizeof(class_uuid_t)) +/* root squash info */ +struct rw_semaphore; +struct root_squash_info { + uid_t rsi_uid; + gid_t rsi_gid; + struct list_head rsi_nosquash_nids; + struct rw_semaphore rsi_sem; +}; + +#ifdef __KERNEL__ +int server_name2index(const char *svname, __u32 *idx, const char **endptr); +#else +# define server_name2index(name, idx, ptr) do {} while (0) +#endif + #endif /* __LINUX_OBD_CLASS_H */