Whamcloud - gitweb
LU-5061 obd: add lnb_ prefix to members of struct niobuf_local
[fs/lustre-release.git] / lustre / ofd / ofd_internal.h
index b22ceec..caac45e 100644 (file)
 #include <dt_object.h>
 #include <md_object.h>
 #include <lustre_fid.h>
-#include <obd_ost.h>
 #include <lustre_capa.h>
 
 #define OFD_INIT_OBJID 0
-#define OFD_ROCOMPAT_SUPP (0)
-#define OFD_INCOMPAT_SUPP (OBD_INCOMPAT_GROUPS | OBD_INCOMPAT_OST | \
-                          OBD_INCOMPAT_COMMON_LR)
 #define OFD_PRECREATE_BATCH_DEFAULT (OBJ_SUBDIR_COUNT * 4)
 
 /* on small filesystems we should not precreate too many objects in
@@ -131,6 +127,8 @@ struct ofd_device {
        struct dt_object        *ofd_health_check_file;
 
        int                      ofd_subdir_count;
+       __u64                    ofd_inconsistency_self_detected;
+       __u64                    ofd_inconsistency_self_repaired;
 
        cfs_list_t              ofd_seq_list;
        rwlock_t                ofd_seq_list_lock;
@@ -183,13 +181,18 @@ struct ofd_device {
                                  * supporting OBD_CONNECT_GRANT_PARAM? */
                                 ofd_grant_compat_disable:1,
                                 /* Protected by ofd_lastid_rwsem. */
-                                ofd_lastid_rebuilding:1;
+                                ofd_lastid_rebuilding:1,
+                                ofd_record_fid_accessed:1,
+                                ofd_lfsck_verify_pfid: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 list_head         ofd_inconsistency_list;
+       spinlock_t               ofd_inconsistency_lock;
 };
 
 static inline struct ofd_device *ofd_dev(struct lu_device *d)
@@ -215,7 +218,9 @@ static inline char *ofd_name(struct ofd_device *ofd)
 struct ofd_object {
        struct lu_object_header ofo_header;
        struct dt_object        ofo_obj;
-       int                     ofo_ff_exists;
+       struct lu_fid           ofo_pfid;
+       unsigned int            ofo_pfid_checking:1,
+                               ofo_pfid_verified:1;
 };
 
 static inline struct ofd_object *ofd_obj(struct lu_object *o)
@@ -302,7 +307,10 @@ struct ofd_thread_info {
        struct lu_attr                   fti_attr;
        struct lu_attr                   fti_attr2;
        struct ldlm_res_id               fti_resid;
-       struct filter_fid                fti_mds_fid;
+       union {
+               struct filter_fid        fti_mds_fid;
+               struct filter_fid_old    fti_mds_fid_old;
+       };
        struct ost_id                    fti_ostid;
        struct ofd_object               *fti_obj;
        union {
@@ -319,6 +327,7 @@ struct ofd_thread_info {
        /* Space used by the I/O, used by grant code */
        unsigned long                    fti_used;
        struct ost_lvb                   fti_lvb;
+       struct lfsck_request             fti_lr;
 };
 
 extern void target_recovery_fini(struct obd_device *obd);
@@ -366,6 +375,10 @@ void ofd_seqs_fini(const struct lu_env *env, struct ofd_device *ofd);
 void ofd_seqs_free(const struct lu_env *env, struct ofd_device *ofd);
 
 /* ofd_io.c */
+int ofd_start_inconsistency_verification_thread(struct ofd_device *ofd);
+int ofd_stop_inconsistency_verification_thread(struct ofd_device *ofd);
+int ofd_verify_ff(const struct lu_env *env, struct ofd_object *fo,
+                 struct obdo *oa);
 int ofd_preprw(const struct lu_env *env,int cmd, struct obd_export *exp,
               struct obdo *oa, int objcount, struct obd_ioobj *obj,
               struct niobuf_remote *rnb, int *nr_local,
@@ -390,13 +403,9 @@ int ofd_txn_stop_cb(const struct lu_env *env, struct thandle *txn,
 
 /* lproc_ofd.c */
 #ifdef LPROCFS
-void lprocfs_ofd_init_vars(struct lprocfs_static_vars *lvars);
+extern struct lprocfs_seq_vars lprocfs_ofd_obd_vars[];
 void ofd_stats_counter_init(struct lprocfs_stats *stats);
 #else
-static void lprocfs_ofd_init_vars(struct lprocfs_static_vars *lvars)
-{
-       memset(lvars, 0, sizeof(*lvars));
-}
 static inline void ofd_stats_counter_init(struct lprocfs_stats *stats) {}
 #endif
 
@@ -404,11 +413,7 @@ static inline void ofd_stats_counter_init(struct lprocfs_stats *stats) {}
 struct ofd_object *ofd_object_find(const struct lu_env *env,
                                   struct ofd_device *ofd,
                                   const struct lu_fid *fid);
-struct ofd_object *ofd_object_find_or_create(const struct lu_env *env,
-                                            struct ofd_device *ofd,
-                                            const struct lu_fid *fid,
-                                            struct lu_attr *attr);
-int ofd_object_ff_check(const struct lu_env *env, struct ofd_object *fo);
+int ofd_object_ff_load(const struct lu_env *env, struct ofd_object *fo);
 int ofd_precreate_objects(const struct lu_env *env, struct ofd_device *ofd,
                          obd_id id, struct ofd_seq *oseq, int nr, int sync);
 
@@ -417,7 +422,7 @@ int ofd_attr_set(const struct lu_env *env, struct ofd_object *fo,
                 struct lu_attr *la, struct filter_fid *ff);
 int ofd_object_punch(const struct lu_env *env, struct ofd_object *fo,
                     __u64 start, __u64 end, struct lu_attr *la,
-                    struct filter_fid *ff);
+                    struct filter_fid *ff, struct obdo *oa);
 int ofd_object_destroy(const struct lu_env *, struct ofd_object *, int);
 int ofd_attr_get(const struct lu_env *env, struct ofd_object *fo,
                 struct lu_attr *la);
@@ -483,7 +488,7 @@ static inline int ofd_grant_prohibit(struct obd_export *exp,
 
 void ofd_grant_sanity_check(struct obd_device *obd, const char *func);
 long ofd_grant_connect(const struct lu_env *env, struct obd_export *exp,
-                      obd_size want, bool conservative);
+                      obd_size want, bool new_conn);
 void ofd_grant_discard(struct obd_export *exp);
 void ofd_grant_prepare_read(const struct lu_env *env, struct obd_export *exp,
                            struct obdo *oa);
@@ -615,8 +620,5 @@ static inline void ofd_prepare_fidea(struct filter_fid *ff,
 #define rnb_offset offset
 #define rnb_flags  flags
 #define rnb_len    len
-/* the same for niobuf_local */
-#define lnb_flags flags
-#define lnb_rc    rc
 
 #endif /* _OFD_INTERNAL_H */