Whamcloud - gitweb
LU-4423 ptlrpc: use 64-bit times in ptlrpc_enc_page_pool
[fs/lustre-release.git] / lustre / include / lu_target.h
index 10b045b..c527b61 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * 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
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2015, Intel Corporation.
+ * Copyright (c) 2011, 2016, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -83,6 +79,8 @@ struct target_distribute_txn_data;
 typedef int (*distribute_txn_replay_handler_t)(struct lu_env *env,
                                       struct target_distribute_txn_data *tdtd,
                                       struct distribute_txn_replay_req *dtrq);
+typedef char *(*target_show_update_logs_retrievers_t)(void *data, int *size,
+                                                     int *count);
 struct target_distribute_txn_data {
        /* Distribution ID is used to identify updates log on different
         * MDTs for one operation */
@@ -113,6 +111,9 @@ struct target_distribute_txn_data {
        /* Manage the llog recovery threads */
        atomic_t                tdtd_recovery_threads_count;
        wait_queue_head_t       tdtd_recovery_threads_waitq;
+       target_show_update_logs_retrievers_t
+                               tdtd_show_update_logs_retrievers;
+       void                    *tdtd_show_retrievers_cbdata;
 };
 
 struct lu_target {
@@ -160,6 +161,10 @@ struct lu_target {
        unsigned long           **lut_reply_bitmap;
        /** target sync count, used for debug & test */
        atomic_t                 lut_sync_count;
+
+       /** cross MDT locks which should trigger Sync-on-Lock-Cancel */
+       spinlock_t               lut_slc_locks_guard;
+       struct list_head         lut_slc_locks;
 };
 
 /* number of slots in reply bitmap */
@@ -428,8 +433,9 @@ int tgt_hpreq_handler(struct ptlrpc_request *req);
 
 /* target/tgt_main.c */
 void tgt_boot_epoch_update(struct lu_target *lut);
-void tgt_save_slc_lock(struct ldlm_lock *lock, __u64 transno);
-void tgt_discard_slc_lock(struct ldlm_lock *lock);
+void tgt_save_slc_lock(struct lu_target *lut, struct ldlm_lock *lock,
+                      __u64 transno);
+void tgt_discard_slc_lock(struct lu_target *lut, struct ldlm_lock *lock);
 int tgt_last_commit_cb_add(struct thandle *th, struct lu_target *lut,
                           struct obd_export *exp, __u64 transno);
 int tgt_new_client_cb_add(struct thandle *th, struct obd_export *exp);