X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre_export.h;h=f6e136afad37886ca8dd8b11095c6fe9c514a6cd;hp=a1271ff99792c4a1d2b39a2e4e2286f3ef2576bf;hb=5315db3f1066619d6effe4f778d2df3ad1ba738f;hpb=21e39775a0f4f8d7819a49c37b59379a1181f52a diff --git a/lustre/include/lustre_export.h b/lustre/include/lustre_export.h index a1271ff9..f6e136a 100644 --- a/lustre/include/lustre_export.h +++ b/lustre/include/lustre_export.h @@ -42,6 +42,9 @@ * @{ */ +#include +#include + #include #include #include @@ -99,6 +102,13 @@ struct tg_export_data { long ted_grant; /* in bytes */ long ted_pending; /* bytes just being written */ __u8 ted_pagebits; /* log2 of client page size */ + + /** + * File Modification Data (FMD) tracking + */ + spinlock_t ted_fmd_lock; /* protects ted_fmd_list */ + struct list_head ted_fmd_list; /* FIDs being modified */ + int ted_fmd_count;/* items in ted_fmd_list */ }; /** @@ -119,13 +129,10 @@ struct ec_export_data { /* echo client */ /** Filter (oss-side) specific import data */ struct filter_export_data { struct tg_export_data fed_ted; - spinlock_t fed_lock; /**< protects fed_mod_list */ __u64 fed_lastid_gen; - struct list_head fed_mod_list; /* files being modified */ /* count of SOFT_SYNC RPCs, which will be reset after * ofd_soft_sync_limit number of RPCs, and trigger a sync. */ atomic_t fed_soft_sync_count; - int fed_mod_count;/* items in fed_writing list */ __u32 fed_group; }; @@ -182,12 +189,11 @@ struct obd_export { * what export they are talking to. */ struct portals_handle exp_handle; - atomic_t exp_refcount; /** * Set of counters below is to track where export references are * kept. The exp_rpc_count is used for reconnect handling also, * the cb_count and locks_count are for debug purposes only for now. - * The sum of them should be less than exp_refcount by 3 + * The sum of them should be less than exp_handle.href by 3 */ atomic_t exp_rpc_count; /* RPC references */ atomic_t exp_cb_count; /* Commit callback references */ @@ -202,9 +208,11 @@ struct obd_export { struct obd_uuid exp_client_uuid; /** To link all exports on an obd device */ struct list_head exp_obd_chain; + /** work_struct for destruction of export */ + struct work_struct exp_zombie_work; /* Unlinked export list */ struct list_head exp_stale_list; - struct hlist_node exp_uuid_hash; /** uuid-export hash*/ + struct rhash_head exp_uuid_hash; /** uuid-export hash */ struct hlist_node exp_nid_hash; /** nid-export hash */ struct hlist_node exp_gen_hash; /** last_rcvd clt gen hash */ /** @@ -269,7 +277,9 @@ struct obd_export { exp_need_mne_swab:1, /* The export already got final replay ping * request. */ - exp_replay_done:1; + exp_replay_done:1, + /* local client with recovery disabled */ + exp_no_recovery:1; /* also protected by exp_lock */ enum lustre_sec_part exp_sp_peer; struct sptlrpc_flavor exp_flvr; /* current */ @@ -299,7 +309,8 @@ struct obd_export { /** highest XID received by export client that has no * unreceived lower-numbered XID */ - __u64 exp_last_xid; + __u64 exp_last_xid; + long *exp_used_slots; }; #define exp_target_data u.eu_target_data @@ -431,14 +442,14 @@ static inline int exp_connect_large_acl(struct obd_export *exp) return !!(exp_connect_flags(exp) & OBD_CONNECT_LARGE_ACL); } -static inline int exp_connect_lockahead_old(struct obd_export *exp) +static inline int exp_connect_lockahead(struct obd_export *exp) { - return !!(exp_connect_flags(exp) & OBD_CONNECT_LOCKAHEAD_OLD); + return !!(exp_connect_flags2(exp) & OBD_CONNECT2_LOCKAHEAD); } -static inline int exp_connect_lockahead(struct obd_export *exp) +static inline int exp_connect_overstriping(struct obd_export *exp) { - return !!(exp_connect_flags2(exp) & OBD_CONNECT2_LOCKAHEAD); + return !!(exp_connect_flags2(exp) & OBD_CONNECT2_OVERSTRIPING); } static inline int exp_connect_flr(struct obd_export *exp) @@ -446,13 +457,35 @@ static inline int exp_connect_flr(struct obd_export *exp) return !!(exp_connect_flags2(exp) & OBD_CONNECT2_FLR); } +static inline int exp_connect_lock_convert(struct obd_export *exp) +{ + return !!(exp_connect_flags2(exp) & OBD_CONNECT2_LOCK_CONVERT); +} + extern struct obd_export *class_conn2export(struct lustre_handle *conn); -extern struct obd_device *class_conn2obd(struct lustre_handle *conn); -#define KKUC_CT_DATA_MAGIC 0x092013cea +static inline int exp_connect_archive_id_array(struct obd_export *exp) +{ + return !!(exp_connect_flags2(exp) & OBD_CONNECT2_ARCHIVE_ID_ARRAY); +} + +static inline int exp_connect_sepol(struct obd_export *exp) +{ + return !!(exp_connect_flags2(exp) & OBD_CONNECT2_SELINUX_POLICY); +} + +enum { + /* archive_ids in array format */ + KKUC_CT_DATA_ARRAY_MAGIC = 0x092013cea, + /* archive_ids in bitmap format */ + KKUC_CT_DATA_BITMAP_MAGIC = 0x082018cea, +}; + + struct kkuc_ct_data { __u32 kcd_magic; - __u32 kcd_archive; + __u32 kcd_nr_archives; + __u32 kcd_archives[0]; }; /** @} export */