Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / include / lustre_export.h
index d730c6c..94033ef 100644 (file)
@@ -16,8 +16,8 @@
  * in the LICENSE file that accompanied this code).
  *
  * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see [sun.com URL with a
- * copy of GPLv2].
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
  *
  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  * CA 95054 USA or visit www.sun.com if you need additional information or
@@ -40,6 +40,7 @@
 #include <lustre/lustre_idl.h>
 #include <lustre_dlm.h>
 #include <lprocfs_status.h>
+#include <class_hash.h>
 
 /* Data stored per client in the last_rcvd file.  In le32 order. */
 struct mds_client_data;
@@ -55,7 +56,6 @@ struct mdt_export_data {
         __u64                   med_ibits_known;
         loff_t                  med_lr_off;
         int                     med_lr_idx;
-        unsigned int            med_rmtclient:1; /* remote client? */
         struct semaphore           med_idmap_sem;
         struct lustre_idmap_table *med_idmap;
 };
@@ -76,11 +76,6 @@ struct osc_creator {
         cfs_waitq_t             oscc_waitq; /* creating procs wait on this */
 };
 
-struct ldlm_export_data {
-        struct list_head       led_held_locks; /* protected by led_lock */
-        spinlock_t             led_lock;
-};
-
 struct ec_export_data { /* echo client */
         struct list_head eced_locks;
 };
@@ -100,13 +95,20 @@ struct filter_export_data {
         struct brw_stats           fed_brw_stats;
 };
 
+typedef struct nid_stat_uuid {
+        struct list_head ns_uuid_list;
+        struct obd_uuid  ns_uuid;
+} nid_stat_uuid_t;
+
 typedef struct nid_stat {
         lnet_nid_t               nid;
         struct hlist_node        nid_hash;
         struct list_head         nid_list;
+        struct list_head         nid_uuid_list;
         struct obd_device       *nid_obd;
         struct proc_dir_entry   *nid_proc;
         struct lprocfs_stats    *nid_stats;
+        struct lprocfs_stats    *nid_ldlm_stats;
         struct brw_stats        *nid_brw_stats;
         int                      nid_exp_ref_count;
 }nid_stat_t;
@@ -125,10 +127,10 @@ struct obd_export {
         struct obd_import        *exp_imp_reverse; /* to make RPCs backwards */
         struct nid_stat          *exp_nid_stats;
         struct lprocfs_stats     *exp_md_stats;
-        struct lprocfs_stats     *exp_ldlm_stats;
         struct ptlrpc_connection *exp_connection;
         __u32                     exp_conn_cnt;
-        struct ldlm_export_data   exp_ldlm_data;
+        lustre_hash_t            *exp_lock_hash; /* existing lock hash */
+        spinlock_t                exp_lock_hash_lock;
         struct list_head          exp_outstanding_replies;
         time_t                    exp_last_request_time;
         struct list_head          exp_req_replay_queue;
@@ -146,6 +148,7 @@ struct obd_export {
                                   exp_flvr_changed:1,
                                   exp_flvr_adapt:1,
                                   exp_libclient:1; /* liblustre client? */
+        struct list_head          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 */
@@ -175,6 +178,20 @@ static inline int exp_connect_lru_resize(struct obd_export *exp)
         return !!(exp->exp_connect_flags & OBD_CONNECT_LRU_RESIZE);
 }
 
+static inline int exp_connect_rmtclient(struct obd_export *exp)
+{
+        LASSERT(exp != NULL);
+        return !!(exp->exp_connect_flags & OBD_CONNECT_RMT_CLIENT);
+}
+
+static inline int client_is_remote(struct obd_export *exp)
+{
+        struct obd_import *imp = class_exp2cliimp(exp);
+
+        return !!(imp->imp_connect_data.ocd_connect_flags &
+                  OBD_CONNECT_RMT_CLIENT);
+}
+
 static inline int imp_connect_lru_resize(struct obd_import *imp)
 {
         struct obd_connect_data *ocd;