Whamcloud - gitweb
LU-3336 lfsck: use rbtree to record OST-object accessing
[fs/lustre-release.git] / lustre / ofd / ofd_internal.h
index 9285a1f..ab041ce 100644 (file)
@@ -113,7 +113,7 @@ struct ofd_seq {
        struct ost_id           os_oi;
        spinlock_t              os_last_oid_lock;
        struct mutex            os_create_lock;
-       cfs_atomic_t            os_refc;
+       atomic_t                os_refc;
        struct dt_object        *os_lastid_obj;
        unsigned long           os_destroys_in_progress:1;
 };
@@ -181,10 +181,16 @@ struct ofd_device {
                                 ofd_syncjournal:1,
                                 /* shall we grant space to clients not
                                  * supporting OBD_CONNECT_GRANT_PARAM? */
-                                ofd_grant_compat_disable:1;
+                                ofd_grant_compat_disable:1,
+                                /* Protected by ofd_lastid_rwsem. */
+                                ofd_lastid_rebuilding:1,
+                                ofd_record_fid_accessed: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;
 };
 
 static inline struct ofd_device *ofd_dev(struct lu_device *d)
@@ -314,6 +320,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);
@@ -321,25 +328,26 @@ extern void target_recovery_init(struct lu_target *lut, svc_handler_t handler);
 
 /* ofd_capa.c */
 int ofd_update_capa_key(struct ofd_device *ofd, struct lustre_capa_key *key);
-int ofd_auth_capa(struct obd_export *exp, struct lu_fid *fid, obd_seq seq,
-                 struct lustre_capa *capa, __u64 opc);
+int ofd_auth_capa(struct obd_export *exp, const struct lu_fid *fid,
+                 obd_seq seq, struct lustre_capa *capa, __u64 opc);
 void ofd_free_capa_keys(struct ofd_device *ofd);
 
 /* ofd_dev.c */
 extern struct lu_context_key ofd_thread_key;
 int ofd_postrecov(const struct lu_env *env, struct ofd_device *ofd);
+int ofd_fiemap_get(const struct lu_env *env, struct ofd_device *ofd,
+                  struct lu_fid *fid, struct ll_user_fiemap *fiemap);
 
 /* ofd_obd.c */
 extern struct obd_ops ofd_obd_ops;
 int ofd_statfs_internal(const struct lu_env *env, struct ofd_device *ofd,
                        struct obd_statfs *osfs, __u64 max_age,
                        int *from_cache);
-int ofd_orphans_destroy(const struct lu_env *env, struct obd_export *exp,
-                       struct ofd_device *ofd, struct obdo *oa);
 int ofd_destroy_by_fid(const struct lu_env *env, struct ofd_device *ofd,
                       const struct lu_fid *fid, int orphan);
 int ofd_statfs(const struct lu_env *env,  struct obd_export *exp,
               struct obd_statfs *osfs, __u64 max_age, __u32 flags);
+int ofd_obd_disconnect(struct obd_export *exp);
 
 /* ofd_fs.c */
 obd_id ofd_seq_last_oid(struct ofd_seq *oseq);
@@ -357,6 +365,7 @@ int ofd_precreate_batch(struct ofd_device *ofd, int batch);
 struct ofd_seq *ofd_seq_load(const struct lu_env *env, struct ofd_device *ofd,
                             obd_seq seq);
 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_preprw(const struct lu_env *env,int cmd, struct obd_export *exp,
@@ -420,7 +429,7 @@ int ofd_attr_handle_ugid(const struct lu_env *env, struct ofd_object *fo,
 static inline
 struct ofd_object *ofd_object_find_exists(const struct lu_env *env,
                                          struct ofd_device *ofd,
-                                         struct lu_fid *fid)
+                                         const struct lu_fid *fid)
 {
        struct ofd_object *fo;
 
@@ -490,14 +499,14 @@ int ofd_grant_create(const struct lu_env *env, struct obd_export *exp, int *nr);
 int ofd_fmd_init(void);
 void ofd_fmd_exit(void);
 struct ofd_mod_data *ofd_fmd_find(struct obd_export *exp,
-                                 struct lu_fid *fid);
+                                 const struct lu_fid *fid);
 struct ofd_mod_data *ofd_fmd_get(struct obd_export *exp,
-                                struct lu_fid *fid);
+                                const struct lu_fid *fid);
 void ofd_fmd_put(struct obd_export *exp, struct ofd_mod_data *fmd);
 void ofd_fmd_expire(struct obd_export *exp);
 void ofd_fmd_cleanup(struct obd_export *exp);
 #ifdef DO_FMD_DROP
-void ofd_fmd_drop(struct obd_export *exp, struct lu_fid *fid);
+void ofd_fmd_drop(struct obd_export *exp, const struct lu_fid *fid);
 #else
 #define ofd_fmd_drop(exp, fid) do {} while (0)
 #endif