X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosp%2Fosp_internal.h;h=c32356ba53a3cf91c55f292df5585af08b2be747;hb=1ccdab699584306383dc21ff2c0f48bce70f6660;hp=6b95a78171c8ee6bb61de5484fd87e13eed3f35b;hpb=57070c9a3ab4c5c17bb06c942fc0d4a2e5519e1b;p=fs%2Flustre-release.git diff --git a/lustre/osp/osp_internal.h b/lustre/osp/osp_internal.h index 6b95a78..c32356b 100644 --- a/lustre/osp/osp_internal.h +++ b/lustre/osp/osp_internal.h @@ -68,6 +68,10 @@ struct osp_device { struct dt_device opd_dt_dev; /* corresponded OST index */ int opd_index; + + /* corrsponded MDT index, which will be used when connecting to OST + * for validating the connection (see ofd_parse_connect_data) */ + int opd_group; /* device used to store persistent state (llogs, last ids) */ struct obd_export *opd_storage_exp; struct dt_device *opd_storage; @@ -93,7 +97,7 @@ struct osp_device { int opd_got_disconnected; int opd_imp_connected; int opd_imp_active; - int opd_imp_seen_connected:1, + unsigned int opd_imp_seen_connected:1, opd_connect_mdt:1; /* whether local recovery is completed: @@ -180,14 +184,21 @@ extern cfs_mem_cache_t *osp_object_kmem; /* this is a top object */ struct osp_object { - struct lu_object_header opo_header; - struct dt_object opo_obj; - int opo_reserved:1, - opo_new:1; + struct lu_object_header opo_header; + struct dt_object opo_obj; + unsigned int opo_reserved:1, + opo_new:1, + opo_empty:1; + + /* read/write lock for md osp object */ + struct rw_semaphore opo_sem; + const struct lu_env *opo_owner; }; extern struct lu_object_operations osp_lu_obj_ops; extern const struct dt_device_operations osp_dt_ops; +extern struct dt_object_operations osp_md_obj_ops; +extern struct dt_lock_operations osp_md_lock_ops; struct osp_thread_info { struct lu_buf osi_lb; @@ -207,6 +218,8 @@ struct osp_thread_info { struct llog_cookie osi_cookie; struct llog_catid osi_cid; struct lu_seq_range osi_seq; + struct ldlm_res_id osi_resid; + struct obdo osi_obdo; }; static inline void osp_objid_buf_prep(struct lu_buf *buf, loff_t *off, @@ -378,6 +391,10 @@ static inline int osp_is_fid_client(struct osp_device *osp) void osp_update_last_id(struct osp_device *d, obd_id objid); extern struct llog_operations osp_mds_ost_orig_logops; +/* osp_md_object.c */ +int osp_trans_start(const struct lu_env *env, struct dt_device *dt, + struct thandle *th); +int osp_trans_stop(const struct lu_env *env, struct thandle *th); /* osp_precreate.c */ int osp_init_precreate(struct osp_device *d); int osp_precreate_reserve(const struct lu_env *env, struct osp_device *d); @@ -406,10 +423,9 @@ int osp_sync_init(const struct lu_env *env, struct osp_device *d); int osp_sync_fini(struct osp_device *d); void __osp_sync_check_for_work(struct osp_device *d); -/* osp_ost.c */ -int osp_init_for_ost(const struct lu_env *env, struct osp_device *m, - struct lu_device_type *ldt, struct lustre_cfg *cfg); -int osp_disconnect(struct osp_device *d); -int osp_fini_for_ost(struct osp_device *osp); +/* lwp_dev.c */ +void lprocfs_lwp_init_vars(struct lprocfs_static_vars *lvars); +extern struct obd_ops lwp_obd_device_ops; +extern struct lu_device_type lwp_device_type; #endif