X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flinux%2Flustre_export.h;h=b949fe1eaa7e81395ac81fba3a35d23b58ddaa2f;hp=6b00876564120001acc3361b3c7f0827e256c7cc;hb=30c3a18963d1d6d70175fbbbdd9554e1eb2fa40d;hpb=37391a643dffc94f92e7e502f0d5f410d9a098d6 diff --git a/lustre/include/linux/lustre_export.h b/lustre/include/linux/lustre_export.h index 6b00876..b949fe1 100644 --- a/lustre/include/linux/lustre_export.h +++ b/lustre/include/linux/lustre_export.h @@ -10,31 +10,88 @@ #ifndef __EXPORT_H #define __EXPORT_H -#ifdef __KERNEL__ - #include #include +struct mds_client_data; + +struct mds_export_data { + struct list_head med_open_head; + spinlock_t med_open_lock; + struct mds_client_data *med_mcd; + loff_t med_off; + int med_idx; +}; + +struct osc_creator { + spinlock_t oscc_lock; + struct list_head oscc_list; + struct obd_export *oscc_exp; + obd_id oscc_last_id;//last available pre-created object + obd_id oscc_next_id;// what object id to give out next + int oscc_initial_create_count; + int oscc_grow_count; + int oscc_kick_barrier; + struct osc_created *oscc_osccd; + struct obdo oscc_oa; + int oscc_flags; + wait_queue_head_t oscc_waitq; /* creating procs wait on this */ +}; + +struct osc_export_data { + struct osc_creator oed_oscc; +}; + +struct ldlm_export_data { + struct list_head led_held_locks; /* protected by namespace lock */ +}; + +struct ec_export_data { /* echo client */ + struct list_head eced_locks; +}; + +/* In-memory access to client data from OST struct */ +struct filter_client_data; +struct filter_export_data { + spinlock_t fed_lock; /* protects fed_open_head */ + struct filter_client_data *fed_fcd; + loff_t fed_lr_off; + int fed_lr_idx; + unsigned long fed_dirty; /* in bytes */ + unsigned long fed_grant; /* in bytes */ + unsigned long fed_pending; /* bytes just being written */ +}; + struct obd_export { - __u64 exp_cookie; - struct lustre_handle exp_impconnh; + struct portals_handle exp_handle; + atomic_t exp_refcount; + struct obd_uuid exp_client_uuid; struct list_head exp_obd_chain; - struct list_head exp_conn_chain; struct obd_device *exp_obd; + struct obd_import *exp_imp_reverse; /* to make rpc's backwards */ struct ptlrpc_connection *exp_connection; - struct mds_export_data exp_mds_data; + __u32 exp_conn_cnt; struct ldlm_export_data exp_ldlm_data; -#if NOTYET && 0 - struct ost_export_data exp_ost_data; -#endif - void *exp_data; /* device specific data */ - int exp_desclen; - char *exp_desc; - uuid_t exp_uuid; + struct ptlrpc_request *exp_outstanding_reply; + time_t exp_last_request_time; + spinlock_t exp_lock; /* protects flags int below */ + int exp_failed:1; + int exp_flags; + union { + struct mds_export_data eu_mds_data; + struct filter_export_data eu_filter_data; + struct ec_export_data eu_ec_data; + struct osc_export_data eu_osc_data; + } u; }; +#define exp_mds_data u.eu_mds_data +#define exp_lov_data u.eu_lov_data +#define exp_filter_data u.eu_filter_data +#define exp_osc_data u.eu_osc_data +#define exp_ec_data u.eu_ec_data + extern struct obd_export *class_conn2export(struct lustre_handle *conn); extern struct obd_device *class_conn2obd(struct lustre_handle *conn); -#endif /* __KERNEL__ */ #endif /* __EXPORT_H */