Whamcloud - gitweb
LU-16271 ptlrpc: fix eviction right after recovery
[fs/lustre-release.git] / lustre / include / lustre_scrub.h
index a4eb139..f7fb5bd 100644 (file)
@@ -262,8 +262,10 @@ struct lustre_scrub {
        /* Object for the scrub file. */
        struct dt_object       *os_obj;
 
-       struct ptlrpc_thread    os_thread;
+       struct task_struct     *os_task;
        struct list_head        os_inconsistent_items;
+       /* once inconsistent mapping can't be fixed, put into this list */
+       struct list_head        os_stale_items;
 
        /* write lock for scrub prep/update/post/checkpoint,
         * read lock for scrub dump. */
@@ -284,6 +286,9 @@ struct lustre_scrub {
        /* The time for next checkpoint, seconds */
        time64_t                os_time_next_checkpoint;
 
+       /* How long to wait to start scrubbing */
+       time64_t                os_auto_scrub_interval;
+
        /* How many objects have been checked since last checkpoint. */
        __u64                   os_new_checked;
        __u64                   os_pos_current;
@@ -300,7 +305,9 @@ struct lustre_scrub {
                                os_convert_igif:1,
                                os_partial_scan:1,
                                os_in_join:1,
-                               os_full_scrub:1;
+                               os_running:1,   /* scrub thread is running */
+                               os_full_scrub:1,
+                               os_has_ml_file:1;
 };
 
 #define INDEX_BACKUP_MAGIC_V1  0x1E41F208
@@ -343,7 +350,13 @@ void scrub_file_init(struct lustre_scrub *scrub, uuid_t uuid);
 void scrub_file_reset(struct lustre_scrub *scrub, uuid_t uuid, u64 flags);
 int scrub_file_load(const struct lu_env *env, struct lustre_scrub *scrub);
 int scrub_file_store(const struct lu_env *env, struct lustre_scrub *scrub);
+bool scrub_needs_check(struct lustre_scrub *scrub, const struct lu_fid *fid,
+                      u64 index);
 int scrub_checkpoint(const struct lu_env *env, struct lustre_scrub *scrub);
+int scrub_thread_prep(const struct lu_env *env, struct lustre_scrub *scrub,
+                     uuid_t uuid, u64 start);
+int scrub_thread_post(const struct lu_env *env, struct lustre_scrub *scrub,
+                     int result);
 int scrub_start(int (*threadfn)(void *data), struct lustre_scrub *scrub,
                void *data, __u32 flags);
 void scrub_stop(struct lustre_scrub *scrub);