X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_export.h;h=ef0d64e4fa046286322d4c5ca18813f7a2056833;hb=ef75b59800d643e666d7c44c20287a8002e0a166;hp=f5ac2f14eec429424fb46ec0eb1bc39494a773a0;hpb=65701b4a30efdb695776bcf690a2b3cabc928da1;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_export.h b/lustre/include/lustre_export.h index f5ac2f1..ef0d64e 100644 --- a/lustre/include/lustre_export.h +++ b/lustre/include/lustre_export.h @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -62,7 +60,7 @@ struct mdt_idmap_table; */ struct tg_export_data { /** Protects led_lcd below */ - cfs_semaphore_t ted_lcd_lock; + cfs_mutex_t ted_lcd_lock; /** Per-client data for each export */ struct lsd_client_data *ted_lcd; /** Offset of record in last_rcvd file */ @@ -81,26 +79,10 @@ struct mdt_export_data { cfs_spinlock_t med_open_lock; /* lock med_open_head, mfd_list*/ /** Bitmask of all ibit locks this MDT understands */ __u64 med_ibits_known; - cfs_semaphore_t med_idmap_sem; + cfs_mutex_t med_idmap_mutex; struct lustre_idmap_table *med_idmap; }; -struct osc_creator { - cfs_spinlock_t oscc_lock; - cfs_list_t oscc_wait_create_list; - struct obd_device *oscc_obd; - obd_id oscc_last_id;//last available pre-created object - obd_id oscc_next_id;// what object id to give out next - int oscc_grow_count; - /** - * Limit oscc_grow_count value, can be changed via proc fs - */ - int oscc_max_grow_count; - struct obdo oscc_oa; - int oscc_flags; - cfs_waitq_t oscc_waitq; /* creating procs wait on this */ -}; - struct ec_export_data { /* echo client */ cfs_list_t eced_locks; }; @@ -116,6 +98,7 @@ struct filter_export_data { int fed_mod_count;/* items in fed_writing list */ long fed_pending; /* bytes just being written */ __u32 fed_group; + __u8 fed_pagesize; /* log2 of client page size */ }; struct mgs_export_data { @@ -181,13 +164,13 @@ struct obd_export { */ cfs_atomic_t exp_rpc_count; /* RPC references */ cfs_atomic_t exp_cb_count; /* Commit callback references */ + /** Number of queued replay requests to be processes */ + cfs_atomic_t exp_replay_count; cfs_atomic_t exp_locks_count; /** Lock references */ #if LUSTRE_TRACKS_LOCK_EXP_REFS cfs_list_t exp_locks_list; cfs_spinlock_t exp_locks_list_guard; #endif - /** Number of queued replay requests to be processes */ - cfs_atomic_t exp_replay_count; /** UUID of client connected to this export */ struct obd_uuid exp_client_uuid; /** To link all exports on an obd device */ @@ -203,7 +186,10 @@ struct obd_export { cfs_list_t exp_obd_chain_timed; /** Obd device of this export */ struct obd_device *exp_obd; - /** "reverse" import to send requests (e.g. from ldlm) back to client */ + /** + * "reverse" import to send requests (e.g. from ldlm) back to client + * exp_lock protect its change + */ struct obd_import *exp_imp_reverse; struct nid_stat *exp_nid_stats; struct lprocfs_stats *exp_md_stats; @@ -213,8 +199,11 @@ struct obd_export { __u32 exp_conn_cnt; /** Hash list of all ldlm locks granted on this export */ cfs_hash_t *exp_lock_hash; - /** lock to protect exp_lock_hash accesses */ - cfs_spinlock_t exp_lock_hash_lock; + /** + * Hash list for Posix lock deadlock detection, added with + * ldlm_lock::l_exp_flock_hash. + */ + cfs_hash_t *exp_flock_hash; cfs_list_t exp_outstanding_replies; cfs_list_t exp_uncommitted_replies; cfs_spinlock_t exp_uncommitted_replies_lock; @@ -224,7 +213,10 @@ struct obd_export { cfs_time_t exp_last_request_time; /** On replay all requests waiting for replay are linked here */ cfs_list_t exp_req_replay_queue; - /** protects exp_flags and exp_outstanding_replies */ + /** + * protects exp_flags, exp_outstanding_replies and the change + * of exp_imp_reverse + */ cfs_spinlock_t exp_lock; /** Compatibility flags for this export */ __u64 exp_connect_flags; @@ -245,7 +237,10 @@ struct obd_export { exp_libclient:1, /* liblustre client? */ /* client timed out and tried to reconnect, * but couldn't because of active rpcs */ - exp_abort_active_req:1; + exp_abort_active_req:1, + /* if to swap nidtbl entries for 2.2 clients. + * Only used by the MGS to fix LU-1644. */ + exp_need_mne_swab:1; /* also protected by exp_lock */ enum lustre_sec_part exp_sp_peer; struct sptlrpc_flavor exp_flvr; /* current */ @@ -321,6 +316,11 @@ static inline int exp_connect_som(struct obd_export *exp) return !!(exp->exp_connect_flags & OBD_CONNECT_SOM); } +static inline int exp_connect_umask(struct obd_export *exp) +{ + return !!(exp->exp_connect_flags & OBD_CONNECT_UMASK); +} + static inline int imp_connect_lru_resize(struct obd_import *imp) { struct obd_connect_data *ocd;