Whamcloud - gitweb
LU-7782 scrub: handle slave obj of striped directory
[fs/lustre-release.git] / lustre / include / lu_target.h
index 5da2544..e8f09e7 100644 (file)
@@ -47,7 +47,7 @@
  * operation, and updates on each MDTs are linked to
  * dtr_sub_list */
 struct distribute_txn_replay_req {
-       /* update record */
+       /* update record, may be vmalloc'd */
        struct llog_update_record *dtrq_lur;
        int                     dtrq_lur_size;
 
@@ -83,6 +83,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 +115,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 {
@@ -131,7 +136,6 @@ struct lu_target {
        rwlock_t                 lut_sptlrpc_lock;
        struct sptlrpc_rule_set  lut_sptlrpc_rset;
        spinlock_t               lut_flags_lock;
-       int                      lut_sec_level;
        unsigned int             lut_syncjournal:1,
                                 lut_sync_lock_cancel:2,
                                 /* e.g. OST node */
@@ -159,6 +163,8 @@ struct lu_target {
        struct dt_object        *lut_reply_data;
        /** Bitmap of used slots in the reply data file */
        unsigned long           **lut_reply_bitmap;
+       /** target sync count, used for debug & test */
+       atomic_t                 lut_sync_count;
 };
 
 /* number of slots in reply bitmap */
@@ -402,7 +408,9 @@ void tgt_register_lfsck_in_notify(int (*notify)(const struct lu_env *,
                                                struct thandle *));
 void tgt_register_lfsck_query(int (*query)(const struct lu_env *,
                                           struct dt_device *,
-                                          struct lfsck_request *));
+                                          struct lfsck_request *,
+                                          struct lfsck_reply *,
+                                          struct lfsck_query *));
 bool req_can_reconstruct(struct ptlrpc_request *req, struct tg_reply_data *trd);
 
 extern struct tgt_handler tgt_sec_ctx_handlers[];
@@ -425,6 +433,8 @@ 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);
 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);
@@ -507,18 +517,6 @@ static inline int is_serious(int rc)
        return (rc < 0 && -rc & ESERIOUS);
 }
 
-/**
- * Do not return server-side uid/gid to remote client
- */
-static inline void tgt_drop_id(struct obd_export *exp, struct obdo *oa)
-{
-       if (unlikely(exp_connect_rmtclient(exp))) {
-               oa->o_uid = -1;
-               oa->o_gid = -1;
-               oa->o_valid &= ~(OBD_MD_FLUID | OBD_MD_FLGID);
-       }
-}
-
 /*
  * Unified target generic handers macros and generic functions.
  */