X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_export.h;h=a0740c71a606cdbbac357c1b14d6b2beb40ccf22;hb=88c5beb51d24423d31fbb1f41fa5f7ab501becd2;hp=f8ad0c335c65fa8ea0b03673284a85b0dec2710b;hpb=36e8719a5d9684f1e1883656d28e56612d10f757;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_export.h b/lustre/include/lustre_export.h index f8ad0c3..a0740c7 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. @@ -28,6 +26,8 @@ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2011, 2012, Whamcloud, Inc. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -60,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 */ @@ -79,7 +79,7 @@ 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; }; @@ -114,6 +114,12 @@ 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 { + cfs_list_t med_clients; /* mgc fs client via this exp */ + cfs_spinlock_t med_lock; /* protect med_clients */ }; /** @@ -174,13 +180,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 */ @@ -206,8 +212,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; @@ -219,8 +228,6 @@ struct obd_export { cfs_list_t exp_req_replay_queue; /** protects exp_flags and exp_outstanding_replies */ cfs_spinlock_t exp_lock; - /** protects exp_queued_rpc */ - cfs_spinlock_t exp_rpc_lock; /** Compatibility flags for this export */ __u64 exp_connect_flags; enum obd_option exp_flags; @@ -241,19 +248,27 @@ struct obd_export { /* client timed out and tried to reconnect, * but couldn't because of active rpcs */ exp_abort_active_req:1; - cfs_list_t exp_queued_rpc; /* RPC to be handled */ /* also protected by exp_lock */ enum lustre_sec_part exp_sp_peer; struct sptlrpc_flavor exp_flvr; /* current */ struct sptlrpc_flavor exp_flvr_old[2]; /* about-to-expire */ cfs_time_t exp_flvr_expire[2]; /* seconds */ + /** protects exp_hp_rpcs */ + cfs_spinlock_t exp_rpc_lock; + cfs_list_t exp_hp_rpcs; /* (potential) HP RPCs */ + + /** blocking dlm lock list, protected by exp_bl_list_lock */ + cfs_list_t exp_bl_list; + cfs_spinlock_t exp_bl_list_lock; + /** Target specific data */ union { struct tg_export_data eu_target_data; struct mdt_export_data eu_mdt_data; struct filter_export_data eu_filter_data; struct ec_export_data eu_ec_data; + struct mgs_export_data eu_mgs_data; } u; };