Whamcloud - gitweb
LU-12780 ofd: don't use ptlrpc_thread for consistency verification
[fs/lustre-release.git] / lustre / ofd / ofd_internal.h
index 9d06085..0282d66 100644 (file)
@@ -38,6 +38,7 @@
 #include <dt_object.h>
 #include <md_object.h>
 #include <lustre_fid.h>
+#include <range_lock.h>
 
 #define OFD_INIT_OBJID 0
 #define OFD_PRECREATE_BATCH_DEFAULT (OBJ_SUBDIR_COUNT * 4)
@@ -61,7 +62,9 @@
 
 /* request stats */
 enum {
-       LPROC_OFD_STATS_READ = 0,
+       LPROC_OFD_STATS_READ_BYTES = 0,
+       LPROC_OFD_STATS_WRITE_BYTES,
+       LPROC_OFD_STATS_READ,
        LPROC_OFD_STATS_WRITE,
        LPROC_OFD_STATS_GETATTR,
        LPROC_OFD_STATS_SETATTR,
@@ -133,9 +136,6 @@ struct ofd_device {
 
        /* preferred BRW size, decided by storage type and capability */
        __u32                    ofd_brw_size;
-       /* checksum types supported on this node */
-       enum cksum_types         ofd_cksum_types_supported;
-
        spinlock_t               ofd_flags_lock;
        unsigned long            ofd_raid_degraded:1,
                                 /* sync journal on writes */
@@ -145,16 +145,14 @@ struct ofd_device {
                                 ofd_record_fid_accessed:1,
                                 ofd_lfsck_verify_pfid:1,
                                 ofd_no_precreate:1,
-                                ofd_skip_lfsck:1,
-                                /* Whether to enforce T10PI checksum of RPC */
-                                ofd_checksum_t10pi_enforce:1;
+                                ofd_skip_lfsck:1;
        struct seq_server_site   ofd_seq_site;
        /* the limit of SOFT_SYNC RPCs that will trigger a soft sync */
        unsigned int             ofd_soft_sync_limit;
        /* Protect ::ofd_lastid_rebuilding */
        struct rw_semaphore      ofd_lastid_rwsem;
        __u64                    ofd_lastid_gen;
-       struct ptlrpc_thread     ofd_inconsistency_thread;
+       struct task_struct      *ofd_inconsistency_task;
        struct list_head         ofd_inconsistency_list;
        spinlock_t               ofd_inconsistency_lock;
        /* Backwards compatibility */
@@ -191,6 +189,7 @@ struct ofd_object {
        time64_t                ofo_atime_ondisk;
        unsigned int            ofo_pfid_checking:1,
                                ofo_pfid_verified:1;
+       struct range_lock_tree  ofo_write_tree;
 };
 
 static inline struct ofd_object *ofd_obj(struct lu_object *o)
@@ -289,6 +288,8 @@ struct ofd_thread_info {
                struct lfsck_req_local   fti_lrl;
                struct obd_connect_data  fti_ocd;
        };
+       struct range_lock                fti_write_range;
+       unsigned                         fti_range_locked:1;
 };
 
 extern void target_recovery_fini(struct obd_device *obd);
@@ -302,7 +303,7 @@ void ofd_access_log_module_exit(void);
 struct ofd_access_log;
 struct ofd_access_log *ofd_access_log_create(const char *ofd_name, size_t size);
 void ofd_access_log_delete(struct ofd_access_log *oal);
-void ofd_access(struct ofd_device *m,
+void ofd_access(const struct lu_env *env, struct ofd_device *m,
                const struct lu_fid *parent_fid, __u64 begin, __u64 end,
                unsigned int size, unsigned int segment_count, int rw);
 
@@ -368,9 +369,10 @@ int ofd_txn_stop_cb(const struct lu_env *env, struct thandle *txn,
 /* lproc_ofd.c */
 int ofd_tunables_init(struct ofd_device *ofd);
 #ifdef CONFIG_PROC_FS
-void ofd_stats_counter_init(struct lprocfs_stats *stats);
+void ofd_stats_counter_init(struct lprocfs_stats *stats, unsigned int offset);
 #else
-static inline void ofd_stats_counter_init(struct lprocfs_stats *stats) {}
+static inline void ofd_stats_counter_init(struct lprocfs_stats *stats,
+                                         unsigned int offset) {}
 #endif
 
 /* ofd_objects.c */