X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_export.h;h=6bd4bdfa51f53123d8345efd9b60e0a2a8dcdbf6;hb=ff0c89a73e141ce019ee2a94e5d01a8a37dd830a;hp=629a63547624962514db669939c601cae3e92d6a;hpb=f95393b0d0a59cf3dc2f29cffc35dcc4cc9d7728;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_export.h b/lustre/include/lustre_export.h index 629a635..6bd4bdf 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,13 @@ 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; + /** Lock protecting access to exp_flock_wait_list */ + cfs_rwlock_t exp_flock_wait_lock; + /** + * Wait queue for Posix lock deadlock detection, added with + * ldlm_lock::l_flock_waitq. + */ + cfs_list_t exp_flock_wait_list; cfs_list_t exp_outstanding_replies; cfs_list_t exp_uncommitted_replies; cfs_spinlock_t exp_uncommitted_replies_lock; @@ -239,19 +250,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; };